最近项目中遇到了一个问题,因为开始用freertos,然后想加入串口收发功能。打印正常,但是加入接收中断后,开始出bug,最后锁定接收中断挂掉了。
原因:HAL库的串口接收发送函数有bug,就是收发同时进行的时候,会出现锁死的现象。
解决:需要注释掉HAL_UART_Receive_IT 和 HAL_UART_Transmit_IT 中的 __HAL_LOCK(huart) 函数
【STM32CUBE HAL库 关于串口usart收发的一个问题】--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在接收中断中使用HAL_UART_Receive_IT()函数,会导致CR1的RXNEIE 置0,最后一直处于错误状态,无法进行接收。
处理办法:注释掉HAL_UART_Receive_IT 中的 __HAL_LOCK(huart) 函数
推荐阅读
- stm32|基于STM32和freeRTOS智能门锁设计方案
- 日常分享|共享充电宝方案原理,具体部件组成以及主控MUC参数
- #|ARM裸机开发(汇编LED灯实验(I.MX6UL芯片))
- STM32|STM32的四种IO输出模式
- STM32 远程升级(ISP / IAP)
- stm32|stm32f103can总线过滤器配置
- STM32CubeMX配置SDIO模式(非DMA方式)
- STM32|如何建一个STM32F030标准库工程模板
- STM32 时钟RCC相关配置参考stm32f10x_rcc.h
- STM32 NVIC