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从而实现电平的反转。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?