对于STM32 GPIO端口的复位寄存器(GPIOx_BRR)和置位/复位寄存器(GPIOx_BSRR)的疑问???
我知道GPIO_SetBits()函数能把GPIOx的某一引脚置为高电平,GPIO_ResetBits()函数能把GPIOx的某一引脚置为高电平,也知道是通过操作置位/复...
我知道GPIO_SetBits()函数能把GPIOx的某一引脚置为高电平,GPIO_ResetBits()函数能把GPIOx的某一引脚置为高电平,也知道是通过操作置位/复位寄存器(GPIOx_BSRR)和复位寄存器(GPIOx_BRR)来实现的。
但是为什么对这两个寄存器赋值就能使引脚的电平变化呢?《STM32中文参考手册_V10》我也看了,还是不明白这两个寄存器是怎么控制IO口的啊。。。
其实学51的时候(看的郭天祥的书)我就不太明白这些寄存器。reg51.h 中用类似“sfr P0 =0x80;”的语句把名字和寄存器联系起来,然后我们往地址为 0x80 的寄存器设值的方法是:P0=0x00; ,这样P0寄存器的值就是我们给的0x00值了,然后呢?然后P0口就自动全为低电平了??????
求大神赐教~
这是我在看《开发指南-库函数版本_V1.3》时碰到的疑问,以前学51时没在意过寄存器,现在发现问题了。。。 展开
但是为什么对这两个寄存器赋值就能使引脚的电平变化呢?《STM32中文参考手册_V10》我也看了,还是不明白这两个寄存器是怎么控制IO口的啊。。。
其实学51的时候(看的郭天祥的书)我就不太明白这些寄存器。reg51.h 中用类似“sfr P0 =0x80;”的语句把名字和寄存器联系起来,然后我们往地址为 0x80 的寄存器设值的方法是:P0=0x00; ,这样P0寄存器的值就是我们给的0x00值了,然后呢?然后P0口就自动全为低电平了??????
求大神赐教~
这是我在看《开发指南-库函数版本_V1.3》时碰到的疑问,以前学51时没在意过寄存器,现在发现问题了。。。 展开
2个回答
2015-04-26
展开全部
这样可以用一条指令让某个端口的一位或多位直接置0或1而无需知道它原来的值。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-04-26
展开全部
说了半天!你的疑问是什么?
更多追问追答
追问
为什么对(GPIOx_BSRR)和(GPIOx_BRR)这两个寄存器赋值就能使IO口输出1和0?
追答
回复 陡变吧FTC :因为BSRR低16位功能和BRR低16位功能是一样的,数据手册写的有!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询