硬汉嵌入式论坛

 找回密码
 立即注册
查看: 828|回复: 3
收起左侧

[技术讨论] 关于HAL库中UART_Receive_IT

[复制链接]

8

主题

32

回帖

56

积分

初级会员

初级程序员

积分
56
QQ
发表于 2022-12-26 11:02:54 | 显示全部楼层 |阅读模式
设备进行串口通信时,会进入硬中断,通过debug在hardfault_handle函数中增加断电然后仿真,回调最后一次执行就到了串口接收中断了报错还是意外的错,我配置的是96008N1,感觉像是溢出了,下面是图中是报错提示的位置,我接收数据有数据指针位置归零,有标志位清除;
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
    uint8_t c;

    if(huart->Instance==UART5)
        {
                HAL_UART_Receive_IT(huart,&c,1);//接收数据
                 __HAL_USART_CLEAR_FLAG(&huart5, UART_FLAG_RXNE);
//                SEGGER_RTT_printf(0,"c1=%2x\r\n",c);
                usart5_buf(rx5_cnt)=c;//放入待处理的buf
                rx5_cnt++;
                HAL_UART_Receive_IT(huart,&c,1);//再次开启中断接收
        }
}
报错信息.png
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
111540
QQ
发表于 2022-12-26 11:46:50 | 显示全部楼层
如果你用的RTOS,不推荐在中断回调里面再次调用HAL_UART_Receive_IT启动新的接收,建议中断里面发消息,任务里面再次开启新的。
回复

使用道具 举报

8

主题

32

回帖

56

积分

初级会员

初级程序员

积分
56
QQ
 楼主| 发表于 2022-12-26 13:43:30 | 显示全部楼层
eric2013 发表于 2022-12-26 11:46
如果你用的RTOS,不推荐在中断回调里面再次调用HAL_UART_Receive_IT启动新的接收,建议中断里面发消息,任 ...

确实使用的RTOS的中断接收,那我改成任务里面开启接收,谢谢
回复

使用道具 举报

8

主题

32

回帖

56

积分

初级会员

初级程序员

积分
56
QQ
 楼主| 发表于 2022-12-27 17:49:07 | 显示全部楼层
这个用了半天时间也没找出来问题,最后换了一种方式,选择使用DMA+串口接收,中断发送。(为什么没用DMA+串口接收和发送一起的,因为没调出来,有兴趣的可以看一下下一个帖子有分享
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-11-1 07:05 , Processed in 0.288200 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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