OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6888|回复: 3

UCOSIII串口中断发送信号量问题

[复制链接]

23

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2305
金钱
2305
注册时间
2017-7-6
在线时间
280 小时
发表于 2017-12-18 15:56:24 | 显示全部楼层 |阅读模式
20金钱
最高优先级任务:main_task()在某个位置OSTaskSemPend(0,OS_OPT_PEND_BLOCKING,0,&err);然后我在中断接收函数中接收到字符0xbb(结束符)就  OSTaskSemPost(&MainTaskTCB,OS_OPT_POST_NONE,&err)给任务main_task,我仿真一点问题都没有。可是正常跑的时候任务就不进main_task,我每20MS调用一次OSOSTaskSemPend(0,OS_OPT_PEND_BLOCKING,0,&err);我又在main_task中调用delay_ms(1)然后居然又正常了。有没有人解释一下,我核心板用F429与F103C8T6通讯。工程附件太大传不了

最佳答案

查看完整内容[请看2#楼]

[mw_shl_code=c,true]void USART1_IRQHandler(void) { u8 Res; OS_ERR err; #if SYSTEM_SUPPORT_OS //ʹÓÃOS OSIntEnter(); #endif if(__HAL_UART_GET_FLAG(&UART_Handler[1],UART_FLAG_ORE)==SET) { __HAL_USART_CLEAR_FLAG(&UART_Handler[1],UART_FLAG_ORE); Res=(u8)(UART_Handler[1].Instance->DR & 0xFF) ; } else if((__HAL_UART_GET_FLAG ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

23

主题

344

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2305
金钱
2305
注册时间
2017-7-6
在线时间
280 小时
 楼主| 发表于 2017-12-18 15:56:25 | 显示全部楼层
[mw_shl_code=c,true]void USART1_IRQHandler(void)                       
{
        u8 Res;
        OS_ERR err;
#if SYSTEM_SUPPORT_OS                 //ʹÓÃOS
        OSIntEnter();   
#endif
       
        if(__HAL_UART_GET_FLAG(&UART_Handler[1],UART_FLAG_ORE)==SET)
        {
                __HAL_USART_CLEAR_FLAG(&UART_Handler[1],UART_FLAG_ORE);               
                Res=(u8)(UART_Handler[1].Instance->DR & 0xFF)        ;       
        }       
        else if((__HAL_UART_GET_FLAG(&UART_Handler[1],UART_FLAG_RXNE)!=RESET))  
        {
    Res=(u8)(UART_Handler[1].Instance->DR & 0xFF)        ;       
                USART_RX_BUF[1][seri_count[1]++]=Res        ;
    if(Res==0xbb)
                {
                   //g_bool_received_flag[1]=1;
                         OSTaskSemPost(&MainTaskTCB,OS_OPT_POST_NONE,&err);
                         if(err!=OS_ERR_NONE)
                         {
                           printf("post failed!\r\n");                         
                         }
                }
                if(seri_count[1]>=USART_REC_LEN)
                {
                  seri_count[1]=0;
                }                       
        }       

#if SYSTEM_SUPPORT_OS                
        OSIntExit();                                                                                           
#endif
}[/mw_shl_code]
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2017-12-19 00:20:31 | 显示全部楼层
帮顶
回复

使用道具 举报

0

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
343
金钱
343
注册时间
2018-3-20
在线时间
74 小时
发表于 2018-12-17 14:05:49 | 显示全部楼层
帮顶                     
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-26 00:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表