这里简单介绍一下在HAL库中的中断执行步骤
以stm32f103的uart接收中断为例。
首先,在主函数中,用户调用中断函数HAL_UART_Receive_IT(&huart2,&RxData,1)(来自HAL库中的UART外设库),在该函数中,为huart结构体赋值,包括RxData的地址等等,然后加上一个标志位,“表明”开启了中断
if(huart->State == HAL_UART_STATE_BUSY_TX)
{
huart->State = HAL_UART_STATE_BUSY_TX_RX;
}
else
{
huart->State = HAL_UART_STATE_BUSY_RX;
}
其中HAL_UART_STATE_BUSY_RX与HAL_UART_STATE_BUSY_TX_RX是置位后的标志位,这个标志位用于后面判断主程序是否“开启”了中断(这里的“开启”表示需要开启的意思)。最后结束。
然后,当中断发生后,硬件置位相关位,程序跳转到USART2_IRQHandler(void

本文详细阐述了在STM32 HAL库中如何处理UART接收中断。从用户调用HAL_UART_Receive_IT函数开启中断,到硬件触发中断并执行HAL_UART_IRQHandler,再到中断服务函数UART_Receive_IT及回调函数HAL_UART_RxCpltCallback的运行过程,全面揭示了中断处理的步骤。

133

被折叠的 条评论
为什么被折叠?



