stm32开发遇到的问题及后续

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

生成海报
点赞 0

weixin_45459482

我还没有学会写个人说明!

暂无评论

相关推荐

stm32开发遇到的问题及后续

STM32开发问题记录 HAL库开发,问题罗列以及后续排查简单记录(仅适用于个人) 一、uart 1.1 问题: 打印正常,但是加入接收中断后,开始出bu

STM32CubeMx hal 驱动sg90舵机

一、舵机的控制原理 舵机通过接收PWM信号,使其进入内部电路产生一个偏置电压,触发电机通过减速齿轮带动电位器移动,使电压差为零时,电机停转,从而达到伺服的效果。即给舵机一个