從庫函式解析STM32位址對映

2021-09-27 04:47:20 字數 1202 閱讀 1426

stm32的儲存對映是靠基位址和位址偏移實現的。

32位的m3有4gb的定址空間,其中用於片上外設的有512mb,基位址為0x40000000。

m3各外設基位址,包括片上外設、片上靜態ram和flash。特別要注意的是所有外設都是掛載在匯流排上,有ahp、apb1、apb2匯流排。從各外設基位址定義就可以很清楚知道該外設是掛在哪個匯流排上。

以gpio為例,如何實現gpioa暫存器控制?

再來看看gpio暫存器結構體:

如想獲得gpioa_crh(埠配置高暫存器)的位址,只需要將抵位址偏移量0x04加上gpioa的基位址0x40010800就好了。這種通過暫存器位址直接配置暫存器各個位的方法很容易出錯,還好st公司為我們封裝了庫,庫其實就是將各個暫存器位址通過分解為基位址和偏移位址,用巨集來定義位址,從字面意義就可以知道該外設/暫存器位址了。用結構體來定義各個外設暫存器,使用c/c++強大的指標,只需要直接呼叫庫函式就可以實現相應的功能。

STM32 庫開發 位址對映

1.stm32有ahb,apb2,apb1匯流排。其中apb2外設位址空間是從0x40010000至0x40013fff位址。第乙個位址稱為基位址。gpio typedef gpiox gpiox gpioa gpiox crl 0xffffffff 3.配置gpio的暫存器要開啟外設時鐘!區別於5...

STM32儲存器位址對映

上圖是stm32的儲存器位址對映圖,位址範圍為 0x0000 0000 0xffff ffff 其中 區的位址是從0x0800 0000開始的,結束於0x0800 0000 晶元的flash的大小,ram的起始位址是0x2000 0000,結束於0x2000 0000 晶元的ram大小。支援位帶操作...

Stm32庫函式裡的斷言機制解析

assert param 在stm32的hal庫函式中的函式中隨處可見。那麼它的作用是什麼呢?首先看乙個它使用的地方 這裡的作用很明顯,是對函式輸入的引數進行檢查。那麼它檢查的機制是如何實現的呢?看下assert param 定義的地方,在定義了巨集 use full assert 的時候,asse...