我晒一下代码吧 麻烦兄弟们给看看
void RS485_init(void)
{
rs485_tx_ok=YES;
GPIO_ResetBits(GPIOB,GPIO_Pin_5);//RTS信号
}
void com485_hnd(void)
{
if(rs485_tx_ok==YES)
{
if((USART_GetFlagStatus(USART1, USART_FLAG_RXNE))==SET)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_5);//RTS信号
RxBuffer[USART_MODULE_3][rxcnt1]=USART_ReceiveData(USART1);
rxcnt1=(rxcnt1+1) % RxBufferSize;
rx_tm1=0;
}
}
if(((USART_GetFlagStatus(USART1, USART_FLAG_TXE))==SET)&&(tx1_len>0))
{
GPIO_SetBits(GPIOB,GPIO_Pin_5);//RTS信号
if(rxd_flag==0x55)USART_SendData(USART1, TxBuffer[USART_MODULE_3][txpnt1]);
txpnt1=(txpnt1+1) % TxBufferSize;
tx1_len--;
if (tx1_len==0)
{
GPIO_ResetBits(GPIOB,GPIO_Pin_5);//RTS信号
tx_tm1=TX_TIMEOUT;
rs485_tx_ok=0;
}
}
if(tx1_len>0) GPIO_SetBits(GPIOB,GPIO_Pin_12);//通讯灯
else GPIO_ResetBits(GPIOB,GPIO_Pin_12);
}
|