这里简单介绍一下在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)中断服务函数