说了这么多,举例说明一下如何应用:
- void Task_A_Processing(void)
- {
- if(TIMER_SET == bSystem50Msec){
- //do something
- }
- }
- void Task_B_Processing(void)
- {
- if(TIMER_SET == bSystem100Msec){
- //do something
- }
- }
- void Task_C_Processing(void)
- {
- static uint8_t ticks = 0;
- if(TIMER_SET == bSystem100Msec){
- ticks ++ ;
- }
- if(5 == ticks){
- ticks = 0;
- //do something
- }
- }
- void Task_D_Processing(void)
- {
- if(TIMER_SET == bSystem1Sec){
- //do something
- }
- }
以上示例四个任务进程,
在主轮询里可进行如下处理:
- int main(void)
- {
- while(1)
- {
- SysTimer _Process();
- Task_A_Processing();
- Task_B_Processing();
- Task_C_Processing();
- Task_D_Processing();
- }
- }
这样,就可以轻松且清晰实现了多个任务,不同时间内处理不同事件。(但注意,每个任务处理中不要有阻塞延时,也不要处理过多的事情,以致处理时间较长。可设计成状态机来处理不同任务。
|