找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2240|回復: 0
打印 上一主題 下一主題
收起左側

MDK中寄存器地址名稱映射分析(開發(fā)指南4.6節(jié))

[復制鏈接]
跳轉到指定樓層
樓主
ID:387610 發(fā)表于 2018-8-18 15:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 新鄉(xiāng)吳彥祖 于 2018-8-18 15:57 編輯

MDK中寄存器地址名稱映射分析(開發(fā)指南4.6節(jié))
對MCU,一切底層配置,最終都是配置寄存器
庫函數是對底層寄存器封裝了一遍,位操作也是最終操作的寄存器
51中映射的方法:sfr P0=0x80;//P0映射到地址0x80 ,以后只需要直接寫P0=0x00即代表往寄存器地址0x80所代表的寄存器賦值,0x00相當于給P0的每一位IO口都賦值0。這樣的好處是不需要記住每個寄存器的地址,需要用對應的寄存器時直接寫寄存器相應的名稱即可。最常用的P0、P1、P2、P3,四組輸入輸出(I/O)寄存器,以及TH1, TH0, TL1,TL0,SCON,TCON,TMOD,SBUF等等
相比于51,32的寄存器要多得多,32采用了結構體來表示相應的寄存器
GPIOA->ODR=0x00000000。32中每組IO口都有7個寄存器控制這與51稍有不同。每組IO對應一個基地址,寄存器根據基地址進行偏移取的地址,GPIOA的基地址又是根據APB2的地址來偏移,同理得到其他地址。其中外設基地址是一個比較高的地址,他被定義為一個常量,作為參考。再回頭說結構體,我們打開stm32f10x.h 定位到GPIO_TypeDef 定義處:GPIOA被強制轉換為結構體指針,就意味著接下來的地址代表了結構體中的七個寄存器。由于每個寄存器是32位,每個地址設置八位(類似于51),并且結構體存儲的成員他們的地址是連續(xù)的。所以GPIOA下的寄存器相對應的寄存器之間的地址都是相差了4,例如我們訪問ODR寄存器就是訪問了ODR相對于GPI_的基地址的偏差的四個地址。
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表