anzhoo CC2530函数库:定时任务接口使用说明
 
- UID
- 856476
|
anzhoo CC2530函数库:定时任务接口使用说明
注:函数库见前文。
一般的延时可以采用modDelay()方法实现。
但是在一些场合,比如需要精确定时的任务,或者需要主程序不断调用某些函数(不允许阻塞延时)的时候,可以采用modTimer.h中提供的定时任务机制。
modTimer机制支持多定时任务,目前实现支持6个定时任务。
它利用了CC2530的Timer3定时器来计算时间,因此延时比较精确。
该机制以回调方式执行用户的定时任务函数。
程序初始化时,先调用modTimerInit()函数进行初始化(只需调用一次)。
当需要设置定时任务时,调用modTimerAddTimeoutCallback()提交定时任务,参数中指明延时多久,时间到时执行哪个函数,是否循环调用。
当时间到时,系统会自动调用用户指定的函数。
如果需要取消该任务,则调用modTimerRemoveTimeoutCallback()函数。
延时单位:毫秒。
modTimerAddTimeoutCallback()是非阻塞型的函数,也就是说,该函数完成设置后就返回,不用等到延时完成才返回。
当时间到时,用户定义的回调函数是在Timer3中断处理函数中调用,因此不能进行长时间的处理,应及时返回。
===
一个例子:
每5秒触发一次任务。定时回调函数只设置标志,任务在主程序中执行。
与定时任务相关的代码段包括:
uint8 mBroadcastTimeoutIndex = 0; //定时任务句柄,取消任务时作为输入参数。
uint8 mBroadcastTimeoutFlag = 0; //定时回调函数和主循环之间的信号。
int8 myTimeoutCallbackFunction(uint8 vCallbackIndex); //定时任务回调函数
初始化:
void init(){
...
//定时任务初始化
modTimerInit();
modTimerAddTimeoutCallback(5000, myTimeoutCallbackFunction, 1, &mBroadcastTimeoutIndex);
}
回调函数:
/**
* timeout Callback
*/ |
|
|
|
|
|