GPIO 位帶操作

2022-05-14 12:57:14 字數 1116 閱讀 5838

gpio—位帶操作

本章參考資料:《 stm32f4xx 中文參考手冊》儲存器和匯流排構架章節、 gpio 章節,

《 cortex®-m4 核心程式設計手冊》 2.2.5 bit-banding。學習本章時,配套這些參考資料學習效果

會更佳。 

位操作就是可以單獨的對乙個位元位讀和寫,這個在 51 微控制器中非常常見。 51 單片

機中通過關鍵字 sbit 來實現位定義, f429 中沒有這樣的關鍵字,而是通過訪問位帶別名區

來實現。

在 f429 中,有兩個地方實現了位帶,乙個是 sram 區的最低 1mb 空間,另乙個是外

設區最低 1mb 空間。這兩個 1mb 的空間除了可以像正常的 ram 一樣操作外,他們還有

自己的位帶別名區,位帶別名區把這 1mb 的空間的每乙個位膨脹成乙個 32 位的字,當訪

問位帶別名區的這些字時,就可以達到訪問位帶區某個位元位的目的。 

n這個位號,代表你想操作的位,比如

gpioh_pin_10

,此時n=10

;在零死角中寫的

0<=n<=8

有錯誤。

為什麼是低五位有效?因為位帶區的位址偏移最大0xfffff(

0x400 00000----0x400 fffff

);相減最大就這麼多,這樣可以巧妙地把兩個公式化成乙個。

stm32怎麼知道什麼時候是位帶操作的呢?因為硬體位址決定了晶元的功能,當你根據晶元的硬體設計,在對應位址操作的時候,就可以達到晶元設定的效果。

位帶操作 GPIO輸出和輸入

gpioc odr 0 2 匯流排操作,即操作整個暫存器.在51微控制器中 p0 0xfe 匯流排操作.sbit led1 p0 0 位操作,即操作暫存器中的某一位.led1 0 在stm32中並沒有sbit這樣的關鍵字.但是我們可以用位帶操作實現位操作.位帶操作 在 stm32 中,有兩個地方實現...

F3不能用位帶操作GPIO之原由

最近用到stm32f303,在修改io的時候,覺得用庫操作太麻煩了,要自己乙個乙個修改,用巨集定義也不解決,自然就會想到用位帶操作。查m4的手冊知道m4也是支援位帶操作,f3系列也是屬於m4核心,而且在405也是用位帶操作,覺得f303也是一樣可以做位帶操作。直接先修改乙個io,除錯卻發現在,io電...

stm32之位帶操作

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