高级会员

- 积分
- 505
- 金钱
- 505
- 注册时间
- 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;//接收数据错误,重新开始接收
}
|
|