05 位帶操作和volatile關鍵字

2022-08-11 14:24:11 字數 411 閱讀 7547

公式為:

#define 暫存器的位帶別名 = 0x42000000+(暫存器的位址-0x40000000)84+引腳編號4

例:#define peout(x) (uint32_t )(0x42000000+((uint32_t)&gpioe->odr-0x40000000)84+(x)4)

gpioe->odr獲取埠的引腳電平

適用場合:

1)多執行緒程式設計共享全域性變數的時候,該全域性變數要加上 e volatile 進行修飾,讓編譯器不要優化該變數。

2)裸機程式設計的時候,某函式與中斷服務函式共享全域性變數的時候,該全域性變數要加上 e volatile 進行修飾,讓編譯器不要優化該變數。

3)arm 定義暫存器的時候,暫存器是指向乙個位址,要加上 e volatile 進行修飾,讓編譯器不要優化該變數。

GPIO 位帶操作

gpio 位帶操作 本章參考資料 stm32f4xx 中文參考手冊 儲存器和匯流排構架章節 gpio 章節,cortex m4 核心程式設計手冊 2.2.5 bit banding。學習本章時,配套這些參考資料學習效果 會更佳。位操作就是可以單獨的對乙個位元位讀和寫,這個在 51 微控制器中非常常見...

stm32之位帶操作

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

韌體庫程式設計(3) 位帶操作

位線操作是把暫存器中的某個位單獨拿出來,放在位帶區,並且在位帶別名區重新膨脹為1個字,但只能對這個位進行操作。通過訪問位帶別名區來訪問某個單獨的位。位帶區的每乙個位都是通過對位帶別名區的位址來訪問。位帶區乙個位,對應位帶別名區乙個字 即4個位元組 在 cm3中,有兩個區中實現了位帶。其中乙個是 sr...