HAL库串口通信例程

2019-08-17 08:55发布

参考原子哥的例程,但是用串口助手调试,现在串口助手只能收到数据,发送数据没有反应....不知道什么问题,求解答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
In丶Vic灬Tus
1楼-- · 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
}
In丶Vic灬Tus
2楼-- · 2019-08-17 13:41
 精彩回答 2  元偷偷看……
In丶Vic灬Tus
3楼-- · 2019-08-17 19:03
static void MX_USART1_UART_Init(void)
{
  huart1.Instance = USART1;
  huart1.Init.BaudRate = 9600;
  huart1.Init.WordLength = UART_WORDLENGTH_8B;
  huart1.Init.StopBits = UART_STOPBITS_1;
  huart1.Init.Parity = UART_PARITY_NONE;
  huart1.Init.Mode = UART_MODE_TX_RX;
  huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart1.Init.OverSampling = UART_OVERSAMPLING_16;
  if (HAL_UART_Init(&huart1) != HAL_OK)
  {
    Error_Handler();
  }
HAL_UART_Receive_IT(&UART1_Handler, (u8 *)aRxBuffer, RXBUFFERSIZE);
}
In丶Vic灬Tus
4楼-- · 2019-08-18 02:36
求解答0.0
mupb
5楼-- · 2019-08-18 03:26
你用上位机给开发板都发送过去而且都收到数据了,表明串口通了啊,怎么还会出现发送数据没有反应呢?再说具体一点吧。
In丶Vic灬Tus
6楼-- · 2019-08-18 04:39
 精彩回答 2  元偷偷看……

一周热门 更多>