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