天天看點

STM32學習——位帶區的了解

位帶簡介

位操作就是可以單獨的對一個比特位讀和寫,類似與51中sbit定義的變量,stm32中通過通路位帶别名區來實作位操作的功能

STM32中有兩個地方實作了位帶,一個是SRAM,一個是片上外設。

STM32學習——位帶區的了解

個人了解

(1)位帶本質上是一塊位址區(例如每一位位址位對應一個寄存器)映射到另一片位址區(實作每一位位址位對應一個寄存器中的一位),該區域就叫做位帶别名區,将每一位膨脹成一個32位的字。

(2)位帶區的4個位元組對應實際寄存器或記憶體區的一個位,雖然變大到4個位元組,但實際上隻有最低位有效(代表0或1)

STM32學習——位帶區的了解

映射過程

要設定0x2000 0000這個位元組的第二個位bit2為1,使用位帶操作的步驟有:

1、将1寫入位 帶别名區對應的映射位址(即0x22000008,因為1bit對應4個byte);

2、将0x2000 0000的值 讀取到内部的緩沖區(這一步驟是核心完成的,屬于原子操作,不需要使用者操作);

3、将bit2置1,再把值寫 回到0x2000 0000(屬于原子操作,不需要使用者操作)。

STM32學習——位帶區的了解

看一段代碼

STM32學習——位帶區的了解

其中A是我們想要操作的位所在的位元組位址(原位址),0x40000000是外設位帶區的起始位址,0x42000000時外設位帶别名區的起始位址。

一個位元組有8位,每一位膨脹後是4個位元組,是以84;

n(0<=n<=7)是位序号,是以*4;

對于位帶區,隻是了解,用的并不普遍。。。

Reference:

https://www.cnblogs.com/leo0621/p/9494290.html

野火教程