今天调485通讯功能. 调了2个小时,才找到问题.
特别注意的是: 485为半双工通讯. 在通讯方向改变时,需要加一定延时,否则 通讯不正常.
RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO, ENABLE); //IO重映射时
GPIO_SetBits(GPIOC,GPIO_Pin_7); //RE电平为高,设为发送
for(cou=0;cou<20000;cou++); //延时
USART_SendData(USART3,temp+1); //发送数据
while(USART_GetFlagStatus(USART3,USART_FLAG_TXE)==RESET);
USART_ClearFlag(USART3,USART_FLAG_TXE);
for(cou=0;cou<20000;cou++); //等待硬件发送完成
GPIO_ResetBits(GPIOC,GPIO_Pin_7);//再改变RE状态,改为接收
|