在block2這塊區域,設計的是片上外設,它們以4個位元組為1個單元,共32位,每乙個單元對應不同的功能,當控制這些單元時,就可以驅動外設工作,可以找到每個單元的起始位址,然後通過c語言指標的操作方式來訪問這些單元。
根據每個單元功能的不同,以功能為名給這個記憶體單元取乙個別名,這個別名就是暫存器。給已經分配好位址的,有特定功能的記憶體單元取別名的過程就是暫存器的對映。 gpiob埠的輸出資料暫存器odr的位址是0x4001 0c0c,odr暫存器是32位,低16位有效,對應16個外部io,寫0/1對應的io輸出低/高電平
**如下:
//通過c語言指標的操作方式,讓gpiob的16個io都輸出高電平*(
unsigned
int*)(
0x4001
0c0c)
= oxffff;
0x4001 0c0c在我們看來是gpiob埠odr的位址,但在編譯器看來,只是乙個普通的變數,是乙個立即數,要想讓編譯器認為是指標,得進行強制型別轉換,轉換成指標(unsigned int*)(0x4001 0c0c),然後再對指標進行*操作
**如下:
//gpiob埠全部輸出高電平
#define
gpiob_odr*(
unsigned
int*
)(gpiob_base+
0x0c
)gpiob_odr =
0xff
;
暫存器位址對映
目錄 暫存器位址對映 暫存器位址對映關係 mdk5 中的位址關係以及查詢方法 gpiob的埠位址 埠位址如何對映到具體暫存器的位址?暫存器位址與埠位址的關係 apb2外圍裝置匯流排的位址 外圍裝置基位址 綜上所述 如上圖所示,進行了一次強制型別轉換,其實位址這個東西就是代表儲存的地點,任何型別對他來...
暫存器對映與直接操作暫存器
一 儲存器對映 與重對映 儲存器本身不具有位址資訊,它的位址是由晶元廠商或使用者分配,給 物理儲存器分配 邏輯位址的過程就稱為儲存器對映 通過這些邏輯位址就可以訪問到相應的儲存器的物理儲存單元。如果給儲存器再分配乙個位址就叫儲存器重對映。如stm32,對於 片上外設,它們以四個位元組為乙個單元,共3...
idr暫存器 嘿哈 暫存器對映
上一次我們已經實現了如何直接操作暫存器位址來點亮一盞led燈,但是這樣實在是太麻煩,那麼這次要講的就是,如何實現暫存器對映,更加快捷的實現點燈 怎麼又是點燈?我們先來看一下上一次的 圖中的這些位址都是看著官方給出的文件算出來的,這樣做的缺點很明顯,就是每一次都要算,算每乙個暫存器的位置,實際上我們可...