STM32开发问题记录
HAL库开发,问题罗列以及后续排查简单记录(仅适用于个人)
一、uart
1.1 问题:
打印正常,但是加入接收中断后,开始出bug,最后锁定接收中断挂掉了(备注)
原因: HAL库的串口接收发送函数有bug,就是收发同时进行的时候,会出现锁死的现象
解决: 需要注释掉 HAL_UART_Receive_IT 和 HAL_UART_Transmit_IT 中的 __HAL_LOCK(huart) 函数。或者不要在接收里面,每接收到一个字符就printf一下。
1.2 问题:
在接收中断中使用HAL_UART_Receive_IT()函数,会导致CR1的RXNEIE 置0,最后一直处于错误状态,无法进行接收。
解决 注释掉 HAL_UART_Receive_IT 中的 HAL_LOCK(huart) 函数
二、freertos+fatfs+sdio
2.1 问题:
没有加freertos时候,sd卡读写正常;加上freertos时候,mout成功,但read等其他操作返回错误3 not ready
解决: sdio和sddma的中断优先级要小于freertos的最小优先级
2.2 问题:串口接受数据异常
串口以DMA方式接受数据;但是收不到数据;
解决: 串口接收数据的任务优先级低于主任务,故经常被打断;接受数据异常;
欢迎指正
版权声明:本文为CSDN博主「weixin_45459482」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45459482/article/details/122165708
STM32开发问题记录
HAL库开发,问题罗列以及后续排查简单记录(仅适用于个人)
一、uart
1.1 问题:
打印正常,但是加入接收中断后,开始出bug,最后锁定接收中断挂掉了(备注)
原因: HAL库的串口接收发送函数有bug,就是收发同时进行的时候,会出现锁死的现象
解决: 需要注释掉 HAL_UART_Receive_IT 和 HAL_UART_Transmit_IT 中的 __HAL_LOCK(huart) 函数。或者不要在接收里面,每接收到一个字符就printf一下。
1.2 问题:
在接收中断中使用HAL_UART_Receive_IT()函数,会导致CR1的RXNEIE 置0,最后一直处于错误状态,无法进行接收。
解决 注释掉 HAL_UART_Receive_IT 中的 HAL_LOCK(huart) 函数
二、freertos+fatfs+sdio
2.1 问题:
没有加freertos时候,sd卡读写正常;加上freertos时候,mout成功,但read等其他操作返回错误3 not ready
解决: sdio和sddma的中断优先级要小于freertos的最小优先级
2.2 问题:串口接受数据异常
串口以DMA方式接受数据;但是收不到数据;
解决: 串口接收数据的任务优先级低于主任务,故经常被打断;接受数据异常;
欢迎指正
版权声明:本文为CSDN博主「weixin_45459482」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45459482/article/details/122165708
暂无评论