关于STM32f103 C8T6 串口3DMA通信问题

2019-07-21 05:14发布

各位大神,想请教下关于串口通信问题,选择配置串口3,接收和发送都由DMA完成,开启空闲中断,想实现RS485 modebus ascii协议;现出现的问题是,当我用串口助手自动50ms发送特定的字符串下去,32能正常回复正常的数据;但是当自动发送的时间小于50ms的时候,能接收到部分正确的数据,另外的部分为乱码;间隔时间越小,乱码越多,有时候甚至接收不到数据;

volatile u16 receivelen;
void USART3_IRQHandler(void)
{       
        u8 tem;
    if(USART_GetITStatus(USART3, USART_IT_IDLE) != RESET)  //
    {
       tem=USART3->SR;
       tem=USART3->DR;
       tem=tem;
        Config_If_Receive_State(ENABLE);
        RS485_First_Count = 1;
        USART_ReceiveData( USART3 );
        DMA_Cmd(DMA1_Channel2, DISABLE);
        DMA1_Channel2->CNDTR=0;
        DMA_Cmd(DMA1_Channel3, DISABLE);
        DMA1_Channel3->CNDTR=RxBufferSize ;
        DMA_Cmd(DMA1_Channel3, ENABLE);
        USART_ClearITPendingBit(USART3, USART_IT_IDLE); // ??????

}



0条回答

一周热门 更多>