国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射)

這篇具有很好參考價(jià)值的文章主要介紹了【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、STM32系統(tǒng)框架

  • 1.1、Cortex M內(nèi)核 & 芯片
  • 1.2、F1系統(tǒng)架構(gòu)
  • 1.3、F4系統(tǒng)架構(gòu)
  • 1.4、F7系統(tǒng)架構(gòu)
  • 1.5、H7系統(tǒng)架構(gòu)

二、STM32的尋址范圍?
三、存儲(chǔ)器映射

  • 存儲(chǔ)器功能劃分(F1為例)
  • STM32F1存儲(chǔ)器映射圖

四、寄存器映射

  • 寄存器基礎(chǔ)知識(shí)
  • STM32寄存器分類
  • 寄存器映射(F1為例)
  • 寄存器描述解讀
  • 寄存器映射舉例
  • 寄存器地址計(jì)算
  • GPIOA_ODR寄存器地址計(jì)算過程:
  • 使用結(jié)構(gòu)體,可以很方便的完成對(duì)寄存器的映射:
  • stm32f103xe.h主要組成部分

五、總結(jié)

一、STM32系統(tǒng)框架

1.1、Cortex M內(nèi)核 & 芯片

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射

1.2、F1系統(tǒng)架構(gòu)

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
ARM Cortex-M3 內(nèi)核的總線結(jié)構(gòu)以及相關(guān)概念。以下是對(duì)其中一些術(shù)語(yǔ)的簡(jiǎn)要解釋:

總線矩陣(Bus Matrix):

總線矩陣是用于連接主動(dòng)單元(主要是處理器內(nèi)核)和被動(dòng)單元(外設(shè))的關(guān)鍵組件。它負(fù)責(zé)協(xié)調(diào)和管理數(shù)據(jù)和指令的傳輸,確保有效地連接不同的單元。在 ARM Cortex-M3 內(nèi)核中,總線矩陣是連接 DCode 總線和 System 總線的關(guān)鍵組成部分。

主動(dòng)單元:

  1. Cortex-M3 內(nèi)核:
    Cortex-M3 內(nèi)核是主動(dòng)單元的核心。它通過 DCode 總線直接連接到 Flash 存儲(chǔ)器,以便高效地獲取指令。同時(shí),連接到 System 總線以與外設(shè)進(jìn)行通信。

被動(dòng)單元:

  1. AHB 到 APB 橋:
    AHB 到 APB 橋是被動(dòng)單元的一部分,它連接著所有的 APB 外設(shè)。這個(gè)橋是主動(dòng)單元和被動(dòng)單元之間的橋梁,允許數(shù)據(jù)在高性能總線(AHB)和外圍總線(APB)之間傳輸。

  2. 外設(shè):
    外設(shè)是連接到被動(dòng)單元的各種設(shè)備,如傳感器、通信模塊等。它們通過 APB 連接到主動(dòng)單元,與 Cortex-M3 內(nèi)核進(jìn)行通信。

時(shí)鐘頻率:

各個(gè)單元的工作時(shí)鐘頻率是至關(guān)重要的。在 ARM Cortex-M3 內(nèi)核中:

  • AHB 時(shí)鐘頻率: 最大為 72MHz。
  • APB1 時(shí)鐘頻率: 最大為 36MHz。
  • APB2 時(shí)鐘頻率: 最大為 72MHz。

這些頻率指定了各個(gè)總線的最大工作速度,影響著整個(gè)系統(tǒng)的性能。

這樣,通過總線矩陣的管理,主動(dòng)單元和被動(dòng)單元之間實(shí)現(xiàn)了高效的數(shù)據(jù)和指令傳輸,形成了 ARM Cortex-M3 內(nèi)核的總線架構(gòu)。

  1. Cortex-M3 內(nèi)核:
    ARM Cortex-M3 是 ARM 公司推出的低功耗、高性能的 32 位 RISC 處理器內(nèi)核。它通常用于嵌入式系統(tǒng),具有較小的體積和功耗。

  2. DCode 總線(D-Bus):
    DCode 總線是用于連接 Cortex-M3 內(nèi)核和 Flash 存儲(chǔ)器的總線,用于傳輸數(shù)據(jù)。

  3. System 總線(S-Bus):
    System 總線用于連接 Cortex-M3 內(nèi)核與外設(shè)和其他系統(tǒng)組件之間的通信。它負(fù)責(zé)處理系統(tǒng)中的數(shù)據(jù)和指令傳輸。

  4. ICode 總線:
    ICode 總線直接連接 Flash 存儲(chǔ)器接口,用于指令傳輸。它不需要經(jīng)過總線矩陣,以提高指令讀取的效率。

  5. DMA(直接內(nèi)存訪問):
    DMA 是一種數(shù)據(jù)傳輸機(jī)制,允許外設(shè)和內(nèi)存之間的直接數(shù)據(jù)傳輸,而無需 CPU 的干預(yù)。這有助于提高系統(tǒng)性能。

  6. AHB(高級(jí)高性能總線):
    AHB 是 Cortex-M3 內(nèi)核連接到系統(tǒng)中高性能設(shè)備的總線。它是一種高級(jí)別總線,用于連接高性能的模塊。

  7. APB(高級(jí)外圍總線):
    APB 是 Cortex-M3 內(nèi)核連接到外設(shè)的總線。它是一種低功耗、低速率的總線,適用于連接外圍設(shè)備。

  8. 總線時(shí)鐘頻率:
    描述了各個(gè)總線的最大時(shí)鐘頻率。AHB 的最大時(shí)鐘頻率為 72MHz,APB1 的最大時(shí)鐘頻率為 36MHz,APB2 的最大時(shí)鐘頻率為 72MHz。這些頻率是系統(tǒng)中各個(gè)總線的最大工作頻率。

總體而言,這些概念構(gòu)成了 ARM Cortex-M3 內(nèi)核及其周邊組件的總線架構(gòu),提供了靈活而高效的數(shù)據(jù)和指令傳輸機(jī)制。
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
參考:STM32F10xxx參考手冊(cè)_V10(中文版).pdf 2.1小節(jié)
路徑:戰(zhàn)艦 V4\資料\8,STM32參考資料\2,芯片資料\STM32F10xxx參考手冊(cè)_V10(中文版).pdf
???戰(zhàn)艦 V4\資料\7,硬件資料\STM32F103ZET6(中文版).pdf

