STM32HAL库串口接收中断配置失效 HAL_UART_Receive_IT()
函数调用无效
问题:
- 使用stm32的hal库配置串口的时候调用
HAL_UART_Receive_IT()
函数开启串口接收中断,但是发现没有作用,将HAL_UART_Receive_IT()
函数丢在MX_USART2_UART_Init()
函数最后可以,但是丢在HAL_UART_MspInit()
函数最后却不行。
- 查看
HAL_UART_Receive_IT()
函数原型发现,在调用此函数的时候会首先进行判断
if (huart->RxState == HAL_UART_STATE_READY)
{
...
}
【嵌入式开发|STM32HAL库串口接收中断HAL_UART_Receive_IT()配置失效】它会首先判断串口的状态,只有串口转态为就绪态的时候才会进行配置,而执行
HAL_UART_MspInit()
函数的时候,串口初始化并未完成,因此串口的状态不为就绪态,因此HAL_UART_Receive_IT()
函数实际并不会执行。所以调用
HAL_UART_Receive_IT()
函数必须在串口初始化完成之后调用,一般放在MX_USART2_UART_Init()
函数最后推荐阅读
- fpga|【入门学习四】基于 FPGA 使用 Verilog 实现串口回传通信代码及原理讲解
- fpga开发|博客更新计划的说明
- 嵌入式开发|键盘驱动程序的修改
- 设备驱动|设备驱动开篇
- STM32F1【标准库开发】|STM32F103ZET6【标准库函数开发】------05.通用定时器TIM4四个通道输出占空比、频率可调的PWM信号
- 单片机|基于单片机的通用定时器调度器SmartTimer
- STM32笔记|(十二)STM32——NVIC中断优先级管理
- FPGA技巧整理专栏|FPGA中串口通信的时钟频率和波特率计数
- 单片机|MPC5744p时钟模块