【疑问】ucos ii中任务与中断服务函数的关系

2019-10-15 08:06发布

小弟刚刚学习ucos ii系统,完成了系统在32上的移植,现在有一疑问:
系统的任务和中断服务函数到底是什么关系?比如在原来跑裸机的时候,串口的接收是在中断服务函数中完成的,那么在操作系统下应该如何进行呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
1201yuge
1楼-- · 2019-10-15 12:21
 精彩回答 2  元偷偷看……
逆光飞行
2楼-- · 2019-10-15 15:50
1201yuge 发表于 2016-3-7 11:01
一样的进入中断,进入中断时加上OSIntEnter();  退出中断时加上OSIntExit();          即可。

谢谢您!
那比如我要处理串口接收,以前都是在中断服务程序中进行,移植系统后呢?还是在中断服务程序中进行还是创建一个任务?如果还是在中断服务函数中进行,那移植系统的意义何在呢?
请赐教
1201yuge
3楼-- · 2019-10-15 17:36
逆光飞行 发表于 2016-3-7 12:17
谢谢您!
那比如我要处理串口接收,以前都是在中断服务程序中进行,移植系统后呢?还是在中断服务程序中 ...

void USART6_IRQHandler(void)                        //串口1中断服务程序
{
        u8 Res;
#ifdef OS_TICKS_PER_SEC                 //如果时钟节拍数定义了,说明要使用ucosII了.
        OSIntEnter();   
#endif
        if(USART_GetITStatus(USART6, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾)
        {
                Res =USART_ReceiveData(USART6);//(USART1->DR);        //读取接收到的数据
                send(Res);
                  
  }
#ifdef OS_TICKS_PER_SEC                 //如果时钟节拍数定义了,说明要使用ucosII了.
        OSIntExit();                                                                                          
#endif
}

shblh
4楼-- · 2019-10-15 22:33
那这个串口中断优先级和是时钟节拍systick中断优先级还有那个pendsv 中断优先级是什么关系呢?
shblh
5楼-- · 2019-10-16 00:26
1201yuge 发表于 2016-3-7 12:29
void USART6_IRQHandler(void)                        //串口1中断服务程序
{
        u8 Res;


那这个串口中断优先级和是时钟节拍systick中断优先级还有那个pendsv 中断优先级是什么关系呢?
123军
6楼-- · 2019-10-16 00:33
 精彩回答 2  元偷偷看……

一周热门 更多>