STM32F103xC、STM32F103xD和STM32F103xE增強(qiáng)型模塊框圖
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射

  1. 工作溫度:-40°C至+85°C(尾綴為6,見表71),或-40°C至+105°C(尾綴為7,見表71),結(jié)溫分別達(dá)105°C或125°C。
  2. AF:可作為外設(shè)功能腳的I/O端口

1.3、F4系統(tǒng)架構(gòu)

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射

F4 系統(tǒng)架構(gòu):

F4 系列的系統(tǒng)架構(gòu)包括主控總線和被控總線,這些總線連接了各種核心和外設(shè),為處理器提供了高效的數(shù)據(jù)和指令傳輸通道。

主控總線:
  1. Cortex M4 內(nèi)核 I 總線:
    連接 Cortex-M4 內(nèi)核的指令總線,負(fù)責(zé)指令的讀取。

  2. Cortex M4 內(nèi)核 D 總線:
    連接 Cortex-M4 內(nèi)核的數(shù)據(jù)總線,負(fù)責(zé)數(shù)據(jù)的讀寫。

  3. Cortex M4 內(nèi)核 S 總線:
    連接 Cortex-M4 內(nèi)核的系統(tǒng)總線,用于核心和外設(shè)之間的通信。

  4. DMA1 存儲(chǔ)器總線:
    連接 DMA1 控制器和存儲(chǔ)器,用于實(shí)現(xiàn) DMA 操作。

  5. DMA2 存儲(chǔ)器總線:
    連接 DMA2 控制器和存儲(chǔ)器,支持存儲(chǔ)器訪問的 DMA 操作。

  6. DMA2 外設(shè)總線:
    連接 DMA2 控制器和外設(shè),用于外設(shè)之間的數(shù)據(jù)傳輸。

  7. 以太網(wǎng) DMA 總線:
    專門用于連接以太網(wǎng)控制器的 DMA 總線。

  8. USB OTG HS DMA 總線:
    專用于連接 USB OTG 控制器的 DMA 總線。

被控總線:
  1. 內(nèi)部 FLASH Icode 總線:
    用于連接內(nèi)部 Flash 存儲(chǔ)器的指令總線。

  2. 內(nèi)部 FLASH Dcode 總線:
    用于連接內(nèi)部 Flash 存儲(chǔ)器的數(shù)據(jù)總線。

  3. 主要內(nèi)部 SRAM1(112KB):
    連接主要的內(nèi)部 SRAM 區(qū)域,用于存儲(chǔ)數(shù)據(jù)。

  4. 輔助內(nèi)部 SRAM2(16KB):
    連接輔助的內(nèi)部 SRAM 區(qū)域,提供額外的存儲(chǔ)空間。

  5. 輔助內(nèi)部 SRAM3(64KB):
    適用于某些型號(hào)(如 F42xxx 和 F43xxx),提供額外的內(nèi)部 SRAM。

  6. AHB1 外設(shè)(包括 AHB-APB 總線橋和 APB 外設(shè)):
    連接 AHB1 外設(shè)總線,包括連接到 AHB-APB 總線橋的外設(shè)和直接連接到 AHB1 的外設(shè)。

  7. AHB2 外設(shè):
    連接 AHB2 外設(shè)總線,用于連接直接連接到 AHB2 的外設(shè)。

CCM RAM:

CCM RAM 是 Core-Coupled Memory RAM,專用于存儲(chǔ)數(shù)據(jù),具有快速的訪問速度,但不支持 DMA 操作。

總線時(shí)鐘頻率:F407/F429
  • AHB1/2 時(shí)鐘頻率: 最大為 168/180MHz。
  • APB1 時(shí)鐘頻率: 最大為 42/45MHz。
  • APB2 時(shí)鐘頻率: 最大為 84/90MHz。

這些頻率限制了各個(gè)總線和外設(shè)的工作速度,影響著系統(tǒng)的性能??傮w而言,F(xiàn)4 系列的系統(tǒng)架構(gòu)提供了高度靈活性和性能,適用于不同應(yīng)用場(chǎng)景的需求。
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
摘自:STM32F4xx參考手冊(cè)_V4(中文版).pdf 2.1小節(jié)
路徑:F429、F767\資料 A盤\8,STM32參考資料\STM32F4xx中文參考手冊(cè).pdf

1.4、F7系統(tǒng)架構(gòu)

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
摘自:STM32F7xx參考手冊(cè)_V2(中文版).pdf 2.1小節(jié)
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射

F7 系統(tǒng)架構(gòu):

F7 系列的系統(tǒng)架構(gòu)包括主系統(tǒng)架構(gòu)和多重 AHB 總線矩陣,為 Cortex-M7 處理器提供高效的數(shù)據(jù)和指令傳輸通道。

主系統(tǒng)架構(gòu):
  1. AXI 轉(zhuǎn) AHB 總線橋:

    • 連接到內(nèi)嵌 Flash 的 AXI 轉(zhuǎn) 64 位 AHB 總線橋。
    • 連接到 AHB 總線矩陣的 3 個(gè) AXI 轉(zhuǎn) 32 位 AHB 總線橋。
  2. AHB 總線矩陣:

    • 包含 12 個(gè)總線主控制器和 8 個(gè)總線從控制器。
    • 連接各種核心、外設(shè)以及多重 AHB 總線矩陣。
  3. 多重 AHB 總線矩陣:

    • 12 個(gè)總線主控制器和 8 個(gè)總線從控制器。
    • 包括 3 個(gè) 32 位 AHB 總線、連接到內(nèi)嵌 Flash 的 64 位 AHB 總線、AHBP 總線、以及各種 DMA 控制器和外設(shè)。
