如何使用STM32对端口进行操作?
STM32对外设端口的操作,是通过对相关寄存器的位操作来控制的。
STM32将寄存器的位都映射到位带区 bit_band region ,这样对位带区进行位操作时,
就会映射到相应寄存器的位,从而实现对端口的操作。
STM32有二个位带区 bit_band region :一是内存 SRAM区,在 0x2000 0000~0x200f ffff
范围( 1M空间);二是片上外设区,在 0x4000 0000~0x400f ffff 范围( 1M空间)。
由于不能直接对一个位进行操作,为了实现对寄存器进行快速的位操作, Cortex M3 设
了二个 32M的别名区 Alias region ,它们分别被映射到二个 1M的位带区 bit_band region 。
位带区的每一个位 1 bit 都与别名区的一个字 32 bit 相对应(由 4 个字节组成) 。
这样対别名区进行的字操作, 都会映射到位带区的相应的位上, 从而实现对位带区的一
个位进行快速操作。而且 STM32是 32 位的 CPU,对 32 位的操作速度是最快的。
STM32的一个地址单元对应 8 个 bit 位(一个字节) 。因此,位带区的一个 bit 位,需
要占用别名区的四个地址单元。
如位带区 0x2000 0000 的第 0 位对应别名区地址 0x2200 0000~0x2200 0003,第 2 位对
应别名区地址 0x2200 0004~0x2200 0007 。
别名区的字与位带区的位相关联, 而且只是字的最后一位与位相关联。 也可理解为, 位
带区位的状态只与别名区存储的字的奇偶相关,奇数为 1,偶数为 0。
2023-06-12 广告