STM32如何操作單個位

2021-10-24 09:11:56 字數 741 閱讀 7071

stm32無sbit關鍵字,不能單個位操作,一般有兩種方式:

1、讀改寫。2、位段操作。

第一種方法,先從暫存器中讀出原來的值,對相應的位修改,再寫入暫存器。unsigned int tmp =; tmp &= ;暫存器 = tmp; 缺點:不是原子操作,步驟比較多,3步。原子操作:不會被執行緒排程機制打斷的操作,一旦開始,就一直執行到結束。

第二種方法,位段操作。

目的:對儲存空間變相的實現位操作。

片區域能夠實現位段操作。(只有標記了bb才可以)0x2000 0000--0x200f ffff:sram區範圍1mb。0x4000 0000--0x400f ffff:apb1、apb2、ahb1。所有外設的暫存器組,範圍也是1mb。

原理:將「位段區」的單個bit膨脹(對映)為別名區的乙個32位的字,通過向別名區的字整體寫1和0,實現對單個bit的寫1和0。

位:指實際操作的那個bit,段:指對映後的·那個「字」。乙個位操作最終變成了乙個字段操作,所以被稱為位段操作。

如何操作別名區的膨脹後的字呢。

通過位址,別名區有範圍,必須對映到指定位址範圍的別名區,不然不能進行位段操作。

sram區:0x2200 0000--0x23ff ffff。

計算膨脹字的位址。

bit_word_addr = bit_band_base + byte_offset*32 + bit_number*4

bit_number:位偏移=位號。

stm32如何執行軟復位 STM32啟動檔案

我們日常使用的嵌入式應用程式開發中都是編寫c c 語言,我們平時編輯乙個工程的話,只用從main函式開始編輯,微控制器程式也是從這個函式開始進行執行的。但是微控制器上電後是如何尋找到並執行main函式的呢?我們其實都會在心裡有乙個答案 啟動檔案 還記得我們當初配置第乙個stm32工程的時候在工程中新...

stm32的位操作

位繫結的區域 sram區 0x2000 0000 0x200f ffff 1mstm32的位帶操作簡單的說就是把乙個位址a的8個位,分別單獨的重新定義8個位址,操作乙個位址等同於操作乙個位,形象的理解即為取別名。sram 0x22000000 a 0x20000000 8 n 4 這裡的8表示8個位...

stm32之位帶操作

stm32相對於8位微控制cpu來說實在強大的不得了,依稀記得51控制i o空的時候是 sbit led1 p0 0 然而我們在32卻沒有想 sbit 類似的關鍵字進行i o的某位進行操作。於是引入了 位帶操作的概念 什麼事位帶操作?標準的定義是 通過訪問位帶別名區來實現,即通過將每個位元位膨脹成乙...