版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ARM通用定时器解析回顾教学内容1、定时器概述2、定时器库函数3、定时器编程实例4、看门狗概述5、看门狗应用回顾隔2秒(在循环中使用延时函数实现),向PC机发送“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 通用定时器(Timer) 8962集成有 4 个通用定时器General-Purpose Timer Module,GPTM,分别称为 Timer0、Timer1、Timer2 和 Timer3。 每个 Timer 模块都可以配置为一个 32 位定时器或一个 32 位 RTC 定时器用于捕获;也可以拆分为两个16 位的定时/计数器 TimerA 和 TimerB。 每个 Timer 模块可以被配置为独立运行的定时器、事件计数器或 PWM。Timer 总体特性通用定时器(Timer)Timer 功能构造图通用定时器(Timer)关于定时器的几个概念增计数与减计数形式以定时1000
3、S 为例,假设8962每秒 计数一次,如何实现实时?通用定时器(Timer)关于定时器的几个概念硬件定时器与软件定时器通用定时器(Timer)关于定时器的几个概念单次触发与周期触发连续的单次触发等同于周期触发!通用定时器(Timer)关于定时器的几个概念16位定时器与32位定时器16位定时器 最大初值 0 xffff32位定时器 最大初值 0 xffff ffff 两个16位定时器级联为32位定时器,而32位定时器可以拆分为两个16位定时器!1通用定时器(Timer)关于定时器的几个概念16位输入边沿计数捕获Count 用于计数, 信号的频率是多少?通用定时器(Timer)关于定时器的几个概念
4、16位输入边沿定时捕获信号的频率是多少?或者说它的周期是多少?通用定时器(Timer)关于定时器的几个概念16位PWM16位PWM的用处在哪里?通用定时器(Timer) #define SysCtlPeriEnable SysCtlPeripheralEnable SysCtlPeriEnable(SYSCTL_PERIPH_TIMERn); Timer 库函数使能通用定时器(Timer)Timer 库函数 配置void TimerConfigure(unsigned long ulBase, unsigned long ulConfig)ulConfig:Timer模块的配置 在32位形式下
5、应当取以下值之一: TIMER_CFG_32_BIT_OS /32位单次触发定时器 TIMER_CFG_32_BIT_PER /32位周期定时器 TIMER_CFG_32_RTC /32位RTC 定时器 实例:配置Timer0为32位单次触发定时器 TimerConfigure(TIMER0_BASE, TIMER_CFG_32_BIT_OS); 通用定时器(Timer)Timer 库函数 配置void TimerConfigure(unsigned long ulBase, unsigned long ulConfig)在16位形式下,配置 TimerA 的方法是参数 ulConfig 先取
6、值 TIMER_CFG_16_BIT_PAIR 再与以下值之一进展“或运算的组合形式: TIMER_CFG_A_ONE_SHOT /TimerA为单次触发定时器 TIMER_CFG_A_PERIODIC /TimerA为周期定时器 TIMER_CFG_A_CAP_COUNT /TimerA为边沿事件计数器 TIMER_CFG_A_CAP_TIME /TimerA为边沿事件定时器 TIMER_CFG_A_PWM /TimerA为PWM输出 在Timer0当中,配置TimerA为单次触发定时器不配置TimerB TimerConfigure(TIMER0_BASE, TIMER_CFG_16_BI
7、T_PAIR | TIMER_CFG_A_ONE_SHOT); 假设要求配置TimerB,又该如何处置?通用定时器(Timer)Timer 库函数 配置void TimerConfigure(unsigned long ulBase, unsigned long ulConfig)配置 TimerB 的方法是参数 ulConfig 先取值 TIMER_CFG_16_BIT_PAIR 再与以下值之一进展“或运算的组合形式: TIMER_CFG_B_ONE_SHOT /TimerB为单次触发定时器 TIMER_CFG_B_PERIODIC /TimerB为周期定时器 TIMER_CFG_B_CAP
8、_COUNT /TimerB为边沿事件计数器 TIMER_CFG_B_CAP_TIME /TimerB为边沿事件定时器 TIMER_CFG_B_PWM /TimerB为PWM输出 在Timer0当中,配置TimerB为单次触发定时器不配置TimerA TimerConfigure(TIMER0_BASE, TIMER_CFG_16_BIT_PAIR | TIMER_CFG_B_ONE_SHOT); 通用定时器(Timer)函数名称TimerLoadSet( )功能设置Timer的装载值原型void TimerLoadSet(unsigned long ulBase, unsigned long
9、 ulTimer, unsigned long ulValue)参数ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH ulValue:32位装载值(32位模式)或16位装载值(16位模式)库函数装载初值通用定时器(Timer)TimerLoadSet(TIMER0_BASE, TIMER_A, 9000000UL); /设置32位Timer0初值,定时1.5s 主频6M 注意: Timer 模块的功能在总体上可以分成 32 位形式和 16 位形式两大类。在 32 位形式下,对 Timer 的各项操作,如装载初值、运行控制、中断控制等,都用对 Timer
10、A的操作作为总体上的 32 位控制。 库函数装载初值通用定时器(Timer)库函数运行控制函数名称TimerEnable( )功能使能Timer计数(即启动Timer)原型void TimerEnable(unsigned long ulBase, unsigned long ulTimer)参数ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3) ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH 函数名称TimerDisable( )功能禁制Timer计数(即停止Timer)原型void TimerDisable(un
11、signed long ulBase, unsigned long ulTimer)参数ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3) ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH 通用定时器(Timer)库函数中断控制函数名称TimerIntDisable( )功能禁止Timer的中断模块原型void TimerIntDisable(unsigned long ulBase, unsigned long ulIntFlags) 参数ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2
12、或3) ulIntFlags:被禁止的中断源,取值与中断使能当中的参数ulIntFlags相同 返回无通用定时器(Timer)库函数中断控制函数名称TimerIntEnable( )功能使能Timer的中断原型void TimerIntEnable(unsigned long ulBase, unsigned long ulIntFlags) 参数ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3) ulIntFlags:被使能的中断源,应当取下列值之一或者它们之间的任意“或运算”组合形式: TIMER_TIMA_TIMEOUT /TimerA超时中断 TIME
13、R_CAPA_MATCH /TimerA捕获模式匹配中断 TIMER_CAPA_EVENT /TimerA捕获模式边沿事件中断 TIMER_TIMB_TIMEOUT /TimerB超时中断 TIMER_CAPB_MATCH /TimerB捕获模式匹配中断 TIMER_CAPB_EVENT /TimerB捕获模式边沿事件中断 TIMER_RTC_MATCH /RTC匹配中断 通用定时器(Timer)库函数中断控制函数名称TimerIntStatus( )功能获取当前Timer的中断状态原型unsigned long TimerIntStatus(unsigned long ulBase, tBo
14、olean bMasked) 参数ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3) bMasked:一般取值true 返回中断状态,数值与中断使能表的参数ulIntFlags相同通用定时器(Timer)库函数中断控制函数名称TimerIntClear( )功能清除Timer的中断原型void TimerIntClear(unsigned long ulBase, unsigned long ulIntFlags) 参数ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3)ulIntFlags:被清除的中断源,取值与中断使能表中的
15、参数相同 通用定时器(Timer)实例:32位单次触发 采用定时器timer0 的32位单次触发形式,触发条件是 检测到KEY按下时;定时器装置初值秒;同时使能超时中断,在中断效劳程序中翻转 LED亮灭状态。通用定时器(Timer)实例:32位单次触发#include “systemInit.h /工作目录#include /系统目录 必须添加/ 定义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键连接通用定时器(Timer)实例:32位单次触发 clockInit(); /时钟初始化:晶振,6MHz SysCtlPeriEnable(LED_PERIPH); /使能LED所在的GPIO端口 GPIOPinTypeOut(LED_PORT, LED_PIN); /设置LED所在管脚为输出 GPIOPinWrite(LED_PORT, LED_PIN, 1 2); /熄灭LED SysCtlPeriEnable(
17、KEY_PERIPH); /使能KEY所在的GPIO端口 GPIOPinTypeIn(KEY_PORT, KEY_PIN); /设置KEY所在管脚为输入 SysCtlPeriEnable(SYSCTL_PERIPH_TIMER0); /使能Timer模块 TimerConfigure(TIMER0_BASE, TIMER_CFG_32_BIT_OS); /配置 Timer0为32位单次触发通用定时器(Timer)实例:32位单次触发 TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT); /使能Timer超时中断 IntEnable(INT_TIMER
18、0A); /使能Timer中断 IntMasterEnable(); /使能处理器中断 为什么 IntEnable(INT_TIMER0A),而不是IntEnable(INT_TIMER0)?通用定时器(Timer)实例:32位单次触发 for (;) if (GPIOPinRead(KEY_PORT, KEY_PIN) = 0 x00) /假设复位时按下KEY SysCtlDelay(10 * (TheSysClock / 3000); /延时,消除按键抖动 while (GPIOPinRead(KEY_PORT, KEY_PIN) = 0 x00); /等待按键抬起 SysCtlDelay
19、(10 * (TheSysClock / 3000); /延时,消除松键抖动 TimerLoadSet(TIMER0_BASE, TIMER_A, 9000000UL); /设置Timer初值,定时 TimerEnable(TIMER0_BASE, TIMER_A); /使能Timer计数 GPIOPinWrite(LED_PORT, LED_PIN, 0 x00); /点亮LED,定时开场 通用定时器(Timer)实例:32位单次触发void Timer0A_ISR(void) unsigned char ucVal; unsigned long ulStatus; ulStatus = T
20、imerIntStatus(TIMER0_BASE, true); /获取当前中断状态 TimerIntClear(TIMER0_BASE, ulStatus); /去除全部中断状态 if (ulStatus & TIMER_TIMA_TIMEOUT) /假设是超时中断 ucVal = GPIOPinRead(LED_PORT, LED_PIN); /反转LED GPIOPinWrite(LED_PORT, LED_PIN, ucVal); 通用定时器(Timer)实例:32位周期触发 采用定时器timer0 的32位周期触发形式,触发条件无;定时器装置初值秒;同时使能超时中断,在中断效劳程序
21、中翻转 LED亮灭状态。通用定时器(Timer)实例:32位周期触发#include “systemInit.h /工作目录#include /系统目录 必须添加/ 定义LED#define LED_PERIPH SYSCTL_PERIPH_GPIOF#define LED_PORT GPIO_PORTF_BASE#define LED_PIN GPIO_PIN_2通用定时器(Timer)实例:32位周期触发 clockInit(); /时钟初始化:晶振,6MHz SysCtlPeriEnable(LED_PERIPH); /使能LED所在的GPIO端口 GPIOPinTypeOut(LED_
22、PORT, LED_PIN); /设置LED所在管脚为输出通用定时器(Timer)实例:32位周期触发 SysCtlPeriEnable(SYSCTL_PERIPH_TIMER0); /使能Timer模块 TimerConfigure(TIMER0_BASE, TIMER_CFG_32_BIT_PER); /配置Timer为32位周期定时器 TimerLoadSet(TIMER0_BASE, TIMER_A, 9000000UL); /设置Timer初值,定时1.5s 通用定时器(Timer)实例:32位周期触发 TimerIntEnable(TIMER0_BASE, TIMER_TIMA_T
23、IMEOUT); /使能Timer超时中断 IntEnable(INT_TIMER0A); /使能Timer中断 IntMasterEnable(); /使能处理器中断 TimerEnable(TIMER0_BASE, TIMER_A); /使能Timer计数 通用定时器(Timer)实例:32位周期触发 void Timer0A_ISR(void) unsigned char ucVal; unsigned long ulStatus; ulStatus = TimerIntStatus(TIMER0_BASE, true); /读取中断状态 TimerIntClear(TIMER0_BAS
24、E, ulStatus); /去除中断状态,重要! if (ulStatus & TIMER_TIMA_TIMEOUT) /假设是Timer超时中断 ucVal = GPIOPinRead(LED_PORT, LED_PIN); /反转LED GPIOPinWrite(LED_PORT, LED_PIN, ucVal); 看门狗概述 watchdog,全称watchdog timer,中文名称叫做“看门狗。1、一种定时器2、超时中断可以引起系统重起信号Reset Signal看门狗概述 看门狗的作用就是当系统“跑飞而进入死循环时,恢复系统的运行。看门狗概述 设本系统程序完好运行一周期的时间是T
25、p,看门狗的定时周期为Ti,TiTp,在程序运行一周期后就“喂狗一次,只要程序正常运行,定时器就不会溢出,假设由于干扰等原因使系统不能喂狗,定时器将在Ti 时刻溢出,引发系统复位,使系统得以重新运行,从而起到监控作用。8962看门狗概述8962的看门狗定时器模块有以下特性: 带可编程装载存放器的 32 位倒计数器 二次超时特性 带中断屏蔽的可编程中断产生逻辑 软件跑飞时由锁定存放器提供保护 在调试过程中用户可控制看门狗暂停 库函数函数名称WatchdogEnable( )功能使能看门狗定时器原型void WatchdogEnable(unsigned long ulBase)参数ulBase:
26、看门狗定时器模块的基址,取值WATCHDOG_BASE库函数函数名称WatchdogResetEnable( )功能使能看门狗定时器的复位功能原型void WatchdogResetEnable(unsigned long ulBase)参数ulBase:看门狗定时器模块的基址,取值WATCHDOG_BASE函数名称WatchdogResetDisable( )功能禁止看门狗定时器的复位功能原型void WatchdogResetDisable(unsigned long ulBase) 参数ulBase:看门狗定时器模块的基址,取值WATCHDOG_BASE制止看门狗复位功能时,看门狗可以作
27、为一般定时器使用!库函数函数名称WatchdogStallEnable( )功能允许在调试过程中暂停看门狗定时器原型void WatchdogStallEnable(unsigned long ulBase)参数ulBase:看门狗定时器模块的基址,取值WATCHDOG_BASE库函数函数名称WatchdogReloadSet( )功能设置看门狗定时器的重装值原型void WatchdogReloadSet(unsigned long ulBase, unsigned long ulLoadVal) 参数ulBase:看门狗定时器模块的基址,取值WATCHDOG_BASE ulLoadVal:32位装载值 库函数函数名称WatchdogLock( )功能使能看门狗定时器的锁定机制原型void WatchdogLock(unsigned long ulBase) 参数ulBase:看门狗定时器模块的基址,取值WATCHD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 水利厅网上审批工作制度
- 水电过户审批制度
- 汽车修理与维护审批制度
- 涉河事项审批制度
- 深圳市改革政府审批制度
- 湘西州审批制度
- 烟酒领用审批制度
- 物业动火审批制度规定
- 2025重庆机场集团有限公司园招聘35人笔试历年参考题库附带答案详解
- 2025福建石狮园区开发建设有限公司招聘5人笔试历年参考题库附带答案详解
- 第三方检测公司管理评审报告范文
- 船员机工培训知识课件
- 答案时代:AI顾问式电商崛起
- 2025年教师招聘师德师风考试试题(附答案)
- DB15T 1327-2018 旅行社服务质量诚信等级评价与划分
- 山东省建筑工程概算价目表(2020版)
- 沃尔玛仓库管理制度
- 2025年度卫生招聘考试(医学影像技术专业)新版真题卷(附详细解析)
- 中医穴位养生课件
- 内科诊所规章制度范本
- DB32/T 3563-2019装配式钢混组合桥梁设计规范
评论
0/150
提交评论