版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八讲定时器第1页,课件共45页,创作于2023年2月内容提要总体特性功能概述函数讲解举例第2页,课件共45页,创作于2023年2月8.1总体特性在LM3S9B96内部通常集成有4个通用定时器模块(General-PurposeTimerModule,GPTM),分别为Timer0、Timer1、Timer2和Timer3。第3页,课件共45页,创作于2023年2月Timer模块具有非常丰富的功能:
32位定时器模式√16位定时器模式√16位输入捕获模式×16位PWM模式×第4页,课件共45页,创作于2023年2月每个Timer模块都可以配置为一个32位定时器;也可以拆分为两个16位的定时/计数器TimerA和TimerB,它们可以被配置为独立运行的定时器、事件计数器或PWM。第5页,课件共45页,创作于2023年2月8.2Timer功能概述
Timer模块的功能在总体上可以分成32位模式和16位模式两大类。在32位模式下,TimerA和TimerB被连在一起形成一个完整的32位计数器。对Timer的各项操作(如装载初值、运行控制、中断控制等)都用对TimerA的操作作为总体上的32位控制,而对TimerB的操作无任何效果。第6页,课件共45页,创作于2023年2月在16位模式下,对TimerA的操作仅对TimerA有效,对TimerB的操作仅对TimerB有效,即对两者的操控是完全独立进行的。第7页,课件共45页,创作于2023年2月8.2.132位单次触发/周期定时器在这两种模式中,Timer都被配置成一个32位的递减计数器,用法类似,只是单次触发模式只能定时一次,如果需要再次定时则必须重新配置,而周期模式则可以周而复始地定时,除非被关闭。在计数到0x00000000时,可以输出一个内部的单时钟周期脉冲信号或在软件的控制下触发中断。第8页,课件共45页,创作于2023年2月8.2.216位单次触发/周期定时器一个32位的Timer可以被拆分为两个单独运行的16位定时/计数器,每一个都可以被配置成16位递减计数器。具体用法跟32位单次触发/周期定时模式类似,不同的是对TimerA和TimerB的操作是分别独立进行的。第9页,课件共45页,创作于2023年2月8.3函数讲解使能配置与控制计数值的装载与获取运行控制中断控制第10页,课件共45页,创作于2023年2月8.3.1使能Timer库函数在使用某个Timer模块之前,应当首先将其使能,方法为:SysCtlPeriEnable(SYSCTL_PERIPH_TIMERn);n取0、1、2或3第11页,课件共45页,创作于2023年2月8.3.2配置与控制
函数TimerConfigure()用来配置Timer的工作模式。第12页,课件共45页,创作于2023年2月函数TimerConfigure()
功能:配置Timer模块的工作模式。 原型:voidTimerConfigure(unsignedlongulBase,unsignedlongulConfig) ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3)ulConfig:Timer模块的配置
第13页,课件共45页,创作于2023年2月ulConfig的取值(Timer模块的配置)Timer模块的配置在32位模式下应当取下列值之一:TIMER_CFG_32_BIT_OS//32位单次触发定时器TIMER_CFG_32_BIT_PER//32位周期定时器TIMER_CFG_32_RTC//32位RTC定时器第14页,课件共45页,创作于2023年2月//配置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); 举例:第15页,课件共45页,创作于2023年2月在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输出 第16页,课件共45页,创作于2023年2月//在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);举例:第17页,课件共45页,创作于2023年2月8.3.3计数值的装载与获取
TimerLoadSet()TimerEnable()TimerLoadGet()TimerValueGet()第18页,课件共45页,创作于2023年2月TimerLoadSet()函数TimerLoadSet()用来设置Timer的装载值。第19页,课件共45页,创作于2023年2月函数TimerLoadSet()
功能:设置Timer的装载值。 原型:voidTimerLoadSet(unsignedlongulBase,unsignedlongulTimer,unsignedlongulValue) 参数ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3)
ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH
ulValue:32位装载值(32位模式)或16位装载值(16位模式) 第20页,课件共45页,创作于2023年2月TimerLoadGet()另外,除了单次触发定时器模式以外,在计数器溢出时会自动重新加载装载值。函数TimerLoadGet()用来获取装载寄存器的值。第21页,课件共45页,创作于2023年2月函数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位模式) 第22页,课件共45页,创作于2023年2月TimerValueGet()函数TimerValueGet()用来获取当前Timer计数器的值。第23页,课件共45页,创作于2023年2月函数TimerValueGet()
功能:获取当前的Timer计数值。 原型:unsignedlongTimerValueGet(unsignedlongulBase,unsignedlongulTimer) 参数ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3)ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH 返回:当前Timer计数值(在16位输入边沿定时捕获模式下,返回的是捕获值 第24页,课件共45页,创作于2023年2月8.3.4运行控制
函数TimerEnable()用来使能Timer计数器开始计数,而函数TimerDisable()用来禁止计数。第25页,课件共45页,创作于2023年2月TimerEnable()在调用TimerEnable()时会自动把装载值加载到计数器里,以后每输入一个脉冲计数器值就加1或减1(取决于配置的工作模式),而装载寄存器不变。第26页,课件共45页,创作于2023年2月函数TimerEnable()
功能:使能Timer计数(即启动Timer) 原型:voidTimerEnable(unsignedlongulBase,unsignedlongulTimer) 参数ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3)ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH 返回:无 第27页,课件共45页,创作于2023年2月函数TimerDisable()
功能:禁止Timer计数(即关闭Timer) 原型:voidTimerDisable(unsignedlongulBase,unsignedlongulTimer) 参数ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3)ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH 返回:无 第28页,课件共45页,创作于2023年2月5.中断控制
Timer模块有多个中断源,有超时中断、匹配中断和捕获中断等。函数TimerIntEnable()和TimerIntDisable()用来使能或禁止一个或多个Timer中断源。函数TimerIntClear()用来清除一个或多个Timer中断状态,函数TimerIntStatus()用来获取Timer的全部中断状态。第29页,课件共45页,创作于2023年2月函数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匹配中断 第30页,课件共45页,创作于2023年2月函数TimerIntDisable()
功能:禁止Timer的中断
原型:voidTimerIntDisable(unsignedlongulBase,unsignedlongulIntFlags) 参数ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3)ulIntFlags:被禁止的中断源 。第31页,课件共45页,创作于2023年2月函数TimerIntClear()功能:清除Timer的中断。原型:voidTimerIntClear(unsignedlongulBase,unsignedlongulIntFlags) 参数ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3)ulIntFlags:被清除的中断源。第32页,课件共45页,创作于2023年2月函数TimerIntStatus()
功能:获取当前Timer的中断状态。 原型:unsignedlongTimerIntStatus(unsignedlongulBase,tBooleanbMasked) 参数ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3)bMasked:如果需要获取的是原始的中断状态,则取值false,如果需要获取的是屏蔽的中断状态,则取值true返回:中断状态
第33页,课件共45页,创作于2023年2月8.5举例第34页,课件共45页,创作于2023年2月#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);//延时}第35页,课件共45页,创作于2023年2月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){}}单次触发第36页,课件共45页,创作于2023年2月#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);//延时}第37页,课件共45页,创作于2023年2月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){}}周期定时第38页,课件共45页,创作于2023年2月单次触发实现周期闪烁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);}第39页,课件共45页,创作于2023年2月#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/kitronix320x240x16_ssd2119_8bit.h"#include"drivers/set_pinout.h"第40页,课件共45页,创作于2023年2月unsignedlongg_ulFlags;tContextg_sContext;第41页,课件共45页,创作于2023年2月voidTimer0IntHandler(void){TimerIntClear(TIMER0_BASE,TIMER_TIMA_TIMEOUT);HWREGBITW(&g_ulFlags,0)^=1;IntMasterDisable();GrStringDraw(&g_sContext,(HWREGBITW(&g_ulFlags,0)?"1":"0"),-1,195,150,1);IntMasterEnable();}第42页,课件共45页,创作于2023年2月voidTimer1IntHandler(void){TimerIntClear(TIMER1_BASE,TIMER_TIMA_TIMEOUT);HWREGBITW(&g_ulFlags,1)^=1;IntMasterDisable();GrStringDraw(&g_sContext,(HWREGBITW(&g_ulFlags,1)?"1":"0"),-1,195,120,1);IntMasterEnable();}第43页,课件共45页,创作于2023年2月intmain(void){tRectanglesRect;SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_OSC|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ);PinoutSet();Kitronix320x240x16_SSD2119Init();GrContextInit(&g_sContext,&g_sKitronix320x240x16_SSD2119);sRect.sXMin=0;sRect.sYMi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 承包合同停车场承包经营合同2024年
- 卫生事业单位聘用合同2024年
- 个人承包合同风险防范指南
- 公益项目合作合同范本
- 2024版建筑工人劳务合同模板
- 农村私人土地买卖合同样本
- 2024年水利水电施工合同范本
- 合同计量工程师的工作任务与职责
- 2024年形象代言人合同书样本
- 招商银行外汇借款合同范文
- 清真食品安全管理制度
- 学校心理健康教育合作协议书
- 2024江苏省沿海开发集团限公司招聘23人(高频重点提升专题训练)共500题附带答案详解
- 2024年初级社会体育指导员(游泳)技能鉴定考试题库(含答案)
- 机电安装工程新技术新工艺应用总结
- 湖北省危险废物监管物联网系统管理计划填报说明
- Unit6ADayintheLife教学设计2024-2025学年人教版(2024)英语七年级上册
- 苏教版三年级上册数学期末考试试卷及解析答案
- 2024年个人劳务承包合同书
- 知道网课智慧《睡眠医学(广州医科大学)》测试答案
- 如果历史是一群喵课件
评论
0/150
提交评论