各位大神,想请教下关于串口通信问题,选择配置串口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); // ??????
}
一周热门 更多>