高级会员 
  
	- 积分
 - 506
 
        - 金钱
 - 506 
 
       - 注册时间
 - 2018-10-30
 
      - 在线时间
 - 163 小时
 
 
 
 | 
 
   u8 rs485_UartWrite(u8 *buf ,u8 len)                                                                                 //发送{ 
        u8 i=0;  
    Const_485=1;         
    delay_ms(3);                                                               //3MS延时 
    for(i=0;i<len;i++) 
    { 
          USART_SendData(USART1,buf[i]);                                              //通过USARTx外设发送单个数据 
    while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)==RESET);             //检查指定的USART标志位设置与否,发送数据空位标志 
    } 
        delay_ms(3); 
    Const_485=0;                         
//设置为接收模式 
 
} 
 
void USART1_IRQHandler(void)                        //串口1中断服务程序         {     u8 Res; 
        u8 i,lock=0; 
        u8 loc=9; 
 
        if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)  //接收中断(接收到的数据必须是0x0d 0x0a结尾) 
                 { 
                 Res =USART_ReceiveData(USART1);        //读取接收到的数据 
        if(USART1_RX_CNT<sizeof(USART1_RX_BUF))    //一次只能接收64个字节,人为设定,可以更大,但浪费时间 
                { 
                        USART1_RX_BUF[USART1_RX_CNT]=Res;  //记录接收到的值 
                        USART1_RX_CNT++;        //使收数据增加1  
            if(USART1_RX_CNT>(sizeof(USART1_RX_BUF)-1))USART1_RX_CNT=0;//接收数据错误,重新开始接收 
                 
                } 
 
 
 
 
 |   
 
 
 
 |