STM32带位操作或带段操作

1.0   因为51有位操作,P0.1 = 0, 所以STM32也引入位操作,对位操作用起来比较简单。

1. 位段(位带)

   Cortex™-M4F 存储器映射包括两个位段区域:

   存储器的位段别名区域 和 存储器的位段区域

   位段别名区域的每一个字(4个字节)对应位段区域的一个位。

   从 位段区域地址 到 位段别名区域地址 的转换公式:

   bit_word_addr = bit_band_base + (byte_offset x 32) + (bit_number × 4)

   bit_word_addr:位段别名区域地址

   bit_band_base:位段别名区域基地址

   byte_offset:位段区域偏移地址

为什么要    x 32     × 4 :因为每四个地址代表一位,   每个寄存器有32位 

   SRAM 内存位段区域:

   位段区域范围:0x20000000-0x200FFFFF
   别名区域范围:0x22000000-0x23FFFFFF

   使用别名区域对位段区域写操作,实际上执行了 读-修改-写 操作。
   只映射数据,不映射指令


   外设 内存位段区域:

   位段区域范围:0x40000000-0x400FFFFF
   别名区域范围:0x42000000-0x43FFFFFF

   
   注意:别名区域的字只有第 0 位才会影响位段区域的位的值,而高 31 位是没有影响的。


   位段可以直观地对某一个位进行赋值和读取操作,如:

   LED1 = 1;
   LED1 = ~LED1;

 

你可能感兴趣的:(硬件,stm32f407)