关于STM32 BSRR寄存器的问题

本文探讨了在STM32中使用BSRR寄存器进行GPIO操作的问题。作者首先解释了BSRR寄存器的只写特性以及其在字、半字或字节模式下的访问方式。接着,文章重点讨论了如何正确设置高16位和低16位来实现GPIO的置位和复位。作者通过实例展示了如何将八位数据分别写入不同GPIO口,并分享了从误解到理解BSRR寄存器的过程。最后,作者提供了代码示例,以实现八位数据在多个GPIO口的分配。
摘要由CSDN通过智能技术生成

用GPIO作为八位数据的并口,之前是连续的GPIO口,比如说GPIOE的高八位或者低八位作为数据的并口,我可以这么写GPIOE->BSRR = 0XFF000000 | (data<<8),这样就可以把八位数据一次性赋值给对应的I/O。

但是现在把硬件上的GPIO分开了,也就是说PE0对应data数据的第0位,PG15对应data数据的第一位等等。那么现在就不能直接一下把八位数据分别给GPIO,需要一位一位的处理,这就出现了BSRR的寄存器用法。

官方手册是这么说的:

位 31:16 BRy: 端口 x 复位位 y (Port x reset bit y) (y = 0..15)
这些位为只写形式,只能在字、半字或字节模式下访问。读取这些位可返回值 0x0000。
0:不会对相应的 ODRx 位执行任何操作
1:对相应的 ODRx 位进行复位
注意: 如果同时对 BSx 和 BRx 置位,则 BSx 的优先级更高


位 15:0 BSy: 端口 x 置位位 y (Port x set bit y) (y= 0..15)
这些位为只写形式,只能在字、半字或字节模式下访问。读取这些位可返回值 0x0000。
0:不会对相应的 ODRx 位执行任何操作
1:对相应的 ODRx 位进行置位
第一个问题:这些位为只写形式,只能在字、半字或字节模式下访问?

起初我是这么理解的,配置BSRR寄存器必须只能是字、半字或字节的形式

  • 8
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值