STM32 寄存器位操作

2019-07-14 23:33发布

STM32的寄存器是  32位的  然而 操作也只能是以 32位的形式操作,  小弟想 单独对某一位操做  应该怎么做呢  就像8位的单片机一样可以写作PTA_PTA1=1(表示A口pin1置1).  用结构体联合体的方式应该怎么做呢???  或者还有什么其他的办法。  谢谢各位。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
17条回答
唯有风情
2019-07-17 02:17
没错 用位绑定。 模板给你。供参考、使用。
#define GPIOA_ODR_A (GPIOA_BASE+0x0c)  //定义GPIOd的A端口寄存器 ODR和IDR
#define GPIOA_IDR_A (GPIOA_BASE+0x08)

#define BitBand(Addr,BitNum) *((volatile unsigned long *)(Addr&0xF0000000)+0x20000000+((Addr&0xfffff)<<5)+(BitNum<<2))  //绑定地址公式

#define PAout(n) BitBand(GPIOA_ODR_A,n)  //定义绑定第几个口
#define PAin(n)  BitBand(GPIOA_IDR_A,n)

//(volatile unsigned long *) 指针变量类型   

一周热门 更多>