我485电路是自动收发的,按照原子哥的例程,但是没有原子哥写的复杂,用串口调试助手发送数据,然后再接收发回的数据,但是目前这程序在串口调试助手界面有个别数据丢失,比如,发送abcd,只能接收abd,求各位大神建议啊
void USART1_IRQHandler(void)
{
u8 res;
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //接收到数据
{
//USART_ClearITPendingBit(USART1,USART_IT_RXNE);
res =USART_ReceiveData(USART1); //读取接收到的数据
RS485_RX_BUF[USART_RX_STA]=res;
USART_RX_STA++;
delay_ms(2);
}
}
int main(void)
{
u8 t=0;
int len;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
LED_Init(); //初始化与LED连接的硬件接口
RS485_Init(9600); //初始化RS485
while(1)
{
if(USART_RX_STA)
{
len=USART_RX_STA;
printf("您发送的数据为:
");
for(t=0;t<len;t++)
{
while(USART_GetFlagStatus(USART1,USART_FLAG_TC) == RESET);
USART_SendData(USART1, RS485_RX_BUF[t]); //向串口1发送数据
}
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
printf("
");//插入换行
USART_RX_STA =0;
}
}
}
一周热门 更多>