嵌入式学习小组
直播中

毛玲燕

7年用户 219经验值
私信 关注

freeRTOS串口程序会出现哪些问题

我想在F407上实现一个串口收发的功能,串口中断函数里,把接收的数据放到缓冲区数组里,任务有三个,分别是解析缓冲区的数据,组帧放入发送缓冲区,将缓冲区的数据发送出去,现在是刚开机只执行优先级最高的任务,然后没过一两秒就进入了串口中断里,就没反应了,大家根据经验,帮我想想,可能程序哪里会出现问题?

回帖(5)

郑广荣

2020-6-17 09:57:19
你说的没反应了是程序挂了还是什么意思?开机进入串口中断的话,你可以看看你在串口初始化的时候有没有做串口接收中断标志位清除的动作。
举报

赵淑洁

2020-6-17 10:05:08
中断标志位清除了,任务的程序都是把之前裸机上能运行的程序复制过来的
举报

李磊

2020-6-17 10:13:17
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

李研

2020-6-17 10:31:28
[C] 纯文本查看 复制代码
void USART6_IRQHandler(void){                    if(USART_GetITStatus(USART6, USART_IT_RXNE) != RESET)         {                BaseType_t xHigherPriorityTaskWoken;   xHigherPriorityTaskWoken = pdFALSE;                                         u16 ReceiveData;                        if((GetRxBufferLength(&MyUart[GPS_COM6])<(UARTBUFFSIZE-1)))                            {                                ReceiveData=USART_ReceiveData(USART6);                                EnRxBuffer(&MyUart[GPS_COM6], ReceiveData);                                portYIELD_FROM_ISR(xHigherPriorityTaskWoken);                        }                USART_ClearITPendingBit(USART6,USART_IT_RXNE);         }}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分