stm32 hal串口中断分析
startup_stm32f103xe.s(115) : DCD USART1_IRQHandler
USART1_IRQHandler
HAL_UART_IRQHandler //调用HAL库中断处理公用函数。 功能:对接收到的数据进行判断和处理 判断是发送中断还是接收中断,然后进行数据的发送和接收,在中断服务函数中使用
/* UART in mode Receiver ---------------------------------------------------*/
if((tmp_flag != RESET) && (tmp_it_source != RESET)) //如果接收数据,则会进行接收中断处理函数
{
UART_Receive_IT(huart);
/*Call legacy weak Rx complete callback*/
HAL_UART_RxCpltCallback(huart);
}
/* UART in mode Transmitter ------------------------------------------------*/
if (((isrflags & USART_SR_TXE) != RESET) && ((cr1its & USART_CR1_TXEIE) != RESET))
{//如果发送数据,则会进行发送中断处理函数
UART_Transmit_IT(huart);
return;
}
中断调用流程:
USART1_IRQHandler(void)(中断服务函数)
-> HAL_UART_IRQHandler(UART_HandleTypeDef *huart)(中断处理函数)
-> UART_Receive_IT(UART_HandleTypeDef *huart) (接收函数)
-> HAL_UART_RxCpltCallback(huart);(中断回调函数)