總線主控制器:
  1. 3x32 位 AHB 總線:

    • 連接到不同外設(shè)和 DMA 控制器的獨(dú)立 32 位 AHB 總線。
  2. 連接到內(nèi)嵌 Flash 的 64 位 AHB 總線:

    • 用于高效連接到內(nèi)部 Flash 存儲(chǔ)器。
  3. AHBP 總線:

    • 與 AHBP 接口相關(guān)的總線,可能用于特定的 DMA 操作。
  4. DMA1 存儲(chǔ)器總線:

    • 連接 DMA1 控制器和存儲(chǔ)器,支持存儲(chǔ)器訪問的 DMA 操作。
  5. DMA2 存儲(chǔ)器總線:

    • 連接 DMA2 控制器和存儲(chǔ)器,用于 DMA 操作。
  6. DMA2 外設(shè)總線:

    • 連接 DMA2 控制器和外設(shè),用于外設(shè)之間的數(shù)據(jù)傳輸。
  7. 以太網(wǎng) DMA 總線:

    • 專用于連接以太網(wǎng)控制器的 DMA 總線。
  8. USB OTG HS DMA 總線:

    • 專用于連接 USB OTG 控制器的 DMA 總線。
  9. LCD 控制器 DMA 總線:

    • 連接到 LCD 控制器的 DMA 總線。
  10. DMA2D 存儲(chǔ)器總線:

    • 連接 DMA2D 控制器和存儲(chǔ)器,支持高級(jí) 2D 圖形加速。
總線從控制器:
  1. AHB 總線上的內(nèi)嵌 Flash:

    • 用于連接到 Cortex-M7 處理器的內(nèi)嵌 Flash 存儲(chǔ)器。
  2. Cortex M7 AHBS 從接口:

    • 僅用于 DTCM RAM 的 DMA 數(shù)據(jù)傳輸。
  3. 主 SRAM1(240KB):

    • 連接到主要的內(nèi)部 SRAM 區(qū)域,用于存儲(chǔ)數(shù)據(jù)。
  4. 輔助 SRAM2(16KB):

    • 連接到輔助的內(nèi)部 SRAM 區(qū)域,提供額外的存儲(chǔ)空間。
  5. AHB1 外設(shè)(包括 AHB-APB 總線橋和 APB 外設(shè)):

    • 連接到 AHB1 外設(shè)總線,包括連接到 AHB-APB 總線橋的外設(shè)和直接連接到 AHB1 的外設(shè)。
  6. AHB2 外設(shè):

    • 連接到 AHB2 外設(shè)總線,用于連接直接連接到 AHB2 的外設(shè)。
  7. FMC(外部存儲(chǔ)器接口):

    • 連接到外部存儲(chǔ)器接口,支持連接外部存儲(chǔ)設(shè)備。
  8. Quad SPI(四通道串行外圍設(shè)備接口):

    • 連接到 Quad SPI 外設(shè)總線,支持四通道 SPI 通信。
DTCM RAM 和 ITCM RAM:
  • DTCM RAM:

    • 可以存放數(shù)據(jù),也可以存放指令。
    • 用于存儲(chǔ)數(shù)據(jù),支持 DMA 操作。
  • ITCM RAM:

    • 用于存儲(chǔ)指令,支持 CPU 時(shí)鐘速度訪問,無等待周期。
總線時(shí)鐘頻率:
  • AHB1/2 時(shí)鐘頻率: 最大為 216MHz。
  • APB1 時(shí)鐘頻率: 最大為 54MHz。
  • APB2 時(shí)鐘頻率: 最大為 108MHz。

F7 系列的系統(tǒng)架構(gòu)提供了強(qiáng)大的數(shù)據(jù)通路和豐富的外設(shè)支持,適用于高性能應(yīng)用。
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射

1.5、H7系統(tǒng)架構(gòu)

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
摘自:STM32H7xx參考手冊(cè)_V3(中文版).pdf 2.1小節(jié)

H7 系統(tǒng)架構(gòu):

H7 系列的系統(tǒng)架構(gòu)包括主系統(tǒng)架構(gòu)、AXI 總線矩陣、兩個(gè) AHB 總線矩陣(D2 域和 D3 域)、總線橋以及域間總線。

主系統(tǒng)架構(gòu):
  • AXI 總線矩陣:

    • 提供高性能的 AXI 總線連接,用于連接主要外設(shè)和總線主控制器。
  • AHB 總線矩陣(D2 域和 D3 域):

    • 包括兩個(gè)獨(dú)立的 AHB 總線矩陣,分別是 D2 域和 D3 域,用于連接不同的外設(shè)和 DMA 控制器。
  • 總線橋:

    • 提供連接 AXI 總線和 AHB 總線之間的橋梁,用于實(shí)現(xiàn)不同總線之間的數(shù)據(jù)傳輸。
  • 域間總線:

    • 提供不同域之間的通信橋梁,用于在不同域之間傳輸數(shù)據(jù)。
總線主設(shè)備:
  1. AHB 總線主設(shè)備:

    • 用于連接到 AHB 總線的主設(shè)備,包括連接到 D2 和 D3 域的外設(shè)和 DMA 控制器。
  2. AXI 總線主設(shè)備:

    • 用于連接到 AXI 總線的主設(shè)備,包括連接到主 AXI 總線矩陣的外設(shè)和 DMA 控制器。
總線從設(shè)備:
  1. AHB 總線從設(shè)備:

    • 連接到 AHB 總線的從設(shè)備,包括連接到 D2 和 D3 域的外設(shè)和 DMA 控制器。
  2. AXI 總線從設(shè)備:

    • 連接到 AXI 總線的從設(shè)備,包括連接到主 AXI 總線矩陣的外設(shè)和 DMA 控制器。
ITCM 和 DTCM:
  • ITCM(指令 Tightly-Coupled Memory):

    • 用于存放程序指令,支持 CPU 以時(shí)鐘速度訪問。
  • DTCM(數(shù)據(jù) Tightly-Coupled Memory):

    • 用于存放數(shù)據(jù),支持 DMA 操作。
總線時(shí)鐘頻率:
  • AHB1/2/3/4 時(shí)鐘頻率: 最大為 240MHz。
  • APB1/2/3/4 時(shí)鐘頻率: 最大為 120MHz。

