无锡鸿源建设集团有限公司网站,云服务器 网站,wordpress微博登录注册,0基础微信小程序开发教程第1章 方式一(平均主义) int main(int argc, char **argv){/* RTC 初始化 */bsp_RTC_Init(rtc);/* 串口初始化 */uartInit(115200);/* LED初始化 */ledInit();while(1){// 任务1(获取传感器数据)// 任务2// 任务3}
}
1.1 平均主义的缺陷 获取传感器数据可以600ms去读取一…第1章 方式一(平均主义) int main(int argc, char **argv){/* RTC 初始化 */bsp_RTC_Init(rtc);/* 串口初始化 */uartInit(115200);/* LED初始化 */ledInit();while(1){// 任务1(获取传感器数据)// 任务2// 任务3}
}
1.1 平均主义的缺陷 获取传感器数据可以600ms去读取一次但是按照上面的架构可能十几微妙就去获取一次传感器的数据照成CPU的浪费
第2章 方式二(基于时基)
不同的时间点执行不同的任务 2.1 时基机制 uint8_t flag_1ms 0; // 每来1ms, 该标志位被置位为1
uint8_t cnt_1ms 0; // 每来1ms, 该毫秒计数值加1uint8_t flag_10ms 0; // 10ms时间到, 该标志位被置位为1
uint8_t cnt_10ms 0; // 10ms时间到, 该毫秒计数值加1uint8_t flag_100ms 0; // 100ms时间到, 该标志位被置位为1
uint8_t cnt_100ms 0; // 100ms时间到, 该毫秒计数值加1uint8_t flag_1s 0; // 1000ms时间到, 该标志位被置位为1
uint8_t cnt_1s 0; // 1000ms时间到, 该毫秒计数值加1int main(int argc, char **argv){while(1){// 1ms时间到达if(flag_1ms 1){flag_1ms 0;cnt_1ms;// 累加到10ms后if(cnt_1ms 10){cnt_1ms 0;flag_10ms 1;}// TODO: 1ms到后需要执行的任务}// 10ms时间到达if(flag_10ms 1){flag_10ms 0;cnt_10ms;// 累加到100ms后if(cnt_10ms 10){cnt_10ms 0;flag_100ms 1;}// TODO: 10ms到后需要执行的任务}// 100ms时间到达if(flag_100ms 1){flag_100ms 0;cnt_100ms;// 累加到1000ms后if(cnt_100ms 10){cnt_100ms 0;flag_1s 1;}// TODO: 100ms到后需要执行的任务}// 1s时间到达if(flag_1s 1){flag_1s 0;cnt_1s;// TODO: 1s到后需要执行的任务}}
}2.1 时基机制的缺陷
主循环内部出现很多if判断