有两个LED灯D1,D2,分别对应的PIN是PB6,PB7,低电平时点亮LED灯
通用GPIO寄存器一共有以下几个寄存器
寄存器可以参考 参考手册,在这里不做详细讨论
1. 使能响应的GPIO时钟
2. 配置通用GPIO为推挽输出(因为默认低电平,所以此时LED灯会亮起来)
3. 输出低电平,熄灭LED灯
4. 再次通过程序点亮LED灯
代码比较简单,只有几行
/* 1.ENABLE GPIOB CLOCK */
RCC->APB2ENR|= RCC_APB2ENR_IOPBEN;
运行这个,可以在debug中看到GPIOB clock由disable变为enable
/* 2.CONFIG PB6 PB7 */
GPIOB->CRL|= GPIO_CRL_MODE6 | GPIO_CRL_MODE7;
此时发现PB6,PB7按照我们预期配置的那样变为输出模式
/* 3. PB6PB7 HIGH */
GPIOB->ODR|= GPIO_ODR_ODR6 | GPIO_ODR_ODR7;
此时可以看到ODR寄存器bit6,bit7被置1,此时LED灯熄灭
/* 4. PB6PB7 LOW */
GPIOB->ODR&= ~(GPIO_ODR_ODR6 | GPIO_ODR_ODR7);
执行到这的时候再次点亮LED灯
OK,通用GPIO就到这里了
另外:此处遗留一个问题,为什么运行到第四步的时候bit4也消失了呢?
->bit 4是Jlink的PIN脚,可能Jlink自己拉到低