H7 系列的系統(tǒng)架構(gòu)提供了高性能的總線結(jié)構(gòu),支持多領(lǐng)域的并行數(shù)據(jù)傳輸,適用于處理復(fù)雜且高性能要求的應(yīng)用。
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射

總線主設(shè)備與總線從設(shè)備互連

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
在嵌入式系統(tǒng)中,總線主設(shè)備與總線從設(shè)備的互連是通過總線協(xié)議來實(shí)現(xiàn)的。主要的總線協(xié)議包括 AHB(Advanced High-performance Bus)、APB(Advanced Peripheral Bus)、AXI(Advanced eXtensible Interface)等。以下是它們的簡(jiǎn)要說明:

  1. AHB(Advanced High-performance Bus):

    • 總線特性: 提供高性能的總線傳輸,支持并行傳輸。
    • 主設(shè)備: AHB 總線上的總線主控制器和主設(shè)備。
    • 從設(shè)備: 連接到 AHB 總線的外設(shè)和 DMA 控制器。
  2. APB(Advanced Peripheral Bus):

    • 總線特性: 用于連接外設(shè),相對(duì)于 AHB 總線速度較低。
    • 主設(shè)備: AHB-APB 橋接控制器和 AHB 主設(shè)備。
    • 從設(shè)備: 連接到 APB 總線的外設(shè)。
  3. AXI(Advanced eXtensible Interface):

    • 總線特性: 高度靈活且支持多通道、高性能的總線協(xié)議。
    • 主設(shè)備: AXI 總線上的總線主控制器和主設(shè)備。
    • 從設(shè)備: 連接到 AXI 總線的外設(shè)和 DMA 控制器。

總線主設(shè)備和總線從設(shè)備通過相應(yīng)的總線協(xié)議進(jìn)行通信。連接過程中,總線主控制器負(fù)責(zé)發(fā)起總線事務(wù),選擇通信的從設(shè)備,并將數(shù)據(jù)傳輸?shù)交驈膹脑O(shè)備讀取。通信的具體協(xié)議規(guī)定了數(shù)據(jù)傳輸?shù)母袷?、時(shí)序和控制信號(hào)。

在總線互連中,總線主設(shè)備通過總線協(xié)議的特定信號(hào)(例如,地址線、數(shù)據(jù)線、控制線等)與總線從設(shè)備進(jìn)行數(shù)據(jù)傳輸。這種互連方式是基于硬件設(shè)計(jì)的總線架構(gòu),確保系統(tǒng)中的各個(gè)部件可以有效地協(xié)同工作。

二、STM32的尋址范圍?

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
STM32的尋址范圍是從0x00000000到0xFFFFFFFF,即32位尋址范圍,對(duì)應(yīng)4GB的內(nèi)存空間。這個(gè)范圍包括了Flash存儲(chǔ)器、SRAM(靜態(tài)隨機(jī)存儲(chǔ)器)、外設(shè)寄存器等。在這個(gè)范圍內(nèi),不同的地址區(qū)域用于存放程序代碼、數(shù)據(jù)、系統(tǒng)寄存器等。

以下是一些常見的STM32地址范圍:

  1. Flash 存儲(chǔ)器: 存放程序代碼,通常從0x08000000開始。
  2. SRAM(靜態(tài)隨機(jī)存儲(chǔ)器): 存放變量和堆棧等數(shù)據(jù),其起始地址通常為0x20000000。
  3. 外設(shè)寄存器: 包括與外設(shè)通信的寄存器,地址范圍根據(jù)不同的外設(shè)而變化。
  4. System Control Block(系統(tǒng)控制塊): 包含一些系統(tǒng)級(jí)別的控制寄存器,位于地址0xE000E000區(qū)域。

這個(gè)尋址范圍是非常大的,但實(shí)際上,不同的STM32型號(hào)可能只使用其中的一部分,具體的使用范圍和映射關(guān)系需要查看芯片的數(shù)據(jù)手冊(cè)。

在通常的32位單片機(jī)中,地址線的數(shù)量通常是32根,而每根地址線上有兩種狀態(tài)(高電平或低電平),因此總共有2^32個(gè)不同的地址。

  1. 32位的單片機(jī)有32根地址線: 即使每根地址線有兩種狀態(tài)(0或1,低電平或高電平),總地址數(shù)量為2^32。

  2. 單片機(jī)內(nèi)存地址訪問的存儲(chǔ)單元按字節(jié)編址: 這是正確的,每個(gè)地址代表一個(gè)字節(jié)。即,每個(gè)地址可以存儲(chǔ)8位二進(jìn)制數(shù)據(jù)(一個(gè)字節(jié))。

  3. 地址線根數(shù)和地址編號(hào):

    • 當(dāng)有1根地址線時(shí),有2個(gè)地址編號(hào)(0和1)。
    • 當(dāng)有2根地址線時(shí),有4個(gè)地址編號(hào)(00、01、10、11)。
    • 當(dāng)有3根地址線時(shí),有8個(gè)地址編號(hào)(000、001、010、011、100、101、110、111)。
    • 對(duì)于n根地址線,有2^n個(gè)地址編號(hào)。

這種二進(jìn)制的地址編碼方式允許單片機(jī)訪問非常大的內(nèi)存范圍,但實(shí)際上,芯片的內(nèi)存容量通常受限于其硬件設(shè)計(jì)和制造技術(shù)。

三、存儲(chǔ)器映射

存儲(chǔ)器映射(Memory Mapping)是指將計(jì)算機(jī)中的存儲(chǔ)器(包括RAM、ROM、寄存器等)的地址空間分配給不同的硬件或軟件組件,使其能夠被訪問和操作。存儲(chǔ)器映射創(chuàng)建了一個(gè)虛擬的地址空間,通過該空間,處理器和其他外設(shè)可以有效地進(jìn)行通信。

