位帶簡介
位操作就是可以單獨的對一個比特位讀和寫,類似與51中sbit定義的變量,stm32中通過通路位帶别名區來實作位操作的功能
STM32中有兩個地方實作了位帶,一個是SRAM,一個是片上外設。

個人了解
(1)位帶本質上是一塊位址區(例如每一位位址位對應一個寄存器)映射到另一片位址區(實作每一位位址位對應一個寄存器中的一位),該區域就叫做位帶别名區,将每一位膨脹成一個32位的字。
(2)位帶區的4個位元組對應實際寄存器或記憶體區的一個位,雖然變大到4個位元組,但實際上隻有最低位有效(代表0或1)
映射過程
要設定0x2000 0000這個位元組的第二個位bit2為1,使用位帶操作的步驟有:
1、将1寫入位 帶别名區對應的映射位址(即0x22000008,因為1bit對應4個byte);
2、将0x2000 0000的值 讀取到内部的緩沖區(這一步驟是核心完成的,屬于原子操作,不需要使用者操作);
3、将bit2置1,再把值寫 回到0x2000 0000(屬于原子操作,不需要使用者操作)。
看一段代碼
其中A是我們想要操作的位所在的位元組位址(原位址),0x40000000是外設位帶區的起始位址,0x42000000時外設位帶别名區的起始位址。
一個位元組有8位,每一位膨脹後是4個位元組,是以84;
n(0<=n<=7)是位序号,是以*4;
對于位帶區,隻是了解,用的并不普遍。。。
Reference:
https://www.cnblogs.com/leo0621/p/9494290.html
野火教程