版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、ARM 應(yīng)用系統(tǒng)設(shè)計(jì)第六章 部件工作原理和編程示例,佘黎煌 東北大學(xué)信息科學(xué)與工程學(xué)院 電子信息工程研究所,第六章 部件工作原理和編程示例,GPIO編程示例 UART編程示例 TIMER編程示例,GPIO的控制,利用GPIO 口控制連接在GPIO 引腳上的LED 燈的亮滅 1. 通過(guò)AXD Debugger 的命令行調(diào)試功能,直接通過(guò)JTAG 接口修改W90P710 處理器內(nèi)部端口寄存器的值. 2. C 語(yǔ)言源程序,實(shí)現(xiàn)通過(guò)GPIO 口控制LED12、LED13 按照設(shè)定的時(shí)間間隔閃爍。,GPIO的控制,GPIO復(fù)選控制寄存器,GPIO上拉電阻和方向配置,GPIO輸出控制寄存器,AXD Deb
2、ugger控制,AXD Debugger控制,AXD Debugger控制,設(shè)定GPIO5 和GPIO6 引腳為輸出模式,并使能內(nèi)部上拉電阻 Debug setmem 0 xFFF83054 0 x30003,32 使GPIO5 和GPIO6 引腳輸出電平為高。此時(shí),LED12、LED13 應(yīng)熄滅。 Debug Setmem 0 xFFF83058 0 x3,32 使GPIO5 和GPIO6 引腳輸出電平為低。此時(shí),LED12、LED13 應(yīng)點(diǎn)亮。 Debug Setmem 0 xFFF83058 0 x0,32,C語(yǔ)言-地址定義,void GpioInit() outpw(REG_GPIO_
3、CFG5,0 x0); / 設(shè)置PORT5_0, PORT5_1 為GPIO5,GPIO6 方式 outpw(REG_GPIO_DIR5,0 x30003); / 設(shè)置GPIO5,GPIO6 引腳內(nèi)部上拉,/ 并將這兩個(gè)引腳設(shè)為輸出模式 void SetGpio(INT16 value) outpw(REG_GPIO_DATAOUT5,value); int main (void) INT16 value = 0 x3; GpioInit(); while(1) value = (value ,通過(guò)AXD調(diào)試軟件做地址重映射,建立一個(gè)文本文件setmap.txt, setmem 0 xfff0
4、1000 0 x000530C1,32 ;EBICON setmem 0 xfff01004 0 x10040084,32 ;ROMCON setmem 0 xfff01008 0 x000010E4,32 ;SDCONF0 setmem 0 xfff0100c 0 x00000000,32 ;SDCONF1 setmem 0 xfff01010 0 x0000014B,32 ;SDTIME0 setmem 0 xfff01014 0 x0000014B,32 ;SDTIME1 將SDRAM的基地址配置為0 x0,FLASH的基地址配置為0 x8000000,AXD調(diào)試在SDRAM中進(jìn)行 De
5、bug obey c:setmap.txt,C語(yǔ)言-寄存器訪問(wèn),#define GPIO_BA 0 xFFF83000 /* GPIO Control */ #define REG_GPIO_CFG5(GPIO_BA+0 x0050)/* GPIO port5 configuration Register */ #define REG_GPIO_DIR5(GPIO_BA+0 x0054)/* GPIO port5 direction control Register */ #define REG_GPIO_DATAOUT5(GPIO_BA+0 x0058)/* GPIO port5 data
6、out Register */ #define REG_GPIO_DATAIN5 (GPIO_BA+0 x005c)/* GPIO port5 data input Register */ #define outpw(port,value) (*(UINT32 volatile *) (port)=value) #define inpw(port) (*(UINT32 volatile *) (port) outpw(REG_GPIO_CFG5,0 x0); / 設(shè)置PORT5_0, PORT5_1 為GPIO5,GPIO6 方式,UART 編程示例,UART工作原理 UART控制寄存器介紹
7、UART編程實(shí)現(xiàn),需要掌握的內(nèi)容,如何設(shè)定UART的波特率,奇偶校驗(yàn)位和停止位? UART的接受發(fā)送是如何實(shí)現(xiàn)? UART接收和發(fā)送中斷是如何設(shè)計(jì)?,UART工作原理,W90P710的異步串口通信模塊包含4個(gè)UART模塊和相關(guān)的邏輯電路 通用異步收發(fā)器(UART)將計(jì)算機(jī)外部來(lái)的串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)。從UART接收引進(jìn)(SIN)得到的字符位被相繼地移入接收FIFO。 UART也可以將由計(jì)算機(jī)內(nèi)部傳送過(guò)來(lái)的并行數(shù)據(jù)轉(zhuǎn)換為輸出的串行數(shù)據(jù)流。這些輸出字符被驅(qū)動(dòng)程序?qū)懭氚l(fā)送FIFO,然后再被依次移到UART發(fā)送引腳(SOUT)。,W90P710的UART功能,W90P710的異步串行通信模塊包含4個(gè)
8、UART模塊和相關(guān)的邏輯電路。,UART工作原理,UART工作原理,通用異步收發(fā)器(UART)將計(jì)算機(jī)外部來(lái)的串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)。從UART接收引腳(SIN)得到的字符位被相繼地移入接收FIFO。驅(qū)動(dòng)程序通過(guò)讀取接收FIFO獲得輸入的字符。 UART也可以將由計(jì)算機(jī)內(nèi)部傳送過(guò)來(lái)的并行數(shù)據(jù)轉(zhuǎn)換為輸出的串行數(shù)據(jù)流。這些輸出字符被驅(qū)動(dòng)程序?qū)懭氚l(fā)送FIFO,然后再被依次移到UART發(fā)送引腳(SOUT)。,UART的控制寄存器,UART的接收和發(fā)送寄存器,UART波特率的設(shè)置,波特率 = 晶振器時(shí)鐘信號(hào) / (16 (波特率除數(shù) + 2),UART,數(shù)據(jù)位,校驗(yàn)位和停止位的設(shè)置,UART中斷功能的設(shè)
9、置,接收中斷,發(fā)送中斷,狀態(tài)錯(cuò)誤中斷,UART中斷發(fā)生,識(shí)別接收和發(fā)送中斷,狀態(tài)錯(cuò)誤中斷,接收中斷(常用),接收超時(shí)中斷,發(fā)送中斷(常用),UART 緩沖(FIFO)控制,例7.4:編寫(xiě)一段C 語(yǔ)言源程序,以中斷方式實(shí)現(xiàn)通過(guò)PC 與目標(biāo)板進(jìn)行串口通信,完成控制LED1LED8 指示燈狀態(tài)的功能。 將GPIO5 和GPIO6 引腳配置為UART0 模式,通過(guò)PC 上的超級(jí)終端程序向UART0 口送入“L”或“R”的字符,程序通過(guò)判斷從UART0 口接收到的字符是“L”或“R”來(lái)決定控制LED1 LED8 以流水燈方式閃亮的運(yùn)行方向。,UART工程,七種異常向量表,32種中斷向量表,以及完成異常發(fā)
10、生到進(jìn)入C語(yǔ)言函數(shù)的流程,及異常返回,ARM的啟動(dòng)的初始化代碼,包括各種異常模式堆棧的初始化或內(nèi)存重映射等.最終切到用戶模式后,進(jìn)入主函數(shù)(main),各種異?;蛑袛嗟腃語(yǔ)言函數(shù),所有的31個(gè)中斷功能函數(shù)實(shí)現(xiàn).,UART功能子函數(shù),EBI功能子函數(shù),主函數(shù)循環(huán),實(shí)現(xiàn)流程,UART初始化 UART接收的實(shí)現(xiàn) UART發(fā)送的實(shí)現(xiàn) INT8 rcv_buf100 = 0; / UART0數(shù)據(jù)接收緩沖區(qū) INT8 sen_buf100 = 0; / UART0數(shù)據(jù)發(fā)送緩沖區(qū) INT8 rcv_num = 0; /接收計(jì)數(shù) INT8 send_num = 0; /發(fā)送計(jì)數(shù) INT8 strlenth=0
11、;,UART通訊主程序,set.datab = 8; set.stopb = 1; set.parity = 0; Uart0Init(115200, set); / 串口初始化 while (1) if(rcv_bufrcv_num-1 = 0 x0D) / 判斷接收新數(shù)據(jù)是否結(jié)束 if(rcv_buf0 != R ,UART通訊主程序,if(roll_flag =ROLL_LEFT) / LED 向左滾動(dòng) led_num+; if(led_num = 8) led_num = 0; Set_EBILED(0 x80led_num); / 給LED 發(fā)數(shù)據(jù) Delay(1000000); i
12、f(roll_flag =ROLL_RIGHT) / LED 向右滾動(dòng) led_num+; if(led_num=8) led_num = 0; Set_EBILED(0 x01led_num); / 給LED 發(fā)數(shù)據(jù) Delay(1000000); return 0; ,UART初始化,1. 通過(guò)設(shè)置寄存器UART_DLL設(shè)置波特率除數(shù)低位 ,通過(guò)設(shè)置寄存器UART_DLM設(shè)置波特率除數(shù)高位 2 通過(guò)設(shè)置寄存器UART_LCR設(shè)置奇偶校驗(yàn)位、資料位和停止位 3 通過(guò)設(shè)置寄存器UART_FCR的來(lái)幾個(gè)字節(jié)產(chǎn)生接受中斷 4 打開(kāi)寄存器UART_IER的接收器數(shù)據(jù)就緒中斷、發(fā)送保持寄存器為空時(shí)中斷
13、和接收線路狀態(tài)變化中斷.,UART初始化(1),INT8 Uart0Init (INT32 baud, UARTMODE set) INT32 Divisor; outpw(REG_GPIO_CFG5,0 x05); / 設(shè)置I/O連接到UART0 outpw(REG_GPIO_DIR5,0 x30000); / 設(shè)置RX0,TX0引腳上拉 outpw(REG_UART0_FCR,0 x01); / 使能FIFO,并設(shè)置觸發(fā)點(diǎn)為1字節(jié) outpw(REG_UART0_IER,0 x01); / 允許接收中斷,UART初始化(2),/* 設(shè)置串口波特率 */ outpw(REG_UART0_LC
14、R,0 x80); / DLAB = 1 此時(shí)可存取除數(shù)因子寄存器REG_UART_LSB_0和REG_UART_MSB_0 Divisor = (APB_SYSTEM_CLOCK 4) / baud); if(APB_SYSTEM_CLOCK % (baud * 16) (baud * 16) / 2) Divisor+; Divisor -= 2; outpw(REG_UART0_LSB,(INT8)Divisor); outpw(REG_UART0_MSB,(INT8)(Divisor 8);,UART初始化(3),/* 設(shè)置串口模式 */ Divisor = set.datab - 5
15、; / 設(shè)置字長(zhǎng) if(set.stopb = 2) Divisor |= 0 x04; / 判斷是否為2位停止位 if(set.parity != 0) set.parity = set.parity - 1; Divisor |= 0 x08; /* 設(shè)置奇偶校驗(yàn) */ Divisor |= set.parity 4; / 設(shè)置奇偶校驗(yàn) outpw(REG_UART0_LCR,Divisor); / DLAB = 0 此時(shí)可存取接收緩沖器(RBR),發(fā)送保持寄存器(THR)和中斷使能寄存器(IER),UART初始化(4),/* 使能UART0中斷 */ outpw(REG_AIC_SCR9
16、,0 x41); / 設(shè)置UART0中斷優(yōu)先級(jí)為IRQ第一級(jí)中斷 outpw(REG_AIC_MECR,0 x200); / 使能串口中斷 return (1); ,UART中斷的實(shí)現(xiàn)(接收),*/ void UART0_Handler(void) INT8 m=0; if(inpw(REG_UART0_IIR) ,UART中斷的實(shí)現(xiàn)(發(fā)送),else if(inpw(REG_UART0_IIR) / 如果發(fā)送結(jié)束則關(guān)發(fā)送中斷 ,UART發(fā)送函數(shù),void uart0Write(INT8 *string) INT8 lenth; strlenth = strlen(char *)string)
17、; / strlenth為一全局變量將在中斷服務(wù)中用到 for(lenth = 0; lenth strlenth; lenth+) sen_buflenth = *string+; outpw(REG_UART0_TX,sen_buf0); / 發(fā)送第一個(gè)數(shù)據(jù) outpw(REG_UART0_IER,0 x03); / 允許接收中斷和發(fā)送中斷 ,使用EBI總線外擴(kuò)led,控制采用數(shù)據(jù)總線鎖存的驅(qū)動(dòng)方式,CPU 的數(shù)據(jù)總線低8 位連接到鎖存器74HC273 的信號(hào)輸入端,CPU 外部總線接口(EBI)的nECS0 片選信號(hào)連接到鎖存器的鎖存控制信號(hào),這樣當(dāng)CPU 訪問(wèn)BANK0 的任一地址空間
18、時(shí),數(shù)據(jù)總線低8 位的數(shù)據(jù)就將被鎖存器鎖存后輸出,作為控制8 個(gè)LED 燈的發(fā)光狀態(tài)的控制信號(hào),使EBI 的BANK0 地址空間為0 x0900 00000 x093F FFFF。往這個(gè)地址空間的任一地址寫(xiě)0 xFF,8 個(gè)LED 燈都滅;寫(xiě)0 x00,則8 個(gè)LED 燈都點(diǎn)亮。,外擴(kuò)I/O BANK配置寄存器,基地址為EXT0CON 的31:19左移18,相當(dāng)把低19位清0,整個(gè)數(shù)右移1位; 0 x02040084的 基地址為多少?,4M開(kāi)始的地址應(yīng)該為什么數(shù)?,EXTCON的初始化,及LED控制,#define EBI_BA 0 xFFF01000 /* EBI Control */ #d
19、efine REG_EXT0CON (EBI_BA+0 x018) /* External I/O 0 control */ #define EBI_EXT0_VALUE 0 xF0078003 #define EBILED_ADDRESS 0 x78000000 #define readb(addr) (*(UINT8 volatile *)(addr) #define writeb(addr,x) (*(UINT8 volatile *)(addr) = (UINT8 volatile)x void Init_EBILED(INT32 Value) outpw(REG_EXT0CON, E
20、BI_EXT0_VALUE); Set_EBILED(Value); void Set_EBILED(INT32 Value) writeb(EBILED_ADDRESS, Value); ,流水燈功能的實(shí)現(xiàn),if(roll_flag =ROLL_LEFT) / LED 向左滾動(dòng) led_num+; if(led_num = 8) led_num = 0; Set_EBILED(0 x80led_num); / 給LED 發(fā)數(shù)據(jù) Delay(1000000); if(roll_flag =ROLL_RIGHT) / LED 向右滾動(dòng) led_num+; if(led_num=8) led_nu
21、m = 0; Set_EBILED(0 x01led_num); / 給LED 發(fā)數(shù)據(jù) Delay(1000000); ,第六章 部件工作原理和編程示例,GPIO編程示例 UART編程示例 TIMER編程示例,定時(shí)器功能設(shè)計(jì),定時(shí)器是如何定時(shí)? 如何設(shè)計(jì)定時(shí)器的分頻? 定時(shí)中斷的設(shè)計(jì)?,定時(shí)器功能,W90P710計(jì)時(shí)器模塊包括2個(gè)信道,TIMER0和TIMER1,允許用戶容易地實(shí)現(xiàn)一個(gè)計(jì)數(shù)計(jì)劃。每個(gè)信道有獨(dú)立的時(shí)鐘資源。輸入時(shí)鐘被一個(gè)8bit分頻器分頻并且隨后被一個(gè)24bit減計(jì)數(shù)器引用。當(dāng)計(jì)數(shù)器減數(shù)到0時(shí),如果中斷啟動(dòng)了的話定時(shí)器將聲明一個(gè)中斷請(qǐng)求。一個(gè)普通的軟件計(jì)數(shù)器計(jì)劃是用來(lái)設(shè)置一個(gè)軟件
22、計(jì)數(shù)器,并在每一個(gè)中斷發(fā)生時(shí)加1給它。 一個(gè)普通的定時(shí)器控制器有以下幾個(gè)特征: 與AMBA APB接口兼容 兩個(gè)帶一個(gè)8bit分頻計(jì)數(shù)器/24bit減計(jì)數(shù)器和一個(gè)中斷申請(qǐng)的信道 對(duì)每個(gè)信道的獨(dú)立時(shí)鐘資源 最大不中斷時(shí)間 = (1 / 25 MHz) * (256) * (224), if TCLK = 25 MHz,定時(shí)器的工作方式,在使能計(jì)數(shù)器中斷前,驅(qū)動(dòng)應(yīng)該設(shè)置操作模式、分頻器和計(jì)數(shù)器。定時(shí)器支持一次性模式、周期模式和翻轉(zhuǎn)模式給用戶來(lái)執(zhí)行計(jì)數(shù)計(jì)劃。 在一次性模式下,中斷信號(hào)一旦被產(chǎn)生將不會(huì)再次產(chǎn)生除非定時(shí)器以后被重新使能。 在周期模式下,中斷信號(hào)被周期性地產(chǎn)生。 在翻轉(zhuǎn)模式下,中斷信號(hào)在每個(gè)50%周期由低到高或由高到低轉(zhuǎn)換時(shí)被產(chǎn)生。,定時(shí)器邏輯框圖,例7.5:編寫(xiě)一段C 語(yǔ)言源程序,實(shí)現(xiàn)通過(guò)TIMER0 中斷,控制LED1 有規(guī)律亮滅的功能。,定時(shí)器產(chǎn)生中斷間隔的設(shè)定,定時(shí)器中斷的頻率取決于以下等式: Freq. = Crystal clock / (pre-scaler+1) * counter) 對(duì)于W90P710,晶振時(shí)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 計(jì)量宣貫培訓(xùn)制度
- 行政人事部的制度
- 養(yǎng)老機(jī)構(gòu)院部制度
- 2025年高1上學(xué)期-地理期末模擬卷(新高考通15+4)含答案
- 2026中國(guó)航空工業(yè)集團(tuán)有限公司華東審計(jì)中心崗位招聘18人參考考試試題附答案解析
- 2026四川宜賓翠屏產(chǎn)業(yè)創(chuàng)新發(fā)展有限公司第一批員工招聘2人參考考試試題附答案解析
- 2026上半年昭通學(xué)院招聘碩士研究生26人參考考試題庫(kù)附答案解析
- 2026廣東深圳市龍崗區(qū)婦幼保健院招聘142人(2026年第一批次)備考考試題庫(kù)附答案解析
- 2026江蘇蘇州大學(xué)科研助理崗位招聘7人參考考試題庫(kù)附答案解析
- 2026廣東中山市公安局橫欄分局輔警招聘9人參考考試題庫(kù)附答案解析
- 2026貴州省省、市兩級(jí)機(jī)關(guān)遴選公務(wù)員357人考試備考題庫(kù)及答案解析
- 兒童心律失常診療指南(2025年版)
- 北京通州產(chǎn)業(yè)服務(wù)有限公司招聘?jìng)淇碱}庫(kù)必考題
- 2026年基金從業(yè)資格證考試題庫(kù)500道含答案(完整版)
- 2025年中國(guó)礦產(chǎn)資源集團(tuán)所屬單位招聘筆試參考題庫(kù)附帶答案詳解(3卷)
- DB32/T+4396-2022《勘察設(shè)計(jì)企業(yè)質(zhì)量管理標(biāo)準(zhǔn)》-(高清正版)
- 臺(tái)州市街頭鎮(zhèn)張家桐村調(diào)研報(bào)告
- 壓力排水管道安裝技術(shù)交底
- 電梯檢驗(yàn)安全導(dǎo)則
- 糖代謝紊亂生物化學(xué)檢驗(yàn)
- 科技基礎(chǔ)性工作專項(xiàng)項(xiàng)目科學(xué)數(shù)據(jù)匯交方案編制
評(píng)論
0/150
提交評(píng)論