以下是存儲(chǔ)器映射的一些關(guān)鍵概念:

  1. 地址空間: 存儲(chǔ)器映射創(chuàng)建了一個(gè)地址空間,其中包含了所有可尋址的存儲(chǔ)單元。這個(gè)地址空間可以被劃分成若干區(qū)域,每個(gè)區(qū)域?qū)?yīng)一個(gè)設(shè)備或組件。

  2. 地址映射: 地址映射將邏輯地址(程序中使用的地址)映射到物理地址(實(shí)際的硬件地址)。這樣,程序可以使用邏輯地址來訪問存儲(chǔ)器,而底層硬件負(fù)責(zé)將邏輯地址映射到實(shí)際的存儲(chǔ)器位置。

  3. 內(nèi)存映射 I/O: 存儲(chǔ)器映射技術(shù)允許將某些設(shè)備的寄存器或控制器映射到內(nèi)存地址空間,以便通過讀寫內(nèi)存的方式來訪問這些設(shè)備。這被稱為內(nèi)存映射 I/O。

  4. 外設(shè)寄存器映射: 外設(shè)(如串口、定時(shí)器、GPIO等)通常有相關(guān)的寄存器,這些寄存器被映射到存儲(chǔ)器地址空間中的特定地址。通過寫入或讀取這些地址,可以配置和控制外設(shè)的行為。

  5. 物理地址 vs. 邏輯地址: 物理地址是硬件實(shí)際使用的地址,而邏輯地址是程序員在編寫軟件時(shí)使用的地址。存儲(chǔ)器映射提供了一個(gè)橋梁,使得邏輯地址能夠被正確映射到物理地址上。

存儲(chǔ)器映射的靈活性使得計(jì)算機(jī)系統(tǒng)可以更方便地管理和訪問各種硬件和外設(shè),提高了系統(tǒng)的可擴(kuò)展性和可編程性。
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
存儲(chǔ)器映射是指將實(shí)際的存儲(chǔ)器分配到特定的地址范圍,從而方便處理器訪問和控制。

對(duì)于星憶XM8A51216芯片,有19根地址線(A0到A18)和16根數(shù)據(jù)線(D0到D15)。地址線的數(shù)量決定了總的地址空間大小,16根數(shù)據(jù)線表示每個(gè)地址單元可以傳輸16位數(shù)據(jù)。

根據(jù)地址范圍和映射描述,我們可以分析如下:

  1. 映射1:0 - 512K

    • 地址范圍:0x00000 - 0x7FFFF
    • 數(shù)據(jù)線:D0-D15
    • 這是標(biāo)準(zhǔn)的0-512K的映射,從地址0開始。
  2. 映射2:1 – 512K + 1

    • 地址范圍:0x00001 - 0x80000
    • 數(shù)據(jù)線:D0-D15
    • 這是將映射1中的地址整體向上偏移1。
  3. 映射3:100K – 612K

    • 地址范圍:0x19000 - 0x96FFF
    • 數(shù)據(jù)線:D0-D15
    • 這是將映射1中的地址整體向上偏移100K。
  4. 映射4:512K – 1024K

    • 地址范圍:0x80000 - 0xFFFFF
    • 數(shù)據(jù)線:D0-D15
    • 這是將映射1中的地址整體向上偏移512K,達(dá)到了512K到1024K的范圍。

這些映射可以根據(jù)系統(tǒng)需求和硬件設(shè)計(jì)來調(diào)整,但需要確保不同映射之間沒有重疊。

存儲(chǔ)器功能劃分(F1為例)

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
對(duì)于STM32F1系列,ST將4GB的地址空間劃分為8個(gè)塊,每個(gè)塊有不同的功能和地址范圍。以下是各存儲(chǔ)塊的功能和地址范圍(以STM32F1為例):

  1. Block 0: Code(FLASH)

    • 功能: 存儲(chǔ)主程序代碼(Flash存儲(chǔ)器)
    • 地址范圍: 0x0000 0000 ~ 0x1FFF FFFF(512MB)
  2. Block 1: SRAM

    • 功能: 隨機(jī)存儲(chǔ)器,用于存儲(chǔ)變量和堆棧
    • 地址范圍: 0x2000 0000 ~ 0x3FFF FFFF(512MB)
  3. Block 2: 片上外設(shè)

    • 功能: 存儲(chǔ)一些與片上外設(shè)相關(guān)的寄存器和數(shù)據(jù)
    • 地址范圍: 0x4000 0000 ~ 0x5FFF FFFF(512MB)
  4. Block 3: FSMC Bank1&2

    • 功能: 存儲(chǔ)FSMC(外部存儲(chǔ)控制器) Bank1和Bank2的外部設(shè)備映射區(qū)域
    • 地址范圍: 0x6000 0000 ~ 0x7FFF FFFF(512MB)
  5. Block 4: FSMC Bank3&4

    • 功能: 存儲(chǔ)FSMC Bank3和Bank4的外部設(shè)備映射區(qū)域
    • 地址范圍: 0x8000 0000 ~ 0x9FFF FFFF(512MB)
  6. Block 5: FSMC寄存器

    • 功能: 存儲(chǔ)FSMC控制寄存器等
    • 地址范圍: 0xA000 0000 ~ 0xBFFF FFFF(512MB)
  7. Block 6: 沒用到

    • 功能: 該區(qū)域沒有被使用
  8. Block 7: Cortex M3內(nèi)部外設(shè)

    • 功能: 存儲(chǔ)Cortex M3內(nèi)核的內(nèi)部外設(shè)寄存器
    • 地址范圍: 0xE000 0000 ~ 0xFFFF FFFF(512MB)

