高级会员

- 积分
- 539
- 金钱
- 539
- 注册时间
- 2019-7-3
- 在线时间
- 167 小时
|
1金钱
附上标准库实现485全双工通信代码,这个是使用了很久测试过的代码。- void ReceiveMode_485(USART_TypeDef* USARTx)
- {
- while (USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET){};
- GPIO_ResetBits(GPIOA,GPIO_Pin_0);
- delayus(3);
- }
- void USARTSendString(USART_TypeDef* USARTx, u8 *data, u8 len)
- {
- u8 i;
- GPIO_SetBits(GPIOA,GPIO_Pin_0);
- delayus(3);
- for(i = 0; i < len; i++)
- {
- /* Loop until the end of transmission */
- while (USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET)
- {
- }
- //Send out one byte
- USART_SendData(USARTx, data[i]);
- }
- ReceiveMode_485(USARTx);
- }
复制代码 下面是附上HAL库新写的代码,- void RS485_Send_data(uint8_t *pdata,uint8_t data_size)
- {
-
-
- uint8_t i;
- SendMode_485();
- for(i = 0; i < data_size; i++)
- {
- /* Loop until the end of transmission */
- while(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_TC) == RESET);
- {
- }
- //Send out one byte
- HAL_UART_Transmit(&huart1,pdata,data_size,1000);
- }
- RS485_Receivedata();
-
- }
-
- void RS485_Receivedata()
- {
- while(__HAL_UART_GET_FLAG(&huart1, UART_FLAG_TC) == RESET);
- ReceiveMode_485();
- }
复制代码 我的HAL库里面的串口配置就不用重复上传了。在TTL模式和232通信的情况下,是可以实现全双工通信,按理来说就是配置485接受和发送的问题了。
但是依旧没有实现效果。有空的大佬可以看一下
|
|