|
楼主 |
发表于 2018-11-7 11:44:07
|
显示全部楼层
改成这个样子?
这样的话3个消息是轮询每个100ms处理一次的,时效性上比建立3个任务是不是差了点呢?
- void USART1_IRQHandler(void)
- {
- if(USART1->SR & (BIT5)) //接收到数据
- {
- isr_evt_set (0x0001,&task_id);
- }
- }
- void USART2_IRQHandler(void)
- {
- if(USART2->SR & (BIT5)) //接收到数据
- {
- isr_evt_set (0x0002,&task_id);
- }
- }
- void USART3_IRQHandler(void)
- {
- if(USART3->SR & (BIT5)) //接收到数据
- {
- isr_evt_set (0x0004,&task_id);
- }
- }
- __task void task(void)
- {
- OS_RESULT result;
- while(1)
- {
- result=os_evt_wait_and (0x0001, 0);
- if(result == OS_R_EVT)
- {
- //执行相关操作1
- ......
- }
-
- result=os_evt_wait_and (0x0002, 0);
- if(result == OS_R_EVT)
- {
- //执行相关操作2
- ......
- }
-
- result=os_evt_wait_and (0x0004, 0);
- if(result == OS_R_EVT)
- {
- //执行相关操作3
- ......
- }
- os_dly_wait(100);
- }
- }
复制代码
|
|