這樣的劃分使得不同的存儲(chǔ)塊用于不同的目的,有效地利用了整個(gè)32位地址空間。
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
對(duì)于 Block 0(FLASH),這里具體的功能劃分如下:

  1. FLASH或系統(tǒng)存儲(chǔ)器別名區(qū)

    • 功能: FLASH存儲(chǔ)器或系統(tǒng)存儲(chǔ)器的別名區(qū)域
    • 地址范圍: 0x0000 0000 ~ 0x0007 FFFF(512KB)
  2. 保留

    • 地址范圍: 0x0008 0000 ~ 0x07FF FFFF
  3. 用戶FLASH,用于存儲(chǔ)用戶代碼

    • 功能: 用于存儲(chǔ)用戶程序代碼
    • 地址范圍: 0x0800 0000 ~ 0x0807 FFFF(512KB)
  4. 保留

    • 地址范圍: 0x0808 0000 ~ 0x1FFF EFFF
  5. 系統(tǒng)存儲(chǔ)器,存儲(chǔ)出廠Bootloader

    • 功能: 存儲(chǔ)出廠Bootloader等系統(tǒng)相關(guān)信息
    • 地址范圍: 0x1FFF F000 ~ 0X1FFF F7FF(2KB)
  6. 選項(xiàng)字節(jié),配置讀保護(hù)等

    • 功能: 存儲(chǔ)選項(xiàng)字節(jié),用于配置讀保護(hù)等選項(xiàng)
    • 地址范圍: 0X1FFF F800 ~ 0X1FFF F80F(16B)
  7. 保留

    • 地址范圍: 0X1FFF F810 ~ 0X1FFF FFFF

這樣的劃分充分利用了 Flash 存儲(chǔ)器的不同區(qū)域,包括用戶代碼區(qū)、系統(tǒng)存儲(chǔ)器區(qū)、選項(xiàng)字節(jié)等,以滿足不同的需求和配置。
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
對(duì)于 Block 1(SRAM),功能劃分如下:

  1. SRAM

    • 功能: 靜態(tài)隨機(jī)存儲(chǔ)器,用于存儲(chǔ)變量、數(shù)據(jù)等
    • 地址范圍: 0X2000 0000 ~ 0x2000 FFFF(64KB)
  2. 保留

    • 地址范圍: 0X2001 0000 ~ 0x3FFF FFFF

這樣的劃分使得 Block 1 主要用于存儲(chǔ)數(shù)據(jù),例如變量、緩沖區(qū)等,提供了一定的存儲(chǔ)空間供程序運(yùn)行使用。
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
對(duì)于 Block 2(外設(shè)),功能劃分如下:

  1. APB1總線外設(shè)

    • 功能: 連接到 APB1 總線的外設(shè)
    • 地址范圍: 0X4000 0000 ~ 0x4000 77FF
  2. 保留

    • 地址范圍: 0X4000 7800 ~ 0x4000 FFFF
  3. APB2總線外設(shè)

    • 功能: 連接到 APB2 總線的外設(shè)
    • 地址范圍: 0X4001 0000 ~ 0x4000 3FFF
  4. 保留

    • 地址范圍: 0X4001 4000 ~ 0x4001 7FFF
  5. AHB總線外設(shè)

    • 功能: 連接到 AHB 總線的外設(shè)
    • 地址范圍: 0X4001 8000 ~ 0x4002 33FF
  6. 保留

    • 地址范圍: 0X4002 3400 ~ 0x5FFF FFFF

這樣的劃分使得 Block 2 主要用于存儲(chǔ)外設(shè)寄存器的地址,可以通過這些地址訪問外設(shè)的寄存器來進(jìn)行配置和控制。

STM32F1存儲(chǔ)器映射圖

參考資料:STM32F103ZET6.pdf(英文版數(shù)據(jù)手冊(cè))
數(shù)據(jù)手冊(cè):4 Memory mapping \ Figure 9. Memory map
路徑:戰(zhàn)艦 V4\資料\7,硬件資料\STM32F103ZET6.pdf

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射

四、寄存器映射

參考資料:STM32F10xxx參考手冊(cè)_V10(中文版).pdf
路徑:戰(zhàn)艦 V4\資料\8,STM32參考資料\STM32F10xxx參考手冊(cè)_V10(中文版).pdf

寄存器映射是指將每個(gè)寄存器分配一個(gè)唯一的地址,以便在程序中通過這個(gè)地址來訪問寄存器。在嵌入式系統(tǒng)中,寄存器通常用于配置和控制外設(shè)、存儲(chǔ)狀態(tài)信息等。通過寄存器映射,程序可以通過讀寫特定的內(nèi)存地址來實(shí)現(xiàn)對(duì)寄存器的訪問。

在微控制器或微處理器的設(shè)計(jì)中,不同的寄存器用于不同的目的,例如配置、控制、狀態(tài)檢測(cè)等。這些寄存器的地址被定義為特定的數(shù)值,程序可以通過這些地址與寄存器進(jìn)行交互。對(duì)于每個(gè)寄存器,通常都會(huì)有相應(yīng)的位域,用于表示不同的配置選項(xiàng)、狀態(tài)標(biāo)志等信息。

以下是一個(gè)簡(jiǎn)化的例子,展示了寄存器映射的一部分:

地址:   寄存器
0x40000000:   控制寄存器
0x40000004:   數(shù)據(jù)寄存器
0x40000008:   狀態(tài)寄存器
0x4000000C:   配置寄存器
...

通過訪問這些地址,程序可以讀取或?qū)懭胂鄳?yīng)的寄存器,從而實(shí)現(xiàn)對(duì)硬件的配置和控制。在編程時(shí),開發(fā)者通常會(huì)使用硬件手冊(cè)或數(shù)據(jù)表來查找寄存器的地址和相關(guān)的位域信息。

寄存器基礎(chǔ)知識(shí)

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射

STM32寄存器分類

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
STM32寄存器主要可以分為兩大類:內(nèi)核寄存器和外設(shè)寄存器。

