STM32學習筆記 —— 1.1 什么是寄存器(概念分析)


問題引入:

用一句話回答以下問題:

  • 什么是寄存器?
  • 什么是寄存器映射?
  • 什么是存儲器映射?

(本章重點在 1.1.3 和 1.1.4)

1.1 STM32芯片實物圖

(圖)

  1. 學會看絲印圖
    • 芯片型號、內核提供商等其他信息
  2. 學會辨別正方向(芯片上的小圓點與PCB上的小圓點對應)
    • 以小圓點為基礎,逆時針旋轉,從1號引腳開始遞增(圖)
    • 如果芯片上沒有小圓點,那么就把絲印圖正對着自己,左上角的引腳為1號引腳,同樣逆時針旋轉遞增。
    • 所有芯片的引腳排列都是逆時針的,無論是LQFP還是DIP封裝的。

1.2 STM32芯片架構簡圖

(圖)

芯片主要是由內核和外設組成。

內核(主控制器):

  • Cortex - M4內核(由Arm公司設計)用於控制外設。

外設(從控制器):

  • Flash、Sram、USART、GPIO、IIC、SPI等(由Soc公司設計)

總線:

  1. 內核與外設通過總線連接,其分為:I(指令)、S(系統)、D(數據)總線。

  2. 幾個總線同時訪問某個外設或者內核,產生競爭的時候,總線矩陣會使用調度算法進行仲裁。

  3. STM32F42xx的總線接口

(圖)

  • 黃色為主控制器,紅色為從控制器。
  • 指令總線主要訪問Flash,程序可以從內置Flash、外置Flash和Sram中啟動。
  • 總線交叉處有圓點,說明可以連接,例如:程序只能存儲在Sram1中,不能存儲在Sram2中。
  • 數據總線主要用於取常量。常量的存儲區域和程序的存儲區域是一樣的。
  • 系統總線主要訪問Sram和寄存器。

1.3 存儲器映射

  1. 存儲器本身是不具有地址信息的,地址信息是由用戶或者廠商分配的,為存儲器重新分配地址的過程即為存儲器映射。

  2. Cortex - M4內核是32位的,可以尋址2的32次方,也就是4GB(0x0000 0000 - 0xFFFF FFFF)的內存空間,

  3. 這4GB的內存空間被分成了8個Block,每個Block都有特定的功能,每個Block大小為512MB。(教程里有每個Block的功能划分)

    • Block0用於設計Flash,429IGT6只用了1MB。

    • Block1用於設計Sram,用於存儲變量,429IGT6用了256KB,被分成了三個部分:Sram1為112KB,Sram2為16KB,Sram3為64KB。

    • Block2用於設計片上外設。外設根據速度不同被分成四條總線進行控制:AHB1、AHB2、APB2、APB1。

      (圖)

    • Block3是FMC的bank1 - bank2,用於擴展外部存儲,一個bank為256MB,板上拓展了一個大小為8MB的Sram。

    • Block4是FMC的bank3 - bank4

      • 四個bank通過一個片選信號控制四片拓展芯片 。
    • Block5用於FMC

    • Block6用於FMC

    • Block7為Cortex - M4的內部外設,是由Arm公司設計的,如:NVIC等。

  4. 通過地址和偏移量間接訪寄存器。

1.4 寄存器映射

問題引入:

  • 如何通過控制寄存器的方法,讓GPIOH的16個引腳均輸出高電平?

通過絕對地址訪問內存單元:

//GPIO端口全部輸出高電平
*(unsigned int *)(0x40021C14) = 0xFFFF;
  1. 0x40021C14是輸出數據寄存器OCR的地址,如何找到?

    1. 在《STM32中文參考手冊》2.3.1 嵌入式SRAM這節中,可以查到GPIOH外設的起始地址為0x4002 1c00。
    2. 在 7.4.6 GPIO端口輸出數據寄存器這節中,可以查到偏移地址為0x14。
  2. (unsigned int *)的作用是什么?

    • 0x4002 1c14是我們人為理解的地址,但是直接寫在程序中,只是一串十六進制常量,需要將其強制類型轉換為指針類型,才能使用間接訪問運算符訪問該地址內存的數據。

通過寄存器別名方式訪問內存單元:

#define GPIOH_ODR *(unsigned int *)(0x40021C13)
GPIOH_ODR = 0XFF;

什么是寄存器?

  • 給具有特定功能的內存單元取一個別名,這個別名就是寄存器,給已經分配好地址的特定內存單元取別名的過程叫做寄存器映射。

什么是存儲器映射?

  • 給存儲器分配地址的過程叫做存儲器映射,再分配一個地址的過程叫做重映射。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM