好文档 - 专业文书写作范文服务资料分享网站

lm3s通用定时器(Timer) - 图文 

天下 分享 时间: 加入收藏 我要投稿 点赞

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为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);

// 在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);

// 在Timer1当中,配置TimerA为边沿事件计数器、TimerB为边沿事件定时器 TimerConfigure(TIMER1_BASE, TIMER_CFG_16_BIT_PAIR | TIMER_CFG_A_CAP_COUNT | TIMER_CFG_B_CAP_TIME);

// 在Timer2当中,TimerA、TimerB都配置为PWM输出 TimerConfigure(TIMER2_BASE, TIMER_CFG_16_BIT_PAIR |

TIMER_CFG_A_PWM | TIMER_CFG_B_PWM);

表1.2 函数TimerControlStall( )

功能 原型

控制Timer暂停运行(对32位RTC模式无效)

void TimerControlStall(unsigned long ulBase, unsigned long ulTimer, tBoolean bStall) ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3)

参数

ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH

在32位模式下只能取值TIMER_A,作为总体上的控制,而取值TIMER_B或TIMER_BOTH都无效。在16位模式下取值TIMER_A只对TimerA有效,取值TIMER_B只对TimerB有效,取

5

值TIMER_BOTH同时对TimerA和TimerB有效。 bStall:如果取值true,则在单步调试模式下暂停计数

返回

如果取值false,则在单步调试模式下继续计数

表1.3 函数TimerControlTrigger( )

功能 原型

控制Timer的输出触发功能使能或禁止

void TimerControlTrigger(unsigned long ulBase, unsigned long ulTimer, tBoolean bEnable) ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3)

参数

ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH bEnable:如果取值true,则使能输出触发

返回

如果取值false,则禁止输出触发

表1.4 函数TimerControlEvent( )

功能 原型

控制Timer在捕获模式中的边沿事件类型

void TimerControlEvent(unsigned long ulBase, unsigned long ulTimer, unsigned long ulEvent) ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3) ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH ulEvent:指定的边沿事件类型,应当取下列值之一:

参数

TIMER_EVENT_POS_EDGE // 正边沿事件 TIMER_EVENT_NEG_EDGE // 负边沿事件

TIMER_EVENT_BOTH_EDGES // 双边沿事件(正边沿和负边沿都有效) 注:在16位输入边沿计数捕获模式下,可以取值3种边沿事件的任何一种,但在16位输入边沿定时模式下仅支持正边沿和负边沿,不能支持双边沿。

返回

表1.5 函数TimerControlLevel( )

功能 原型

控制Timer在PWM模式下的有效输出电平

void TimerControlLevel(unsigned long ulBase, unsigned long ulTimer, tBoolean bInvert) ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3)

参数

ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH bInvert:当取值false时PWM输出为高电平有效(默认)

返回

当取值true时输出低电平有效(即输出反相)

2. 计数值的装载与获取

函数TimerLoadSet( )用来设置Timer的装载值。装载寄存器与计数器不同,它是独立存

在的。在调用TimerEnable( )时会自动把装载值加载到计数器里,以后每输入一个脉冲计数

6

器值就加1或减1(取决于配置的工作模式),而装载寄存器不变。另外,除了单次触发定时器模式以外,在计数器溢出时会自动重新加载装载值。函数TimerLoadGet( )用来获取装载寄存器的值。参见表1.6和表1.7。

函数TimerValueGet( )用来获取当前Timer计数器的值。但在16位输入边沿定时捕获模式里,获取的是捕获寄存器的值,而非计数器值。参见表1.8的描述。

表1.6 函数TimerLoadSet( )

功能 原型

设置Timer的装载值

void TimerLoadSet(unsigned long ulBase, unsigned long ulTimer, unsigned long ulValue) ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3)

参数

ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH ulValue:32位装载值(32位模式)或16位装载值(16位模式)

返回

表1.7 函数TimerLoadGet( )

功能 原型 参数 返回

获取Timer的装载值

unsigned long TimerLoadGet(unsigned long ulBase, unsigned long ulTimer) ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3) ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH 32位装载值(32位模式)或16位装载值(16位模式)

表1.8 函数TimerValueGet( )

功能 原型 参数 返回

获取当前的Timer计数值(在16位输入边沿定时捕获模式下,获取的是捕获值) unsigned long TimerValueGet(unsigned long ulBase, unsigned long ulTimer) ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3) ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH 当前Timer计数值(在16位输入边沿定时捕获模式下,返回的是捕获值)

3. 运行控制

