




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、ARM通用定時(shí)器解析回顧教學(xué)內(nèi)容1、定時(shí)器概述2、定時(shí)器庫函數(shù)3、定時(shí)器編程實(shí)例4、看門狗概述5、看門狗應(yīng)用回顧隔2秒(在循環(huán)中使用延時(shí)函數(shù)實(shí)現(xiàn)),向PC機(jī)發(fā)送“hi, com test ok!For(:) send(“hi, com test ok!); delay(2S)回顧 /初始化 SysTickPeriodSet(12000000UL); SysTickIntEnable(); IntMasterEnable(); SysTickEnable(); /中斷效勞程序void SysTick_ISR(void) /send “com test ok 注意:更改中斷向量表 startup_
2、ewarm.c 通用定時(shí)器(Timer) 8962集成有 4 個(gè)通用定時(shí)器General-Purpose Timer Module,GPTM,分別稱為 Timer0、Timer1、Timer2 和 Timer3。 每個(gè) Timer 模塊都可以配置為一個(gè) 32 位定時(shí)器或一個(gè) 32 位 RTC 定時(shí)器用于捕獲;也可以拆分為兩個(gè)16 位的定時(shí)/計(jì)數(shù)器 TimerA 和 TimerB。 每個(gè) Timer 模塊可以被配置為獨(dú)立運(yùn)行的定時(shí)器、事件計(jì)數(shù)器或 PWM。Timer 總體特性通用定時(shí)器(Timer)Timer 功能構(gòu)造圖通用定時(shí)器(Timer)關(guān)于定時(shí)器的幾個(gè)概念增計(jì)數(shù)與減計(jì)數(shù)形式以定時(shí)1000
3、S 為例,假設(shè)8962每秒 計(jì)數(shù)一次,如何實(shí)現(xiàn)實(shí)時(shí)?通用定時(shí)器(Timer)關(guān)于定時(shí)器的幾個(gè)概念硬件定時(shí)器與軟件定時(shí)器通用定時(shí)器(Timer)關(guān)于定時(shí)器的幾個(gè)概念單次觸發(fā)與周期觸發(fā)連續(xù)的單次觸發(fā)等同于周期觸發(fā)!通用定時(shí)器(Timer)關(guān)于定時(shí)器的幾個(gè)概念16位定時(shí)器與32位定時(shí)器16位定時(shí)器 最大初值 0 xffff32位定時(shí)器 最大初值 0 xffff ffff 兩個(gè)16位定時(shí)器級(jí)聯(lián)為32位定時(shí)器,而32位定時(shí)器可以拆分為兩個(gè)16位定時(shí)器!1通用定時(shí)器(Timer)關(guān)于定時(shí)器的幾個(gè)概念16位輸入邊沿計(jì)數(shù)捕獲Count 用于計(jì)數(shù), 信號(hào)的頻率是多少?通用定時(shí)器(Timer)關(guān)于定時(shí)器的幾個(gè)概念
4、16位輸入邊沿定時(shí)捕獲信號(hào)的頻率是多少?或者說它的周期是多少?通用定時(shí)器(Timer)關(guān)于定時(shí)器的幾個(gè)概念16位PWM16位PWM的用處在哪里?通用定時(shí)器(Timer) #define SysCtlPeriEnable SysCtlPeripheralEnable SysCtlPeriEnable(SYSCTL_PERIPH_TIMERn); Timer 庫函數(shù)使能通用定時(shí)器(Timer)Timer 庫函數(shù) 配置void TimerConfigure(unsigned long ulBase, unsigned long ulConfig)ulConfig:Timer模塊的配置 在32位形式下
5、應(yīng)當(dāng)取以下值之一: TIMER_CFG_32_BIT_OS /32位單次觸發(fā)定時(shí)器 TIMER_CFG_32_BIT_PER /32位周期定時(shí)器 TIMER_CFG_32_RTC /32位RTC 定時(shí)器 實(shí)例:配置Timer0為32位單次觸發(fā)定時(shí)器 TimerConfigure(TIMER0_BASE, TIMER_CFG_32_BIT_OS); 通用定時(shí)器(Timer)Timer 庫函數(shù) 配置void TimerConfigure(unsigned long ulBase, unsigned long ulConfig)在16位形式下,配置 TimerA 的方法是參數(shù) ulConfig 先取
6、值 TIMER_CFG_16_BIT_PAIR 再與以下值之一進(jìn)展“或運(yùn)算的組合形式: TIMER_CFG_A_ONE_SHOT /TimerA為單次觸發(fā)定時(shí)器 TIMER_CFG_A_PERIODIC /TimerA為周期定時(shí)器 TIMER_CFG_A_CAP_COUNT /TimerA為邊沿事件計(jì)數(shù)器 TIMER_CFG_A_CAP_TIME /TimerA為邊沿事件定時(shí)器 TIMER_CFG_A_PWM /TimerA為PWM輸出 在Timer0當(dāng)中,配置TimerA為單次觸發(fā)定時(shí)器不配置TimerB TimerConfigure(TIMER0_BASE, TIMER_CFG_16_BI
7、T_PAIR | TIMER_CFG_A_ONE_SHOT); 假設(shè)要求配置TimerB,又該如何處置?通用定時(shí)器(Timer)Timer 庫函數(shù) 配置void TimerConfigure(unsigned long ulBase, unsigned long ulConfig)配置 TimerB 的方法是參數(shù) ulConfig 先取值 TIMER_CFG_16_BIT_PAIR 再與以下值之一進(jìn)展“或運(yùn)算的組合形式: TIMER_CFG_B_ONE_SHOT /TimerB為單次觸發(fā)定時(shí)器 TIMER_CFG_B_PERIODIC /TimerB為周期定時(shí)器 TIMER_CFG_B_CAP
8、_COUNT /TimerB為邊沿事件計(jì)數(shù)器 TIMER_CFG_B_CAP_TIME /TimerB為邊沿事件定時(shí)器 TIMER_CFG_B_PWM /TimerB為PWM輸出 在Timer0當(dāng)中,配置TimerB為單次觸發(fā)定時(shí)器不配置TimerA TimerConfigure(TIMER0_BASE, TIMER_CFG_16_BIT_PAIR | TIMER_CFG_B_ONE_SHOT); 通用定時(shí)器(Timer)函數(shù)名稱TimerLoadSet( )功能設(shè)置Timer的裝載值原型void TimerLoadSet(unsigned long ulBase, unsigned long
9、 ulTimer, unsigned long ulValue)參數(shù)ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH ulValue:32位裝載值(32位模式)或16位裝載值(16位模式)庫函數(shù)裝載初值通用定時(shí)器(Timer)TimerLoadSet(TIMER0_BASE, TIMER_A, 9000000UL); /設(shè)置32位Timer0初值,定時(shí)1.5s 主頻6M 注意: Timer 模塊的功能在總體上可以分成 32 位形式和 16 位形式兩大類。在 32 位形式下,對(duì) Timer 的各項(xiàng)操作,如裝載初值、運(yùn)行控制、中斷控制等,都用對(duì) Timer
10、A的操作作為總體上的 32 位控制。 庫函數(shù)裝載初值通用定時(shí)器(Timer)庫函數(shù)運(yùn)行控制函數(shù)名稱TimerEnable( )功能使能Timer計(jì)數(shù)(即啟動(dòng)Timer)原型void TimerEnable(unsigned long ulBase, unsigned long ulTimer)參數(shù)ulBase:Timer模塊的基址,取值TIMERn_BASE(n為0、1、2或3) ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH 函數(shù)名稱TimerDisable( )功能禁制Timer計(jì)數(shù)(即停止Timer)原型void TimerDisable(un
11、signed long ulBase, unsigned long ulTimer)參數(shù)ulBase:Timer模塊的基址,取值TIMERn_BASE(n為0、1、2或3) ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH 通用定時(shí)器(Timer)庫函數(shù)中斷控制函數(shù)名稱TimerIntDisable( )功能禁止Timer的中斷模塊原型void TimerIntDisable(unsigned long ulBase, unsigned long ulIntFlags) 參數(shù)ulBase:Timer模塊的基址,取值TIMERn_BASE(n為0、1、2
12、或3) ulIntFlags:被禁止的中斷源,取值與中斷使能當(dāng)中的參數(shù)ulIntFlags相同 返回?zé)o通用定時(shí)器(Timer)庫函數(shù)中斷控制函數(shù)名稱TimerIntEnable( )功能使能Timer的中斷原型void TimerIntEnable(unsigned long ulBase, unsigned long ulIntFlags) 參數(shù)ulBase:Timer模塊的基址,取值TIMERn_BASE(n為0、1、2或3) ulIntFlags:被使能的中斷源,應(yīng)當(dāng)取下列值之一或者它們之間的任意“或運(yùn)算”組合形式: TIMER_TIMA_TIMEOUT /TimerA超時(shí)中斷 TIME
13、R_CAPA_MATCH /TimerA捕獲模式匹配中斷 TIMER_CAPA_EVENT /TimerA捕獲模式邊沿事件中斷 TIMER_TIMB_TIMEOUT /TimerB超時(shí)中斷 TIMER_CAPB_MATCH /TimerB捕獲模式匹配中斷 TIMER_CAPB_EVENT /TimerB捕獲模式邊沿事件中斷 TIMER_RTC_MATCH /RTC匹配中斷 通用定時(shí)器(Timer)庫函數(shù)中斷控制函數(shù)名稱TimerIntStatus( )功能獲取當(dāng)前Timer的中斷狀態(tài)原型unsigned long TimerIntStatus(unsigned long ulBase, tBo
14、olean bMasked) 參數(shù)ulBase:Timer模塊的基址,取值TIMERn_BASE(n為0、1、2或3) bMasked:一般取值true 返回中斷狀態(tài),數(shù)值與中斷使能表的參數(shù)ulIntFlags相同通用定時(shí)器(Timer)庫函數(shù)中斷控制函數(shù)名稱TimerIntClear( )功能清除Timer的中斷原型void TimerIntClear(unsigned long ulBase, unsigned long ulIntFlags) 參數(shù)ulBase:Timer模塊的基址,取值TIMERn_BASE(n為0、1、2或3)ulIntFlags:被清除的中斷源,取值與中斷使能表中的
15、參數(shù)相同 通用定時(shí)器(Timer)實(shí)例:32位單次觸發(fā) 采用定時(shí)器timer0 的32位單次觸發(fā)形式,觸發(fā)條件是 檢測(cè)到KEY按下時(shí);定時(shí)器裝置初值秒;同時(shí)使能超時(shí)中斷,在中斷效勞程序中翻轉(zhuǎn) LED亮滅狀態(tài)。通用定時(shí)器(Timer)實(shí)例:32位單次觸發(fā)#include “systemInit.h /工作目錄#include /系統(tǒng)目錄 必須添加/ 定義LED#define LED_PERIPH SYSCTL_PERIPH_GPIOF#define LED_PORT GPIO_PORTF_BASE#define LED_PIN GPIO_PIN_2/ 定義KEY#define KEY_PERIP
16、H SYSCTL_PERIPH_GPIOE#define KEY_PORT GPIO_PORTE_BASE#define KEY_PIN GPIO_PIN_2 /PE2為KEY1鍵連接通用定時(shí)器(Timer)實(shí)例:32位單次觸發(fā) clockInit(); /時(shí)鐘初始化:晶振,6MHz SysCtlPeriEnable(LED_PERIPH); /使能LED所在的GPIO端口 GPIOPinTypeOut(LED_PORT, LED_PIN); /設(shè)置LED所在管腳為輸出 GPIOPinWrite(LED_PORT, LED_PIN, 1 2); /熄滅LED SysCtlPeriEnable(
17、KEY_PERIPH); /使能KEY所在的GPIO端口 GPIOPinTypeIn(KEY_PORT, KEY_PIN); /設(shè)置KEY所在管腳為輸入 SysCtlPeriEnable(SYSCTL_PERIPH_TIMER0); /使能Timer模塊 TimerConfigure(TIMER0_BASE, TIMER_CFG_32_BIT_OS); /配置 Timer0為32位單次觸發(fā)通用定時(shí)器(Timer)實(shí)例:32位單次觸發(fā) TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT); /使能Timer超時(shí)中斷 IntEnable(INT_TIMER
18、0A); /使能Timer中斷 IntMasterEnable(); /使能處理器中斷 為什么 IntEnable(INT_TIMER0A),而不是IntEnable(INT_TIMER0)?通用定時(shí)器(Timer)實(shí)例:32位單次觸發(fā) for (;) if (GPIOPinRead(KEY_PORT, KEY_PIN) = 0 x00) /假設(shè)復(fù)位時(shí)按下KEY SysCtlDelay(10 * (TheSysClock / 3000); /延時(shí),消除按鍵抖動(dòng) while (GPIOPinRead(KEY_PORT, KEY_PIN) = 0 x00); /等待按鍵抬起 SysCtlDelay
19、(10 * (TheSysClock / 3000); /延時(shí),消除松鍵抖動(dòng) TimerLoadSet(TIMER0_BASE, TIMER_A, 9000000UL); /設(shè)置Timer初值,定時(shí) TimerEnable(TIMER0_BASE, TIMER_A); /使能Timer計(jì)數(shù) GPIOPinWrite(LED_PORT, LED_PIN, 0 x00); /點(diǎn)亮LED,定時(shí)開場(chǎng) 通用定時(shí)器(Timer)實(shí)例:32位單次觸發(fā)void Timer0A_ISR(void) unsigned char ucVal; unsigned long ulStatus; ulStatus = T
20、imerIntStatus(TIMER0_BASE, true); /獲取當(dāng)前中斷狀態(tài) TimerIntClear(TIMER0_BASE, ulStatus); /去除全部中斷狀態(tài) if (ulStatus & TIMER_TIMA_TIMEOUT) /假設(shè)是超時(shí)中斷 ucVal = GPIOPinRead(LED_PORT, LED_PIN); /反轉(zhuǎn)LED GPIOPinWrite(LED_PORT, LED_PIN, ucVal); 通用定時(shí)器(Timer)實(shí)例:32位周期觸發(fā) 采用定時(shí)器timer0 的32位周期觸發(fā)形式,觸發(fā)條件無;定時(shí)器裝置初值秒;同時(shí)使能超時(shí)中斷,在中斷效勞程序
21、中翻轉(zhuǎn) LED亮滅狀態(tài)。通用定時(shí)器(Timer)實(shí)例:32位周期觸發(fā)#include “systemInit.h /工作目錄#include /系統(tǒng)目錄 必須添加/ 定義LED#define LED_PERIPH SYSCTL_PERIPH_GPIOF#define LED_PORT GPIO_PORTF_BASE#define LED_PIN GPIO_PIN_2通用定時(shí)器(Timer)實(shí)例:32位周期觸發(fā) clockInit(); /時(shí)鐘初始化:晶振,6MHz SysCtlPeriEnable(LED_PERIPH); /使能LED所在的GPIO端口 GPIOPinTypeOut(LED_
22、PORT, LED_PIN); /設(shè)置LED所在管腳為輸出通用定時(shí)器(Timer)實(shí)例:32位周期觸發(fā) SysCtlPeriEnable(SYSCTL_PERIPH_TIMER0); /使能Timer模塊 TimerConfigure(TIMER0_BASE, TIMER_CFG_32_BIT_PER); /配置Timer為32位周期定時(shí)器 TimerLoadSet(TIMER0_BASE, TIMER_A, 9000000UL); /設(shè)置Timer初值,定時(shí)1.5s 通用定時(shí)器(Timer)實(shí)例:32位周期觸發(fā) TimerIntEnable(TIMER0_BASE, TIMER_TIMA_T
23、IMEOUT); /使能Timer超時(shí)中斷 IntEnable(INT_TIMER0A); /使能Timer中斷 IntMasterEnable(); /使能處理器中斷 TimerEnable(TIMER0_BASE, TIMER_A); /使能Timer計(jì)數(shù) 通用定時(shí)器(Timer)實(shí)例:32位周期觸發(fā) void Timer0A_ISR(void) unsigned char ucVal; unsigned long ulStatus; ulStatus = TimerIntStatus(TIMER0_BASE, true); /讀取中斷狀態(tài) TimerIntClear(TIMER0_BAS
24、E, ulStatus); /去除中斷狀態(tài),重要! if (ulStatus & TIMER_TIMA_TIMEOUT) /假設(shè)是Timer超時(shí)中斷 ucVal = GPIOPinRead(LED_PORT, LED_PIN); /反轉(zhuǎn)LED GPIOPinWrite(LED_PORT, LED_PIN, ucVal); 看門狗概述 watchdog,全稱watchdog timer,中文名稱叫做“看門狗。1、一種定時(shí)器2、超時(shí)中斷可以引起系統(tǒng)重起信號(hào)Reset Signal看門狗概述 看門狗的作用就是當(dāng)系統(tǒng)“跑飛而進(jìn)入死循環(huán)時(shí),恢復(fù)系統(tǒng)的運(yùn)行。看門狗概述 設(shè)本系統(tǒng)程序完好運(yùn)行一周期的時(shí)間是T
25、p,看門狗的定時(shí)周期為Ti,TiTp,在程序運(yùn)行一周期后就“喂狗一次,只要程序正常運(yùn)行,定時(shí)器就不會(huì)溢出,假設(shè)由于干擾等原因使系統(tǒng)不能喂狗,定時(shí)器將在Ti 時(shí)刻溢出,引發(fā)系統(tǒng)復(fù)位,使系統(tǒng)得以重新運(yùn)行,從而起到監(jiān)控作用。8962看門狗概述8962的看門狗定時(shí)器模塊有以下特性: 帶可編程裝載存放器的 32 位倒計(jì)數(shù)器 二次超時(shí)特性 帶中斷屏蔽的可編程中斷產(chǎn)生邏輯 軟件跑飛時(shí)由鎖定存放器提供保護(hù) 在調(diào)試過程中用戶可控制看門狗暫停 庫函數(shù)函數(shù)名稱WatchdogEnable( )功能使能看門狗定時(shí)器原型void WatchdogEnable(unsigned long ulBase)參數(shù)ulBase:
26、看門狗定時(shí)器模塊的基址,取值WATCHDOG_BASE庫函數(shù)函數(shù)名稱WatchdogResetEnable( )功能使能看門狗定時(shí)器的復(fù)位功能原型void WatchdogResetEnable(unsigned long ulBase)參數(shù)ulBase:看門狗定時(shí)器模塊的基址,取值WATCHDOG_BASE函數(shù)名稱WatchdogResetDisable( )功能禁止看門狗定時(shí)器的復(fù)位功能原型void WatchdogResetDisable(unsigned long ulBase) 參數(shù)ulBase:看門狗定時(shí)器模塊的基址,取值WATCHDOG_BASE制止看門狗復(fù)位功能時(shí),看門狗可以作
27、為一般定時(shí)器使用!庫函數(shù)函數(shù)名稱WatchdogStallEnable( )功能允許在調(diào)試過程中暫停看門狗定時(shí)器原型void WatchdogStallEnable(unsigned long ulBase)參數(shù)ulBase:看門狗定時(shí)器模塊的基址,取值WATCHDOG_BASE庫函數(shù)函數(shù)名稱WatchdogReloadSet( )功能設(shè)置看門狗定時(shí)器的重裝值原型void WatchdogReloadSet(unsigned long ulBase, unsigned long ulLoadVal) 參數(shù)ulBase:看門狗定時(shí)器模塊的基址,取值WATCHDOG_BASE ulLoadVal:32位裝載值 庫函數(shù)函數(shù)名稱WatchdogLock( )功能使能看門狗定時(shí)器的鎖定機(jī)制原型void WatchdogLock(unsigned long ulBase) 參數(shù)ulBase:看門狗定時(shí)器模塊的基址,取值WATCHD
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年民間借貸合同模板月息
- 六年級(jí)下冊(cè)數(shù)學(xué)教案-5.2 數(shù)與代數(shù) ︳西師大版
- 二年級(jí)下冊(cè)數(shù)學(xué)教案-4.4勤勞工作-筆算三位數(shù)加減三位數(shù)(一次進(jìn)位、退位) 青島版
- 2025年城鄉(xiāng)結(jié)對(duì)共建協(xié)議書范
- 2025年河北旅游職業(yè)學(xué)院單招職業(yè)適應(yīng)性測(cè)試題庫及答案一套
- 化學(xué)-云南省三校2025屆高三2月高考備考聯(lián)考卷(六)試題和答案
- 2025江西省建筑安全員A證考試題庫及答案
- 2025年鶴崗師范高等專科學(xué)校單招職業(yè)傾向性測(cè)試題庫完整版
- 2025年度個(gè)人股份轉(zhuǎn)讓與員工分紅權(quán)合同模板
- 2025年度企業(yè)數(shù)字化轉(zhuǎn)型技術(shù)顧問合作協(xié)議
- 四環(huán)素類抗菌藥物兒科臨床應(yīng)用專家共識(shí)(2024年版)解讀
- 重點(diǎn)語法清單2024-2025學(xué)年人教版英語八年級(jí)上冊(cè)
- 金屬包裝容器生產(chǎn)數(shù)據(jù)分析考核試卷
- 寵物學(xué)概論課程設(shè)計(jì)
- 2024年全國統(tǒng)一高考數(shù)學(xué)試卷(理科)甲卷含答案
- 排水管網(wǎng)溯源排查項(xiàng)目專項(xiàng)培訓(xùn)
- 譯林牛津版八年級(jí)下冊(cè)英語全冊(cè)課件
- 2024環(huán)氧磨石地坪施工技術(shù)規(guī)程
- 五年級(jí)下冊(cè)小學(xué)數(shù)學(xué)《分?jǐn)?shù)的加法和減法》單元作業(yè)設(shè)計(jì)
- 醫(yī)學(xué)文獻(xiàn)管理制度
- 白塞氏病學(xué)習(xí)課件
評(píng)論
0/150
提交評(píng)論