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怎么知道什么時候是位帶操作的呢?因為硬件地址決定了芯片的功能,當你根據芯片的硬件設計,在對應地址操作的時候,就可以達到芯片設定的效果。