stm32中的位带

总结stm32中的位带

为什么存在位带

我们知道在stm32中无法直接控制寄存器中的一个单独的bit,所以我们使用& ^ ~这类的位操作来对1byte操作,以防止改变不需要改变的位。

为了解决stm32中的无法直接控制某一个bit的文件,arm公司使用位带来提供相关服务

位带的形成

通过映射的方式,将1bit膨胀到32bit。4字节对应的就是那1Bit位的地址,而这个地址中的数据只有最低一位才有效(LSB)。为什么膨胀到4字节后只有最低位有效?这是因为stm32是32位的,4字节是最高效的。

位带的映射关系

映射的范围:只有SRAM块和片上外设块的最低的1mb内存被映射到了32mb的地址中

STM32的全部寄存器都可以通过访问位带别名区的方式来达到访问原始寄存器比特位的效果,这比51单片机强大很多。

转换公式

1
#define BITBAND(addr, bitnum) ((addr & 0xF0000000)+0x02000000+((addr & 0x00FFFFFF)<<5)+(bitnum<<2))

应用场景

位带操作的应用场景,通常在于对IO口进行输入输出读取和控制。

这就和51单片机中直接的端口赋值是一样的。

比如

P0.0 = 0;

P0.0 = 1;

直接就是对端口P0.0输出0和1。

位带的优点

参考资料

http://news.eeworld.com.cn/mcu/ic549482.html?ipcity__1865=n4Uxu7DtDQD%3DitG7zD%2FFnYO6I%3DG%3DeziK4D&alichlgref=http%3A%2F%2Fnews.eeworld.com.cn%2Fmcu%2Fic549482.html


stm32中的位带
https://ysc2.github.io/ysc2.github.io/2023/11/17/stm32中的位带/
作者
Ysc
发布于
2023年11月17日
许可协议