內(nèi)核寄存器:

  1. 內(nèi)核相關(guān)寄存器: 包括 R0~R15 寄存器,xPSR 寄存器,以及一些特殊功能寄存器。這些寄存器用于處理器的基本操作和狀態(tài)管理。

  2. 中斷控制寄存器: 包括 NVIC(Nested Vectored Interrupt Controller)和 SCB(System Control Block)相關(guān)寄存器。在 NVIC 中,有一系列寄存器用于控制中斷的使能、優(yōu)先級(jí)等,如 ISER(Interrupt Set Enable Register)、ICER(Interrupt Clear Enable Register)、ISPR(Interrupt Set Pending Register)等。SCB 包含一些系統(tǒng)級(jí)別的控制寄存器,如 VTOR(Vector Table Offset Register)、AIRCR(Application Interrupt and Reset Control Register)等。

  3. SysTick 寄存器: 包括 CTRL(Control Register)、LOAD(Reload Value Register)、VAL(Current Value Register)和 CALIB(Calibration Value Register)四個(gè)寄存器。SysTick 是一個(gè)用于實(shí)現(xiàn)系統(tǒng)時(shí)鐘節(jié)拍的定時(shí)器。

  4. 內(nèi)存保護(hù)寄存器: 這些寄存器用于配置存儲(chǔ)器的保護(hù)機(jī)制,但在一些 STM32 系列中可能并不包含。

  5. 調(diào)試系統(tǒng)寄存器: 包括 ETM(Embedded Trace Macrocell)、ITM(Instrumentation Trace Macrocell)、DWT(Data Watchpoint and Trace)等相關(guān)寄存器。這些寄存器用于支持調(diào)試和跟蹤功能。

外設(shè)寄存器:

外設(shè)寄存器包括 STM32 上各種外設(shè)的配置和控制寄存器。這些外設(shè)寄存器用于配置和控制與 MCU 相連接的外圍設(shè)備,如 GPIO、UART、I2C、SPI、TIM(定時(shí)器)、DMA、ADC、DAC、RTC(實(shí)時(shí)時(shí)鐘)、I/WWDG(看門狗)、PWR(電源管理)、CAN(控制器局域網(wǎng))、USB(通用串行總線)等。每個(gè)外設(shè)通常都有一組寄存器用于控制其行為、配置參數(shù)等。

寄存器映射(F1為例)

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
在 STM32 系列中,每個(gè)寄存器都有其特定的地址,該地址通常采用寄存器映射的方式進(jìn)行命名。給定一個(gè)例子,如寄存器地址 0x4001080C 和寄存器名字 GPIOA_ODR

  • 寄存器地址: 0x4001080C
  • 寄存器名字: GPIOA_ODR

這表示該寄存器的物理地址是 0x4001080C。在 STM32 系列中,寄存器名字通常包含外設(shè)名和功能描述,以便更好地理解和識(shí)別該寄存器的用途。在這個(gè)例子中,GPIOA_ODR 可能是 GPIO(通用輸入/輸出)模塊中的一個(gè)輸出數(shù)據(jù)寄存器(Output Data Register),用于控制 GPIOA 端口上的輸出狀態(tài)。

通常,具體的寄存器映射和寄存器名字的含義可以在 STM32 的參考手冊(cè)或數(shù)據(jù)手冊(cè)中找到,這些手冊(cè)由芯片制造商提供,詳細(xì)描述了芯片的內(nèi)部結(jié)構(gòu)、外設(shè)功能和寄存器的使用方法。

寄存器描述解讀

參考資料:STM32F10xxx參考手冊(cè)_V10(中文版).pdf
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
當(dāng)閱讀芯片手冊(cè)或數(shù)據(jù)手冊(cè)時(shí),寄存器描述通常包含以下幾個(gè)重要部分:

  1. 寄存器名字: 這是寄存器的標(biāo)識(shí)符,用于表示特定功能或外設(shè)的某個(gè)寄存器。

  2. 偏移量及復(fù)位值: 描述了該寄存器在整個(gè)寄存器映射中的偏移地址,通常給出了復(fù)位時(shí)寄存器的默認(rèn)值。

  3. 寄存器位表: 列出了該寄存器的所有位,每個(gè)位對(duì)應(yīng)一個(gè)特定的功能或配置選項(xiàng)。表格中可能包括位的名稱、位的偏移量、位寬度等信息。

  4. 位功能描述: 對(duì)每個(gè)位進(jìn)行詳細(xì)的描述,解釋了該位的作用、影響以及如何配置或使用。這是理解寄存器功能的關(guān)鍵部分。

讓我們以具體的例子解讀一個(gè)寄存器描述:

GPIOA_ODR (GPIOA output data register)
Offset: 0x14      Reset value: 0x0000 0000

Bits   | 31:16 | 15:0  |
       |-------|-------|
ODR    | 0     | PortA |
       |-------|-------|

在這個(gè)例子中:

  • 寄存器名字: GPIOA_ODR 表示 GPIOA 端口的輸出數(shù)據(jù)寄存器。

  • 偏移量及復(fù)位值: 該寄存器的偏移量為 0x14,復(fù)位時(shí)的默認(rèn)值為 0x0000 0000。

  • 寄存器位表: 該寄存器只有一個(gè)位,即 ODR,位寬度為 16 位。該位控制 GPIOA 端口的輸出。

  • 位功能描述: 該位的描述可能是 “PortA”,說明這個(gè)位用于控制 GPIOA 端口的輸出狀態(tài)。

這是一個(gè)簡(jiǎn)化的例子,實(shí)際的寄存器描述可能更加復(fù)雜,包含更多的位和功能描述。理解這些寄存器描述對(duì)于正確配置和使用芯片的外設(shè)非常重要。
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射

寄存器映射舉例

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
在嵌入式開發(fā)中,直接操作寄存器地址是常見的做法。通過定義寄存器的地址,并使用指針訪問這個(gè)地址,可以直接對(duì)寄存器進(jìn)行讀寫操作。這種方式通常用于對(duì)寄存器位進(jìn)行精確控制,例如配置 GPIO 的輸入輸出狀態(tài)。

下面是一個(gè)簡(jiǎn)單的示例,演示如何通過直接操作寄存器地址或使用宏定義的方式控制 GPIOA 的輸出狀態(tài):

// 直接操作寄存器地址
*(unsigned int *)(0x4001080C) = 0xFFFF;  // 設(shè)置 GPIOA_ODR 寄存器的值為 0xFFFF

// 使用宏定義
#define GPIOA_ODR (*(volatile unsigned int *)(0x4001080C))  // 定義 GPIOA_ODR 的宏
GPIOA_ODR = 0xFFFF;  // 設(shè)置 GPIOA_ODR 寄存器的值為 0xFFFF

在這個(gè)例子中,0x4001080C 是 GPIOA_ODR 寄存器的地址,volatile 關(guān)鍵字用于告訴編譯器該變量是易變的,可能會(huì)被外部因素更改,因此編譯器不會(huì)進(jìn)行一些優(yōu)化,確保每次都從內(nèi)存中讀取值。

