日韩在线免费播放-日韩在线免费av-日韩在线免费-日韩在线毛片-国产高清不卡视频-国产高清不卡

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > 裸機程序中頭文件的來源

裸機程序中頭文件的來源 時間:2018-12-11      來源:未知

特殊功能寄存器SFR,是Special Function Register的縮寫。特殊功能寄存器是一個芯片功能得以實現的載體,我們可以理解為芯片廠商留給開發人員的控制接口,用于控制片內外設,比如GPIO、UART、ADC等。在常見的單片機或以ARM處理器為核心的芯片中,每個片內外設都有對應的特殊寄存器,用于存放相應功能部件的控制命令,數據或者狀態。

特殊功能寄存器是有地址的,其地址也是使用的處理器尋址范圍之內的一段空間,所以我們對于特殊功能寄存器的操作與操作內存類似,只是特殊功能寄存器是用于存放片內外設的的控制命令,數據或者狀態,我們可以通過操作特殊功能寄存器達到對片內外設的控制。

查看Exynos4412芯片手冊地址映射表,如圖所示,我們可以看到Exynos4412的特殊功能寄存器絕大部分都放到了0x1000_0000到0x1400_0000的地址空間內。

裸機程序中頭文件的來源

Exynos4412地址映射表

在芯片手冊中我們可以看到對各個寄存器的描述。我們以GPA0CON寄存器為例,該寄存器是用于配置GPA0組管腳功能的寄存器。

GPA0組的配置寄存器GPA0CON的地址是:基地址+偏移量

0x11400000 + 0x0000 = 0x11400000

裸機程序中頭文件的來源

GPA0CON寄存器

一般情況下我們經常對一個芯片當中的所有寄存器進行如下定義,然后將這些宏定義都寫在一個頭文件中,在需要使用寄存器時直接引用該宏定義就可以操作該寄存器中的數據。

例如:

#define  GPA0CON  (*(unsigned int *)0x11400000)

這里定義了一個宏,宏定義在預處理階段進行直接替換,0x11400000 是一個16進制的數據,前面用(unsigned int *)修飾意在把0x11400000強制轉換成了一個指向unsigned int型變量的指針。簡單的說,(unsigned int  *)0x11400000指向了內存中從0x11400000開始的連續的4個字節空間。(0x11400000—0x11400003)。(*(unsigned int  *)0x11400000)是在(unsigned int  *)0x11400000又加了一個指針運算符*,表示取內存單元里的數據。所以如果我們操作(*(unsigned int  *)0x11400000)就相當于通過間接的方式操作以起始地址為0x11400000的連續的四個字節的地址空間當中的數據。所以我們在實際使用時只要把寄存器提前進行宏定義封裝在實際使用時直接引用該寄存器的名字就可以,我們可以像unsigned int變量一樣訪問特殊功能寄存器。

例如:

GPA0CON = (GPA0CON & ~(0xf<<4))| 1<<4; //將GPA0_1引腳設置為輸出功能

上一篇:堆棧溢出一般是什么原因?

下一篇:紅外感應器工作原理

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 打美女屁股视频| 小丑回魂| 纵情欲海电影| 456电影在线| 下截抖音| 女人香韩国电影| 陈慧娴个人资料| 妻子的秘密免费看全集| 车辆年检新规几年一审| 穿上触手内衣被调教堕落| 英国经典电影| 出轨的女人电影| 少先队应知应会知识题库及答案| 亚洲免费观看视频| 好看的拉片| 美国禁忌1984| 新一剪梅电视剧演员表| 少年团时代成员| 病毒感染血常规有什么异常 | 尤克里里谱| 范海辛电影原声在线观看免费| 缉私群英 电视剧| 视频污| 夏和平| 小学五年级研究报告| 电影院线| 狼来了电影免费观看| 二年级53天天练语文上册答案| paigeturnah大白臀| 陈颖芝三级| 女孩们在线观看| 超人演员| 伊利奶粉哪个系列最好| 琪琪色影院| 林子祥电影| 情侣网站视频| 江湖大风暴| 不可饶恕 电影| 嗯啊不要在线观看| 罗乐| 《我的美女老板》电视剧 |