HAL库串口通信例程

2019-08-17 08:55发布

参考原子哥的例程,但是用串口助手调试,现在串口助手只能收到数据,发送数据没有反应....不知道什么问题,求解答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
10条回答
In丶Vic灬Tus
2019-08-17 22:49
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
        if(huart->Instance==USART1)
        {
                if((USART_RX_STA&0x8000)==0)
                {
                        if(USART_RX_STA&0x4000)
                        {
                                if(aRxBuffer[0]!=0x0a)USART_RX_STA=0;
                                else USART_RX_STA|=0x8000;       
                        }
                        else
                        {       
                                if(aRxBuffer[0]==0x0d)USART_RX_STA|=0x4000;
                                else
                                {
                                        Rx_buff[USART_RX_STA&0X3FFF]=aRxBuffer[0] ;
                                        USART_RX_STA++;
                                        if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;
                                }                 
                        }
                }
        }

}

void USART1_IRQHandler(void)                       
{
        u32 timeout=0;
#if SYSTEM_SUPPORT_OS                
        OSIntEnter();   
#endif
       
        HAL_UART_IRQHandler(&huart1);       
       
        timeout=0;
    while (HAL_UART_GetState(&huart1) != HAL_UART_STATE_READY)
        {
         timeout++;
     if(timeout>HAL_MAX_DELAY) break;               
        }
     
        timeout=0;
        while(HAL_UART_Receive_IT(&huart1, (u8 *)aRxBuffer, RXBUFFERSIZE) != HAL_OK)
        {
         timeout++;
         if(timeout>HAL_MAX_DELAY) break;       
        }
#if SYSTEM_SUPPORT_OS                
        OSIntExit();                                                                                           
#endif
}

一周热门 更多>