z-stack定时器

 

hal_timer.c和hal_timer.h定义了关于定时器的一些参数与宏定义和函数
HW_TIMER_1:timer1
HW_TIMER_3:timer3
HW_TIMER_4:timer4

HAL_TIMER_0: HW_TIMER_3;定时器3
HAL_TIMER_2:HW_TIMER_4;定时器4
HAL_TIMER_3:HW_TIMER_1;定时器1


关于使用定时器,我们可以从文件hal_timer.c和hal_timer.h组成的函数与宏定义可以认识到,我们只要学会调用即可
HalTimerInit()在所以定时器启动之前调用,
uint8 HalTimerConfig (uint8 timerId, uint8 opMode, uint8 channel, uint8 channelMode,
                                        bool intEnable, halTimerCBack_t cBack)
timerId:定时器的标识
opMode:操作模式,正常(0x0000-0xffff/0x00-0xff)还是CTC模式(0x00->定值)
channel:要配置的信道
channelMode:信道模式,输入捕获、输出比较、溢出
intEnable:中断使能与否
cBack:回调函数,相当于中断处理函数
typedef void (*halTimerCBack_t) (uint8 timerId, uint8 channel, uint8 channelMode);
uint8 HalTimerStart (uint8 timerId, uint32 timePerTick)启动定时器/计数器
timerId:定时器标识符
timerPerTick:每个标志微秒数
如果定时器服务没有配置就返回HAL_TIMER_NOT_CONFIGURED
否则返回HAL_TIMER_OK
uint8 HalTimerStop (uint8 timerId)停止定时器
timerId:定时器标志符
返回值:HAL_TIMER_INVALID_ID,否则返回HAL_TIMER_OK
void HalTimerTick (void)在定时器中断禁用时,相当于中断程序,创建一个标志
uint8 HalTimerInterruptEnable (uint8 hwtimerid, uint8 channelMode, bool enable)使能,禁止timerId和channelMode的定时器中断
hwtimerid:是HW_TIMER_1:timer1
                    HW_TIMER_3:timer3
                    HW_TIMER_4:timer4
channelMode:信道模式
enable:真假
返回值:HAL_TIMER_OK、HAL_TIMER_INVALID_CH_MODE

对于定时器的使用,要注意的问题:
使用定时器1时:
HalTimerConfig(HAL_TIMER_3,
                            HAL_TIMER_MODE_NORMAL,
                            HAL_TIMER_CHANNEL_SINGLE,
                            HAL_TIMER_CH_MODE_OVERFLOW,
                            TRUE,
                             timer1int);//HAL_TIMER_MODE_NORMAL是从0x0000到0xFFFF计数,这时应该使用HAL_TIMER_CH_MODE_OVERFLOW
使用模计数的话:

使用定时器3的话:
HalTimerConfig(HAL_TIMER_0,HAL_TIMER_MODE_CTC,HAL_TIMER_CHANNEL_SINGLE,HAL_TIMER_CH_MODE_OUTPUT_COMPARE,TRUE,timer1int);使用比较模式,而不是溢出模式。因为选用了CTC模式

注意现在用的Z-STACK系统比较旧的,所以有一些配置只适合CC2430,所以要注意CC2530与CC2430的区别。如现在使用定时器时,因为T1CTL和T1STAT,之间的不同,通道数目的不同,所以要修改中断处理函数对于标志位部分的修改。

■模模式需要开启通道0的输出比较模式,否则计数器只有到了0XFF时才会产生溢出中断(相应的产生溢出标志),也就是如果没有设置通道0的输出比较模式,计数器的值到达T1CC0后,不会产生溢出中断(相应的溢出标志不会置1),这点需要特别注意。■


  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值