CSR1010定时器的使用

来源:互联网 发布:德国世家知乎 编辑:程序博客网 时间:2024/04/28 15:56

熟练使用CSR1010的定时器是十分必要的,因为在后续的蓝牙通信协议的开发中会用到,所以很有必要做一下练习。

这个示例定时3秒,通过uart通信发送通知到PC。因此,要求PC安装一个串口调试工具来查看消息,设置波特率19200,数据位8bit,停止位1,无校验。

使用定时器须知如下几点:

1、引入头文件<timer.h>,<timer.h>头文件定义了定时器函数调用接口,另一个头文件<time.h>定义了一些需要使用的时间常量,已经包含到<timer.h>中。

2、关于定时器初始化函数的使用:

void TimerInit(uint16 max_timers, void *timer_array);

(1)、第一个参数为初始化的定时器数量。

(2)、第二个参数为定时器计数值得存储地址,每个定时器需要常量SIZE_APP_TIMERS个uint16的数组。

3、定时器创建函数的使用:

timer_id  TimerCreate(uint32 const time, bool const relative, timer_callback_arg handler);

(1)、返回值为定时器id。

(2)、第一个参数为定时时间长短。

(3)、第二个参数需要设置为TRUE。

(4)、第三个参数为定时完成回调函数,其函数格式如下:

static void timerCallback(timer_id const id);

对上述有一定了解后,程序如下:

#include <main.h>#include <debug.h>#include <timer.h>#include <ls_app_if.h>#define MAX_TIMERS 1#define TIMER_TIMEOUT (3 * SECOND)static uint16 app_timers[SIZEOF_APP_TIMER * MAX_TIMERS];static void timerCallback(timer_id const id);void AppPowerOnReset(void){}void AppInit(sleep_state last_sleep_state){DebugInit(1, NULL, NULL);UartConfig(0x004e, 0x00);UartEnable(TRUE);UartRead(1, 0);TimerInit(MAX_TIMERS, app_timers);TimerCreate(TIMER_TIMEOUT, TRUE, timerCallback);}void AppProcessSystemEvent(sys_event_id id, void *data){}bool AppProcessLmEvent(lm_event_code event_code, LM_EVENT_T *event_data){return TRUE;}static void timerCallback(timer_id const id){DebugWriteString("3 seconds passed!\r\n");TimerCreate(TIMER_TIMEOUT, TRUE, timerCallback);}


1 0
原创粉丝点击