SDK的初始化及运行参考Jim_天河博主的博客
最终程序会在两个部分中执行:
1每个模块的 下运行task_deal函数,例蓝牙模块,相当于这个模块的主函数,杰理主函数以message为媒介运行,仔细分析代码可以发现所有模块的函数的主体都是,主函数中一直出队列获取消息,其他地方发布消息
void task()
{
/* 模块初始化 */
while(1){
/* 获取消息队列中消息 */
error = task_get_msg(0, 2, msg);
/* 这里调用task_common_msg_deal可以实现各种外设接入或者按键跳转模块
在调用task_switch这个函数之后成功,这个函数即可完成模块的切换,
task_common_msg_deal会返回 false,使得当前模块的函数被return*/
if (task_common_msg_deal(NULL, msg[0]) == false) {
return ;
}
switch(msg[0]){
/* 各种消息处理 */
}
}
}
2定时器中断 time值代表 time*2ms时间回调一次fun函数指针,定时在timer0中进行,类似于定时器中断处理。
/*不同功能的循环检测功能统一用LOOP_DETECT_REGISTER注册,可搜索关键字看例子*/
struct loop_detect_handler {
int time;/*TIMER周期的倍数。timer周期默认一般是2ms */
void (*fun)();