使用宏定義的方式有助于提高代碼的可讀性和維護(hù)性。通過定義宏,可以將寄存器的地址封裝在宏中,給這個(gè)地址起一個(gè)易于理解的名字,方便在代碼中使用。這也是嵌入式開發(fā)中常見的一種編程風(fēng)格。

寄存器地址計(jì)算

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
寄存器地址計(jì)算的思路是將寄存器的地址拆分為三個(gè)部分,這樣的設(shè)計(jì)有助于更靈活地應(yīng)對(duì)不同的外設(shè)、總線等。具體而言,計(jì)算公式如下:

寄存器地址 = BUS_BASE_ADDR + PERIPH_OFFSET + REG_OFFSET \text{寄存器地址} = \text{BUS\_BASE\_ADDR} + \text{PERIPH\_OFFSET} + \text{REG\_OFFSET} 寄存器地址=BUS_BASE_ADDR+PERIPH_OFFSET+REG_OFFSET

其中:

  • BUS_BASE_ADDR:總線基地址,代表總線的起始地址。
  • PERIPH_OFFSET:外設(shè)基于總線基地址的偏移量,表示特定外設(shè)相對(duì)于總線的位置。
  • REG_OFFSET:寄存器相對(duì)外設(shè)基地址的偏移量,表示特定寄存器相對(duì)于外設(shè)的位置。

這種寄存器地址計(jì)算的方法允許我們通過更改這三個(gè)部分的數(shù)值,輕松地適應(yīng)不同的硬件配置和外設(shè)分布。在嵌入式系統(tǒng)中,通常由芯片廠商提供相應(yīng)的寄存器映射表和基地址信息,開發(fā)人員可以據(jù)此進(jìn)行地址計(jì)算和寄存器操作。
參考資料:STM32F10xxx參考手冊(cè)_V10(中文版).pdf 2.3小節(jié)
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射

GPIOA_ODR寄存器地址計(jì)算過程:

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
你的計(jì)算是正確的,下面將每一步詳細(xì)講解:

  1. 獲取外設(shè)掛在哪個(gè)總線上面?查系統(tǒng)結(jié)構(gòu)圖得知 GPIOA 外設(shè)掛在 APB2 總線上。

  2. 獲取總線基地址,APB2 總線基地址為 0 X 40010000 0X4001 0000 0X40010000

  3. 獲取外設(shè)地址偏移量,GPIOA 相對(duì)于 APB2 總線的偏移量是 0 X 800 0X800 0X800。

  4. 獲取寄存器地址偏移量,ODR 相對(duì)于 GPIOA 外設(shè)的基地址的偏移量是 0 X 0 C 0X0C 0X0C

現(xiàn)在,可以使用寄存器地址計(jì)算公式計(jì)算 GPIOA_ODR 的地址:

GPIOA_ODR = BUS_BASE_ADDR + PERIPH_OFFSET + REG_OFFSET \text{GPIOA\_ODR} = \text{BUS\_BASE\_ADDR} + \text{PERIPH\_OFFSET} + \text{REG\_OFFSET} GPIOA_ODR=BUS_BASE_ADDR+PERIPH_OFFSET+REG_OFFSET

將具體數(shù)值代入:

GPIOA_ODR = 0 X 40010000 + 0 X 800 + 0 X 0 C = 0 X 4001080 C \text{GPIOA\_ODR} = 0X4001 0000 + 0X800 + 0X0C = 0X4001 080C GPIOA_ODR=0X40010000+0X800+0X0C=0X4001080C

因此,GPIOA_ODR 寄存器的地址是 0 X 4001080 C 0X4001 080C 0X4001080C。
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
0 X 40013804 0X40013804 0X40013804

使用結(jié)構(gòu)體,可以很方便的完成對(duì)寄存器的映射:

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
使用結(jié)構(gòu)體進(jìn)行寄存器映射,可以更方便地訪問和操作寄存器,提高代碼的可讀性和可維護(hù)性。定義一個(gè)結(jié)構(gòu)體 GPIO_TypeDef 包含了 GPIO 相關(guān)寄存器的成員,然后使用結(jié)構(gòu)體指針來訪問寄存器,是一種常見的做法。

在上述例子中:

typedef struct
{
  __IO uint32_t CRL;
  __IO uint32_t CRH;
  __IO uint32_t IDR;
  __IO uint32_t ODR;
  __IO uint32_t BSRR;
  __IO uint32_t BRR;
  __IO uint32_t LCKR;
} GPIO_TypeDef;

#define GPIOA_BASE 0X4001 0800
#define GPIOA ((GPIO_TypeDef *)GPIOA_BASE)

// 訪問 GPIOA 的 ODR 寄存器
GPIOA->ODR = 0XFFFF;

這樣的代碼更加清晰和易于維護(hù)。通過使用結(jié)構(gòu)體,你可以直觀地理解每個(gè)寄存器的作用,也方便了對(duì)硬件的配置和操作。
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射

stm32f103xe.h主要組成部分

stm32f103xe.h
路徑:戰(zhàn)艦 V4\資料\4,程序源碼\2,標(biāo)準(zhǔn)例程-HAL庫(kù)版本\實(shí)驗(yàn)1 跑馬燈實(shí)驗(yàn)\stm32f103xe.h

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射

跳轉(zhuǎn)到此處

【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射
【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射),STM32,F1F4F7H7 系統(tǒng)框架,尋址范圍,存儲(chǔ)器映射,寄存器映射,內(nèi)核寄存器和外設(shè)寄存器,寄存器地址計(jì)算,結(jié)構(gòu)體完成對(duì)寄存器的映射文章來源地址http://www.zghlxwxcb.cn/news/detail-831482.html

到了這里,關(guān)于【正點(diǎn)原子STM32】STM32基礎(chǔ)知識(shí)(F1F4F7H7 STM32系統(tǒng)框架、尋址范圍、存儲(chǔ)器映射的存儲(chǔ)器功能劃分、寄存器映射)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包