位带区操作
STM32F10x支持位带操作的两个内存区的范围是:
0x2000_0000-0x200F_FFFF(SRAM 区中的最低 1MB)
0x4000_0000-0x400F_FFFF(片上外设区中的最低 1MB)
例如操作GPIOB5->ODR寄存器(GPIOB_ODR寄存器的地址为0x4001080c,则A=0x4001080c)
位带区: 支持位带操作的地址区。
位带别名: 对别名地址的访问最终会变换成对位带区的访问。
AliasAddr= 0x42000000+((A-0x40000000)*8+n)*4 =0x42000000+ (A-0x40000000)*32 + n*4
所操作的位带别名区地址:
AliasAddr=*(volatile uint32_t)0x42000000+((0x4001080c-0x40000000)*8+5)*4
=*(volatile uint32_t)0x42000000+ (0x4001080c-0x40000000)*32 + 5*4
=*(volatile uint32_t)0x42218194
#define PB5 *(volatile uint32_t)0x42000000+((0x4001080c-0x40000000)*8

本文详细介绍了STM32微控制器中位带操作的概念及其应用。包括位带操作的地址计算方法、位带别名区地址的宏定义,以及使用位带操作的优点和潜在风险。还解释了如何通过volatile关键字确保数据的一致性和正确性。
最低0.47元/天 解锁文章
stm32位带操作&spm=1001.2101.3001.5002&articleId=127933175&d=1&t=3&u=808e7d27d4c340bfbc939f58c1c4486f)
917

被折叠的 条评论
为什么被折叠?



