串口回调函数

应注意,前一段报文接收后,下一段报文的首字节位置将位于前报文尾,故增加超时判定,超时时,重置字节接收对应缓冲区位置,并将首字节转移。

/* UART rx callback for continuous reception, byte by byte */
void rxCallback(void *driverState, uart_event_t event, void *userData)
{
    /* Unused parameters */
    (void)driverState;
    (void)userData;


    /* Check the event type */
    if (event == UART_EVENT_RX_FULL){
        /* The reception stops when newline is received or the buffer is full */
        if(TIMER_HAL_IsUart2msTickTimeout()){
            Rx_buffer[0] = Rx_buffer[u8bufferIdx];
            u8bufferIdx = 0;
            TIMER_HAL_ClearTickTimeout();
        }
        if(u8bufferIdx <= BUFFER_SIZE - 2){
            u8bufferIdx++;
            LPUART_DRV_SetRxBuffer(INST_LPUART1, &Rx_buffer[u8bufferIdx], 1U);
            TIMER_HAL_ClearTickTimeout();
        }else{
            u8bufferIdx = 0;
            LPUART_DRV_SetRxBuffer(INST_LPUART1, &Rx_buffer[0], 1U);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值