STM32用寄存器实现电平翻转(一个按键控制LED灯的开关)
代码
GPIOx -> ODR ^= GPIO_Pin_x
@加载了32标准库
如果加载了32标准库要方便些,直接用标准库的宏定义。
GPIOx中的x可以为(A,B,C,D……)GPIO_Pin_x中的x可以为(1,2,3……)
@没有加载32标准库
通过32官方手册查找GPIOx和GPIO_Pin_x对应的寄存器地址
解释
@ODR寄存器
ODR寄存器对应端口位写0,则GPIO呈现低电平;写1,则GPIO呈现低电平。
@异或
^是异或,异或上1,1变0,0变1,异或上0不改变原来的数。
@GPIO_Pin_x
GPIO_Pin_x是在ODR寄存器中的对应位写1。
所以ODR^GPIO_Pin_x就是让对应端口位0变1,1变0从而实现电平的反转。