×
单片机 > 单片机程序设计 > 详情

STM32F4的HAL库开启串口空闲中断

发布时间:2020-08-21 发布时间:
|

串口接收数据时,开启空闲中断后可在接收完成触发中断,再去做进一步处理,但找了半天没找掉HAL库的使能某中断的函数,以及判断是哪个中断触发的函数,原来在stm32f4xx_hal_uart.h中有相关宏定义。


使能中断的宏定义

__HAL_UART_ENABLE_IT(__HANDLE__, __INTERRUPT__)


判断是触发哪个中断的宏定义

__HAL_UART_GET_FLAG(__HANDLE__, __IT__)


清除IDLE的中断标志位的宏定义

__HAL_UART_CLEAR_IDLEFLAG(__HANDLE__)


我是要开启所有串口的空闲中断,所以在stm32f4xx_hal_uart.c中的HAL_UART_Init()函数中添加了使能串口空闲中断的宏定义


    /*Enable the IDLE Interrupt*/

    __HAL_UART_ENABLE_IT(huart,UART_IT_IDLE);


然后在stm32f4xxit.c中向对应的串口中断服务函数中添加判断是否为空闲中断,若是空闲中断则进入空闲中断处理函数,空闲中断处理函数是自己写的。


if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_IDLE) != RESET)

{

    UART_IDLECallBack(&huart1);

}


进入串口的空闲中断服务函数后,清除空闲中断标志位,然后在做自己想对数据做的处理。


void UART_IDLECallBack(UART_HandleTypeDef *huart)

{

    /*uart1 idle processing function*/

    if(huart == &huart1)

    {

        __HAL_UART_CLEAR_IDLEFLAG(&huart1);

        /*your own code*/

    }

    /*uart2 idle processing function*/

    if(huart == &huart2)

    {

        __HAL_UART_CLEAR_IDLEFLAG(&huart2);

        /*your own code*/

    }

    /*uart3 4 5 6... idle processing function*/

    ...     ...


}


关键字:STM32F4  HAL库  串口  空闲中断 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
MSP430F5529 上手小例程2