STM32系列--初识寄存器1
文章目錄
- 如何識別芯片
- 芯片里面構成
- 什么是存儲器映射
- 寄存器
- 使用結構體來封裝寄存器列表
- 補充復習C語言
- 指針
- 結構體
- 結構體指針
如何識別芯片
芯片四周是引腳,左下角的小圓點表示1腳,然后從1腳起按照逆時針的順序排列,如果沒有小圓點,則代表從左邊最上方逆時針開始計數
芯片里面構成
如下圖所示:
總線矩陣:
總線之間交叉的時候如果有個圓圈則表示可以通信,沒有圓圈則表示不可以通信。
內核與外設之間要同通信要通過I\S\D總線。需要總線矩陣來沖裁I/S/D沖突的情況。
下面我總結一下STM32里面包含了什么,首先是內核用于控制片上外設,這個內核是ARM公司開發的,而ST設計的是片上外設,外設要與ARM內核通信,需要通過總線,即總線矩陣。
什么是存儲器映射
存儲器本身不具有地址信息,它的地址是由芯片廠商,給存儲器分配地址的過程就稱為存儲器映射。
給存儲器分配地址的過程叫存儲器映射,再分配一個地址叫重映射。
通過絕對地址發訪問內存單元:
ox40021 c14在我們看來是GPIOH端口ODR的地址,但是在編譯器看來這只是一個普通的變量,想讓編譯器也認識為是一個指針,我們得進行強制類型轉換,把它轉換成指針。(unsigned int *)0x40021c14 ,然后在對這個指針進行 * 操作。
下面,我來睡一下,(unsigned int *)(0x40021c14)代表將0x40021c14轉換為一個指針(也就是一個地址),再取 * 就代表給此地址賦值
寄存器
給有特定功能的內存單元取一個別名,這個別名就是我們經常說的寄存器,這個給已經分配好地址的有特定功能的內存單元取別名的就叫做寄存器映射。
下面來深入的講解一下STM32的寄存器映射
如果一個一個去找外設寄存器的地址,那么將會是非常麻煩,我們可以有一個非常簡單的方法,我們可以先確定每一條總線的地址,然后,在總線的地址上找到外設的地址。
首選取找總線的地址:
這個可以從芯片手冊上查看。
上面查看的是STM32F76xxx
使用結構體來封裝寄存器列表
補充復習C語言
指針
在C語言中,允許一個變量來存放指針,這種變量稱為指針變量,指針變量的值就是某份數據的地址。
在定義指針變量p_a的同時對它進行初始化,并將變量a的地址賦予它。通過&來獲取a的地址。
通過指針變量來取得數據:
運行結果都為15
總的來講,我們只需要知道&是代表獲取地址,*代表獲取數據
結構體
結構體就是一種自定義的數據類型,相當于是一種聚合類型。
如上圖所示,代表了2個結構體,stu1和stu2
結構體指針
獲取結構體成員
總結
以上是生活随笔為你收集整理的STM32系列--初识寄存器1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Verilog全新语法认识--Xilin
- 下一篇: stm32--对固件库的认识2