/* USER CODE BEGIN USART1_Init 2 */
__HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE);
__HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE);
__HAL_UART_ENABLE(&huart1);
/* USER CODE END USART1_Init 2 */
首先在cube生成的串口配置代码中加入上图代码,开启空闲中断,接受中断。
static uint8_t buf[100];
static uint8_t a = 0;
if(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_RXNE)){
__HAL_UART_CLEAR_FLAG(&huart1,UART_FLAG_RXNE);
buf[a++] = huart1.Instance->DR;
if(a >= 100){
a = 0;
}
}else if(__HAL_UART_GET_FLAG(&huart1,UART_FLAG_IDLE)){
__HAL_UART_CLEAR_IDLEFLAG(&huart1);//清除空闲中断
// 空闲中断
a = 0;
}
return;
然后在对应的中断函数中采用上图代码,不要用hal的串口中断处理函数,所以最后一行直接返回了。
|