- 1、本文档共45页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第八讲定时器
第八讲 定时器 内容提要 总体特性 功能概述 函数讲解 举例 8.1 总体特性 在LM3S9B96内部通常集成有4个通用定时器模块(General-Purpose Timer Module,GPTM),分别为Timer0、Timer1、Timer2和Timer3。 Timer模块具有非常丰富的功能: 32位定时器模式 √ 16位定时器模式 √ 16位输入捕获模式 × 16位PWM模式 × 每个Timer模块都可以配置为一个32位定时器; 也可以拆分为两个16位的定时/计数器TimerA和TimerB,它们可以被配置为独立运行的定时器、事件计数器或PWM。 8.2 Timer功能概述 Timer模块的功能在总体上可以分成32位模式和16位模式两大类。 在32位模式下,TimerA和TimerB被连在一起形成一个完整的32位计数器。对Timer的各项操作(如装载初值、运行控制、中断控制等)都用对TimerA的操作作为总体上的32位控制,而对TimerB的操作无任何效果。 在16位模式下,对TimerA的操作仅对TimerA有效,对TimerB的操作仅对TimerB有效,即对两者的操控是完全独立进行的。 8.2.1 32位单次触发/周期定时器 在这两种模式中,Timer都被配置成一个32位的递减计数器,用法类似,只是单次触发模式只能定时一次,如果需要再次定时则必须重新配置, 而周期模式则可以周而复始地定时,除非被关闭。 在计数到0,可以输出一个内部的单时钟周期脉冲信号或在软件的控制下触发中断。 8.2.2 16位单次触发/周期定时器 一个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模块的工作模式 。 原型:void TimerConfigure(unsigned long ulBase, unsigned long ulConfig) 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 //
文档评论(0)