123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #include "ScreenMaster485.h"
- #include "usart.h"
- #include "Dwin.h"
- //////////////////////////////////////////////////////////////////////////////////
- void TestUsart3_Receive(void)
- {
- if((usart3_rx_flag)&&(USART3_RX_BUF[0]==0x12))
- {
- usart3_rx_flag=0;
- ScreenMaster485_Send_Data(USART3_RX_BUF,rx3_len);
- }
-
-
-
- }
- //RS485发送len个字节.
- //buf:发送区首地址
- //len:发送的字节数(为了和本代码的接收匹配,这里建议不要超过64个字节)
- uint8_t screen_buf[512];
- volatile uint8_t screen_delay=0;
- void ScreenMaster485_Send_Data(uint8_t *buf,uint8_t len)
- {
- int retry;
-
- do
- {
- osDelay(1);
- }while(huart3.gState != HAL_UART_STATE_READY);
- do
- {
- osDelay(1);
- }while(screen_delay);
- usart3_rx_flag=0;
- ScreenMaster485_TX_Set(1); //设置为发送模式
- // HAL_UART_Transmit(&huart3,buf,len,200);//串口3发送数据
- memcpy(screen_buf,buf,len);
- if(HAL_UART_Transmit_IT(&huart3,screen_buf,len)!=HAL_OK)
- {
- ScreenMaster485_TX_Set(0); //设置为接收模式
- }
- }
- //RS485模式控制.
- //en:0,接收;1,发送.
- void ScreenMaster485_TX_Set(uint8_t en)
- {
- if(en==1)HAL_GPIO_WritePin(GPIOE,GPIO_PIN_15,GPIO_PIN_RESET);
- else HAL_GPIO_WritePin(GPIOE,GPIO_PIN_15,GPIO_PIN_SET);
- }
|