使用STM32CubeMX配置了串口中断后,实际硬件没有反应,串口接受也没有反应。反复检查了几遍,配置也并没有错误。
经过反复排查,发现CubeMX在配置串口中断没有填加使能函数
也就是下面这句
__HAL_UART_ENABLE_IT(&huart2,UART_IT_RXNE);
整体的串口初始化(默认在usart.c文件中配置)配置完成后应该与下面相似,除了我在下面代码中加入注释的部分,其余STM32CubeMX都是默认配置好的
void MX_USART2_UART_Init(void)
{
huart2.Instance = USART2;
huart2.Init.BaudRate = 9600;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE;
huart2.Init.Mode = UART_MODE_TX_RX;
huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart2.Init.OverSampling = UART_OVERSAMPLING_16;
HAL_UART_Init(&huart2);
/* USER CODE BEGIN USART2_UART_Init 0 */
__HAL_UART_ENABLE_IT(&huart2,UART_IT_RXNE); //默认不配置,需要手动添加
/* USER CODE END USART2_UART_Init 0 */
}
使用STM32CubeMX配置了串口中断后,实际硬件没有反应,串口接受也没有反应。反复检查了几遍,配置也并没有错误。
经过反复排查,发现CubeMX在配置串口中断没有填加使能函数
也就是下面这句
__HAL_UART_ENABLE_IT(&huart2,UART_IT_RXNE);
整体的串口初始化(默认在usart.c文件中配置)配置完成后应该与下面相似,除了我在下面代码中加入注释的部分,其余STM32CubeMX都是默认配置好的
void MX_USART2_UART_Init(void)
{
huart2.Instance = USART2;
huart2.Init.BaudRate = 9600;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE;
huart2.Init.Mode = UART_MODE_TX_RX;
huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart2.Init.OverSampling = UART_OVERSAMPLING_16;
HAL_UART_Init(&huart2);
/* USER CODE BEGIN USART2_UART_Init 0 */
__HAL_UART_ENABLE_IT(&huart2,UART_IT_RXNE); //默认不配置,需要手动添加
/* USER CODE END USART2_UART_Init 0 */
}
举报