之前用485进行与屏幕的通讯。(迪文屏。用485通讯开发效率比较高)。但是在配置的时候。会发现一些问题。
1、串口IO口配置
/* USART GPIO配置 */
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推完输出
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //浮空
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用模式
/* TX */
GPIO_InitStructure.GPIO_Pin = RS485_USART_TX_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //高速
GPIO_Init(RS485_USART_TX_GPIO_PORT, &GPIO_InitStructure);
/* RX */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Pin = RS485_USART_RX_PIN;
GPIO_Init(RS485_USART_RX_GPIO_PORT, &GPIO_InitStructure);
/* 485控制引脚配置 */
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推完
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //浮空
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; //输出
GPIO_InitStructure.GPIO_Pin = RS485_RE_PIN;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(RS485_RE_GPIO_PORT, &GPIO_InitStructure);
2、使能收发数据先后。必须加延迟,等待数据处理完成
3 发送数据后,也加一点延迟在使能接收数据。不然数据可能会错乱
总之,485和232除了电平不一样之外,其他的配置基本是一样的。难点不在配置,在于你收发的使用。加上通讯协议之后的处理。比如MODBUS.。不过在一定的程度后,可以去了解了解它的其他特性,毕竟。一开始会使用可能只是为了应付工作,但是人要一定的程度,想提升还是得深入的。