完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
由书“嵌入式实时操作系统ucosiii”129页小结得知,中断服务程序应该简短,通过信号量或者消息传递给任务,让任务完成具体操作。故把原子哥串口接收中断修改。
使用任务内嵌信号量。 修改之前用把外部中断那一小节更改,使用正常,如下; void EXti2_IRQHandler(void) { OS_ERR err; OSIntEnter(); //进入中断 delay_ms(10);//消抖 if(KEY2==0) //按键KEY2 { OSTaskSemPost(&Led0TaskTCB,OS_OPT_POST_NONE,&err); if(err==OS_ERR_NONE) { printf("释放信号量"); } } EXTI_ClearITPendingBit(EXTI_Line2); //清除中断 OSIntExit(); //退出中断 } 随后将串口中断修改如下,发现用串口助手发送消息,系统就卡死,任务中调用if(err==OS_ERR_NONE)。这个语句不执行。 void USART1_IRQHandler(void) //串口1中断服务程序 { OS_ERR err; OSIntEnter(); if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾) { OSTaskSemPost(&Led0TaskTCB,OS_OPT_POST_NONE,&err); if(err==OS_ERR_NONE) { printf("释放信号量"); } } USART_ClearITPendingBit(USART1,USART_IT_CTS); OSIntExit(); } 请问哪里出问题了? |
|
相关推荐
8个回答
|
|
已找到原因。更改如下,led0task任务用于处理数据;
extern OS_TCB Led0TaskTCB; extern u8 Res; void USART1_IRQHandler(void) //串口1中断服务程序 { OS_ERR err; OSIntEnter(); if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收中断(接收到的数据必须是0x0d 0x0a结尾) { Res =USART_ReceiveData(USART1); //读取接收到的数据 OSTaskSemPost(&Led0TaskTCB,OS_OPT_POST_NONE,&err); if(err==OS_ERR_NONE) { printf("释放信号量"); } } USART_ClearITPendingBit(USART1,USART_IT_CTS); OSIntExit(); } |
|
|
|
USART_ClearITPendingBit(USART1,USART_IT_CTS);我把这个函数第二个参数四个选项每个都试一下,还是卡死
|
|
|
|
不要在中断里打印 你这个不卡才怪
|
|
|
|
不是的。原因已找到
|
|
|
|
楼主,你的led0task任务没有改呀,我只看到了你在中断中增加
Res =USART_ReceiveData(USART1); //读取接收到的数据 这句话。是这里的问题? |
|
|
|
是的 加上这句话 就没问题了
|
|
|
|
我也遇到了,进串口中断必须读串口数据,否则会卡死在中断里
|
|
|
|
串口接收中断
|
|
|
|
只有小组成员才能发言,加入小组>>
795 浏览 0 评论
1154 浏览 1 评论
2530 浏览 5 评论
2863 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2713 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1077浏览 3评论
195浏览 2评论
461浏览 2评论
374浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
455浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 14:15 , Processed in 1.156483 second(s), Total 65, Slave 55 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号