函数TimerEnable( )用来使能Timer计数器开始计数,而函数TimerDisable( )用来禁止计数。参见表1.9和表1.10的描述。

在32位RTC定时器模式下,为了能够使RTC开始计数,需要同时调用函数TimerEnable( )和TimerRTCEnable( )。函数TimerRTCEnable( )用于禁止RTC计数时。参见表1.11和表1.12的描述。

调用函数TimerQuiesce( )可以复位Timer模块的所有配置。这为快速停止Timer工作或重新配置Timer为另外的工作模式提供了一种简便的手段。参见表1.13的描述。

表1.9 函数TimerEnable( )

功能 原型

使能Timer计数(即启动Timer)

void TimerEnable(unsigned long ulBase, unsigned long ulTimer)

7

参数 返回

ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3) ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH 无

表1.10 函数TimerDisable( )

功能 原型 参数 返回

禁止Timer计数(即关闭Timer)

void TimerDisable(unsigned long ulBase, unsigned long ulTimer)

ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3) ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH 无

表1.11 函数TimerRTCEnable( )

功能 原型 参数 返回 说明

使能RTC计数

void TimerRTCEnable(unsigned long ulBase)

ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3) 无

启动RTC时,除了要调用本函数外,还必须要调用函数TimerEnable( )

表1.12 函数TimerRTCDisable( )

功能 原型 参数 返回

禁止RTC计数

void TimerRTCDisable(unsigned long ulBase)

ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3) 无

表1.13 函数TimerQuiesce( )

功能 原型 参数 返回

使Timer进入它的复位状态

void TimerQuiesce(unsigned long ulBase)

ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3) 无

4. 匹配与预分频

函数TimerMatchSet( )和TimerMatchGet( )用来设置和获取Timer匹配寄存器的值。Timer开始运行后,当计数器的值与预设的匹配值相等时可以触发某种动作,如中断、捕获、PWM等。参见表1.14和表1.15的描述。

在Timer的16位单次触发/周期定时器模式下,输入到计数器的脉冲可以先经8位预分频器进行1~256分频,这样,16位的定时器就被扩展成了24位。该功能是可选的,预分频器默认值是0,即不分频。函数TimerPrescaleSet( )和TimerPrescaleGet( )用来设置和获取8位预分频器的值。参见表1.16和表1.17的描述。

8

表1.14 函数TimerMatchSet( )

功能 原型

设置Timer的匹配值

void TimerMatchSet(unsigned long ulBase, unsigned long ulTimer, unsigned long ulValue) ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3)

参数

ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH ulValue:32位匹配值(32位RTC模式)或16位匹配值(16位模式)

返回

表1.15 函数TimerMatchGet( )

功能 原型 参数 返回

获取Timer的匹配值

unsigned long TimerMatchGet(unsigned long ulBase, unsigned long ulTimer) ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3) ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH 32位匹配值(32位RTC模式)或16位匹配值(16位模式)

表1.16 函数TimerPrescaleSet( )

功能 原型

设置Timer预分频值(仅对16位单次触发/周期定时模式有效)

void TimerPrescaleSet(unsigned long ulBase, unsigned long ulTimer, unsigned long ulValue) ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3)

参数

ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH

ulValue:8位预分频值(高24位无效),取值0~255,对应的分频数是1~256

返回

表1.17 函数TimerPrescaleGet( )

功能 原型 参数 返回

获取Timer预分频值(仅对16位单次触发/周期定时模式有效)

unsigned long TimerPrescaleGet(unsigned long ulBase, unsigned long ulTimer) ulBase:Timer模块的基址,取值TIMERn_BASE(n为0、1、2或3) ulTimer:指定的Timer,取值TIMER_A、TIMER_B或TIMER_BOTH 8位预分频值(高24位总是为0)

5. 中断控制

Timer模块有多个中断源,有超时中断、匹配中断和捕获中断3大类,又细分为7种。函数TimerIntEnable( )和TimerIntDisable( )用来使能或禁止一个或多个Timer中断源。详见表1.18和表1.19的描述。

函数TimerIntClear( )用来清除一个或多个Timer中断状态,函数TimerIntStatus( )用来获取Timer的全部中断状态。在Timer中断服务函数里,这两个函数通常要配合使用。参见表1.20和表1.21的描述。

函数TimerIntRegister( )和TimerIntUnregister( )用来注册和注销Timer的中断服务函数,参见表1.22和表1.23的描述。

9

lm3s通用定时器(Timer) - 图文 

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/
推荐度:
点击下载文档文档为doc格式
00glk2k82x57eja0pqkz5136q5t3t4006tc
领取福利

微信扫码领取福利

微信扫码分享