stm32學習筆記之寄存器、地址空間映射

一、相關概念:

1、寄存器:中央處理器內的組成部分。寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數據和地址。

2、寄存器的地址:STM32給不同的寄存器分配了不同的地址

3、STM32的IO端口有八種模式:

1)、輸入浮空         5)、開漏輸出

2)、輸入上拉         6)、推輓輸出

3)、輸入下拉         7)、推輓複用

4)、模擬輸入         8)、開漏複用

每個IO口都有七個寄存器來控制:

CHL、CHR        :端口配置寄存器(32位)

IDR、ODR        :數據寄存器(32位)

BSRR                :置位/復位寄存器(32位)

BRR                  :復位寄存器(16位)

LCKR                :所存寄存器(32位)

其中,比較常用的IO端口寄存器爲CRL,CRH,IDR,ODR

4、線性地址到物理地址的映射:

邏輯地址(虛擬地址) --- 分段 -->  線性地址  --- 分頁 ---> 物理地址

線性地址(Linear Address)是邏輯地址到物理地址變換之間的中間層。在分段部件中邏輯地址是段中的偏移地址,然後加上基地址就是線性地址。
如果沒有啓用分頁機制,線性地址就是物理地址,分段式 x86 CPU 必須啓用的,不能關閉  (stm32沒有查到有分頁機置)

線性地址概念:https://baike.baidu.com/item/%E7%BA%BF%E6%80%A7%E5%9C%B0%E5%9D%80/9013682?fr=aladdin

5、GPIOA各個寄存器的實際地址

寄存器                偏移地址         實際地址=基地址+偏移地址 

GPIOA->CRL     0x00  0x40010800+0x00 
GPIOA->CRH;   0x04   0x40010800+0x04 

GPIOA->IDR;     0x08   0x40010800+0x08 

GPIOA->ODR    0x0c  0x40010800+0x0c 

GPIOA->BSRR   0x10   0x40010800+0x10 

GPIOA->BRR     0x14   0x40010800+0x14

GPIOA->LCKR   0x18   0x40010800+0x18

 

6、每個GPIO端口有:
兩個32位配置寄存器 GPIOx_CRL GPIOx_CRH
兩個32位數據寄存器 GPIOx_IDR GPIOx_ODR
一個32位置位/復位寄存器 GPIOx_BSRR
一個16位復位寄存器 GPIOx_BRR
一個32位鎖定寄存器 GPIOx_LCKR

7、stm32三大總線: AHB總線,APB1總線,APB2總線

不同的外設掛載在不同的總線上邊。比如GPIO,串口1,ADC以及部分定時器掛載在APB2總線上

8、Cortex-M3 與中密度stm32的存儲器映射對比

STM32F1的存儲器的映射

Cortex-M3的存儲器映射

 

9、邏輯地址、線性地址、物理地址:https://www.cnblogs.com/X-W-LIU/p/3455734.html

10、每一組GPIO端口有10組寄存器配置,有些IO口有16個引腳,32位就是每兩位控制一個引腳:https://ke.qq.com/webcourse/index.html#cid=279403&term_id=100330877&taid=1965359855059819&vid=n1423jlur6g

二、寄存器及寄存器映射

1、參考網址:

https://www.jianshu.com/p/684c5d9dfd7a  寄存器及寄存器映射

https://www.cnblogs.com/mrgsf/p/6868041.html   STM32 存儲器映射和寄存器映射

三、標準C運算符

參考網址:https://www.w3cschool.cn/c/c-operators.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章