第八讲-定时器.ppt_第1页
第八讲-定时器.ppt_第2页
第八讲-定时器.ppt_第3页
第八讲-定时器.ppt_第4页
第八讲-定时器.ppt_第5页
免费预览已结束,剩余41页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

内容提要 总体特性功能概述函数讲解举例 8 1总体特性 在LM3S9B96内部通常集成有4个通用定时器模块 General PurposeTimerModule GPTM 分别为Timer0 Timer1 Timer2和Timer3 Timer模块具有非常丰富的功能 32位定时器模式 16位定时器模式 16位输入捕获模式 16位PWM模式 每个Timer模块都可以配置为一个32位定时器 也可以拆分为两个16位的定时 计数器TimerA和TimerB 它们可以被配置为独立运行的定时器 事件计数器或PWM 8 2Timer功能概述 Timer模块的功能在总体上可以分成32位模式和16位模式两大类 在32位模式下 TimerA和TimerB被连在一起形成一个完整的32位计数器 对Timer的各项操作 如装载初值 运行控制 中断控制等 都用对TimerA的操作作为总体上的32位控制 而对TimerB的操作无任何效果 在16位模式下 对TimerA的操作仅对TimerA有效 对TimerB的操作仅对TimerB有效 即对两者的操控是完全独立进行的 8 2 132位单次触发 周期定时器 在这两种模式中 Timer都被配置成一个32位的递减计数器 用法类似 只是单次触发模式只能定时一次 如果需要再次定时则必须重新配置 而周期模式则可以周而复始地定时 除非被关闭 在计数到0 x00000000时 可以输出一个内部的单时钟周期脉冲信号或在软件的控制下触发中断 8 2 216位单次触发 周期定时器 一个32位的Timer可以被拆分为两个单独运行的16位定时 计数器 每一个都可以被配置成16位递减计数器 具体用法跟32位单次触发 周期定时模式类似 不同的是对TimerA和TimerB的操作是分别独立进行的 8 3函数讲解 使能配置与控制计数值的装载与获取运行控制中断控制 8 3 1使能 Timer库函数在使用某个Timer模块之前 应当首先将其使能 方法为 SysCtlPeriEnable SYSCTL PERIPH TIMERn n取0 1 2或3 8 3 2配置与控制 函数TimerConfigure 用来配置Timer的工作模式 函数TimerConfigure 功能 配置Timer模块的工作模式 原型 voidTimerConfigure unsignedlongulBase unsignedlongulConfig ulBase Timer模块的基址 取值TIMERn BASE n为0 1 2或3 ulConfig Timer模块的配置 ulConfig的取值 Timer模块的配置 Timer模块的配置在32位模式下应当取下列值之一 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 配置Timer1为32位周期定时器TimerConfigure TIMER1 BASE TIMER CFG 32 BIT PER 配置Timer2为32位RTC定时器TimerConfigure TIMER2 BASE TIMER CFG 32 RTC 举例 在16位模式下 一个32位的Timer被拆分成两个独立运行的子定时器TimerA和TimerB 配置TimerA的方法是参数ulConfig先取值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输出配置TimerB的方法是参数ulConfig先取值TIMER CFG 16 BIT PAIR再与下列值之一进行 或运算 的组合形式 TIMER CFG B ONE SHOT TimerB为单次触发定时器TIMER CFG B PERIODIC TimerB为周期定时器TIMER CFG B CAP COUNT TimerB为边沿事件计数器TIMER CFG B CAP TIME TimerB为边沿事件定时器TIMER CFG B PWM TimerB为PWM输出 在Timer0当中 配置TimerA为单次触发定时器 不配置TimerB TimerConfigure TIMER0 BASE TIMER CFG 16 BIT PAIR TIMER CFG A ONE SHOT 在Timer0当中 配置TimerB为周期定时器 不配置TimerA TimerConfigure TIMER0 BASE TIMER CFG 16 BIT PAIR TIMER CFG B PERIODIC 在Timer0当中 配置TimerA为单次触发定时器 同时配置TimerB为周期定时器TimerConfigure TIMER0 BASE TIMER CFG 16 BIT PAIR TIMER CFG A ONE SHOT TIMER CFG B PERIODIC 举例 8 3 3计数值的装载与获取 TimerLoadSet TimerEnable TimerLoadGet TimerValueGet TimerLoadSet 函数TimerLoadSet 用来设置Timer的装载值 函数TimerLoadSet 功能 设置Timer的装载值 原型 voidTimerLoadSet unsignedlongulBase unsignedlongulTimer unsignedlongulValue 参数ulBase Timer模块的基址 取值TIMERn BASE n为0 1 2或3 ulTimer 指定的Timer 取值TIMER A TIMER B或TIMER BOTHulValue 32位装载值 32位模式 或16位装载值 16位模式 TimerLoadGet 另外 除了单次触发定时器模式以外 在计数器溢出时会自动重新加载装载值 函数TimerLoadGet 用来获取装载寄存器的值 函数TimerLoadGet 功能 获取Timer的装载值 原型 unsignedlongTimerLoadGet unsignedlongulBase unsignedlongulTimer 参数ulBase Timer模块的基址 取值TIMERn BASE n为0 1 2或3 ulTimer 指定的Timer 取值TIMER A TIMER B或TIMER BOTH返回 32位装载值 32位模式 或16位装载值 16位模式 TimerValueGet 函数TimerValueGet 用来获取当前Timer计数器的值 函数TimerValueGet 功能 获取当前的Timer计数值 原型 unsignedlongTimerValueGet unsignedlongulBase unsignedlongulTimer 参数ulBase Timer模块的基址 取值TIMERn BASE n为0 1 2或3 ulTimer 指定的Timer 取值TIMER A TIMER B或TIMER BOTH返回 当前Timer计数值 在16位输入边沿定时捕获模式下 返回的是捕获值 8 3 4运行控制 函数TimerEnable 用来使能Timer计数器开始计数 而函数TimerDisable 用来禁止计数 TimerEnable 在调用TimerEnable 时会自动把装载值加载到计数器里 以后每输入一个脉冲计数器值就加1或减1 取决于配置的工作模式 而装载寄存器不变 函数TimerEnable 功能 使能Timer计数 即启动Timer 原型 voidTimerEnable unsignedlongulBase unsignedlongulTimer 参数ulBase Timer模块的基址 取值TIMERn BASE n为0 1 2或3 ulTimer 指定的Timer 取值TIMER A TIMER B或TIMER BOTH返回 无 函数TimerDisable 功能 禁止Timer计数 即关闭Timer 原型 voidTimerDisable unsignedlongulBase unsignedlongulTimer 参数ulBase Timer模块的基址 取值TIMERn BASE n为0 1 2或3 ulTimer 指定的Timer 取值TIMER A TIMER B或TIMER BOTH返回 无 5 中断控制 Timer模块有多个中断源 有超时中断 匹配中断和捕获中断等 函数TimerIntEnable 和TimerIntDisable 用来使能或禁止一个或多个Timer中断源 函数TimerIntClear 用来清除一个或多个Timer中断状态 函数TimerIntStatus 用来获取Timer的全部中断状态 函数TimerIntEnable 功能 使能Timer的中断 原型 voidTimerIntEnable unsignedlongulBase unsignedlongulIntFlags ulBase Timer模块的基址 取值TIMERn BASE n为0 1 2或3 ulIntFlags 被使能的中断源 应当取下列值之一或者它们之间的任意 或运算 组合形式 TIMER TIMA TIMEOUT TimerA超时中断TIMER CAPA MATCH TimerA捕获模式匹配中断TIMER CAPA EVENT TimerA捕获模式边沿事件中断TIMER TIMB TIMEOUT TimerB超时中断TIMER CAPB MATCH TimerB捕获模式匹配中断TIMER CAPB EVENT TimerB捕获模式边沿事件中断TIMER RTC MATCH RTC匹配中断 函数TimerIntDisable 功能 禁止Timer的中断原型 voidTimerIntDisable unsignedlongulBase unsignedlongulIntFlags 参数ulBase Timer模块的基址 取值TIMERn BASE n为0 1 2或3 ulIntFlags 被禁止的中断源 函数TimerIntClear 功能 清除Timer的中断 原型 voidTimerIntClear unsignedlongulBase unsignedlongulIntFlags 参数ulBase Timer模块的基址 取值TIMERn BASE n为0 1 2或3 ulIntFlags 被清除的中断源 函数TimerIntStatus 功能 获取当前Timer的中断状态 原型 unsignedlongTimerIntStatus unsignedlongulBase tBooleanbMasked 参数ulBase Timer模块的基址 取值TIMERn BASE n为0 1 2或3 bMasked 如果需要获取的是原始的中断状态 则取值false 如果需要获取的是屏蔽的中断状态 则取值true返回 中断状态 8 5举例 include inc hw ints h include inc hw memmap h include inc hw types h include driverlib interrupt h include driverlib sysctl h include driverlib timer h include driverlib gpio h include grlib grlib h include drivers set pinout h voiddelay intd 延时函数 for d d voidTimer0IntHandler void TimerIntClear TIMER0 BASE TIMER TIMA TIMEOUT GPIOPinWrite GPIO PORTF BASE GPIO PIN 3 GPIO PIN 3 delay 2000000 延时GPIOPinWrite GPIO PORTF BASE GPIO PIN 3 GPIO PIN 3 delay 2000000 延时 intmain void SysCtlClockSet SYSCTL SYSDIV 1 SYSCTL USE OSC SYSCTL OSC MAIN SYSCTL XTAL 16MHZ PinoutSet GPIOPadConfigSet GPIO PORTF BASE GPIO PIN 3 GPIO STRENGTH 4MA GPIO PIN TYPE STD GPIODirModeSet GPIO PORTF BASE GPIO PIN 3 GPIO DIR MODE OUT GPIOPinWrite GPIO PORTF BASE GPIO PIN 3 GPIO PIN 3 SysCtlPeripheralEnable SYSCTL PERIPH TIMER0 IntMasterEnable TimerConfigure TIMER0 BASE TIMER CFG 32 BIT OS TimerLoadSet TIMER0 BASE TIMER A 2 SysCtlClockGet IntEnable INT TIMER0A TimerIntEnable TIMER0 BASE TIMER TIMA TIMEOUT TimerEnable TIMER0 BASE TIMER A while 1 单次触发 include inc hw ints h include inc hw memmap h include inc hw types h include driverlib interrupt h include driverlib sysctl h include driverlib timer h include driverlib gpio h include grlib grlib h include drivers set pinout h voiddelay intd 延时函数 for d d voidTimer0IntHandler void TimerIntClear TIMER0 BASE TIMER TIMA TIMEOUT GPIOPinWrite GPIO PORTF BASE GPIO PIN 3 GPIO PIN 3 delay 2000000 延时GPIOPinWrite GPIO PORTF BASE GPIO PIN 3 GPIO PIN 3 delay 2000000 延时 intmain void SysCtlClockSet SYSCTL SYSDIV 1 SYSCTL USE OSC SYSCTL OSC MAIN SYSCTL XTAL 16MHZ PinoutSet GPIOPadConfigSet GPIO PORTF BASE GPIO PIN 3 GPIO STRENGTH 4MA GPIO PIN TYPE STD GPIODirModeSet GPIO PORTF BASE GPIO PIN 3 GPIO DIR MODE OUT GPIOPinWrite GPIO PORTF BASE GPIO PIN 3 GPIO PIN 3 SysCtlPeripheralEnable SYSCTL PERIPH TIMER0 IntMasterEnable TimerConfigure TIMER0 BASE TIMER CFG 32 BIT PER TimerLoadSet TIMER0 BASE TIMER A 2 SysCtlClockGet IntEnable INT TIMER0A TimerIntEnable TIMER0 BASE TIMER TIMA TIMEOUT TimerEnable TIMER0 BASE TIMER A while 1 周期定时 单次触发实现周期闪烁 voidTimer0IntHandler void TimerIntClear TIMER0 BASE TIMER TIMA TIMEOUT GPIOPinWrite GPIO PORTF BASE GPIO PIN 3 GPIO PIN 3 delay 2000000 延时GPIOPinWrite GPIO PORTF BASE GPIO PIN 3 GPIO PIN 3 delay 2000000 延时TimerLoadSet TIMER0 BASE TIMER A 2 SysCtlClockGet TimerIntEnable TIMER0 BASE TIMER TIMA TIMEOUT TimerEnable TIMER0 BASE TIMER A IntEnable INT TIMER0A include inc hw ints h include inc hw memmap h include inc hw types h include driverlib debug h include driverlib interrupt h include driverlib sysctl h include driverlib timer h include grlib grlib h include drivers kitronix320 x240 x16 ssd2119 8bit h include drivers set pinout h unsignedlongg ulFlags tContextg sContext voidTi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论