STM32 HAL库串口回调函数配置失效(HAL_UART_RxCpltCallback)

小编实际操作中,用HAL_UART_RxCpltCallback函数配置接收串口数据,在测试过程中用手碰了单片机引脚之后无法再接收到数据,终于找到了解决办法,就是自己使能接收中断和自己定义中断回调函数;

使能中断

    __HAL_UART_ENABLE_IT(&huart1,UART_IT_IDLE);                //空闲中断使能
    __HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE);                //接收中断使能

中断回调函数

void user_uart1IT_ReceiveCallback(void)
{
    static uint8_t* pBuff    =    uart1_data.uart1_rxbuff;
    static uint8_t size_cnt=0;
    uint8_t receive_dat;
    
    if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_RXNE) != RESET)        //uart rx flag
    {
        receive_dat = (uint16_t) READ_REG(huart1.Instance->DR);
        *(pBuff++) = receive_dat;
        size_cnt++;
        __HAL_UART_CLEAR_FLAG(&huart1,UART_FLAG_RXNE);
    }
    
    if(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_IDLE) != RESET)        //uart idle flag
    {
        uart1_state.bits.interrupt_idle = ON;                                            //set flag
        uart1_data.uart1_count = size_cnt;
        receive_dat = (uint16_t) READ_REG(huart1.Instance->DR);        //clear reg
        size_cnt=0;
        pBuff    =    uart1_data.uart1_rxbuff;
        __HAL_UART_CLEAR_IDLEFLAG(&huart1);
    }

}

 

本程序包含自己定制的AT指令上图片

源码链接:https://github.com/NoSmallWhite/WL-open-projects

文件名:demo-adc-vet6-20200708-1732 自定义AT指令字取出任意字符串