|
楼主 |
发表于 2016-5-12 20:25:58
|
显示全部楼层
hgqlyl 发表于 2016-5-12 18:11
1、USART_ReceiveData(USART2); 返回的是一个字节数据,也就是你说的0xAA,你的判断接收策略有点问题,我觉 ...
谢谢您,您看这样修改行吗?其中a,b,c,rx_size的初始值均为0.调试的时候还是收不到数据,Angle全是0.
void USART2_IRQHandler(void) //串口2中断服务程序
{
while (USART_GetITStatus(USART2,USART_IT_RXNE)!=RESET) //接收中断
{
a=USART_ReceiveData(USART2);
if((c==1)&&(rx_size!=0))
{
sbus_rx_buffer[rx_size]=USART_ReceiveData(USART2); //读取接收到的数据
rx_size++;
if(rx_size==13)
{
rx_size=0;
c=0;
}
return;
}
if((b==0)&&(a==0xAA))
{
b=1;
}
d=USART_ReceiveData(USART2);
if((b==1)&&(d==0xAA))
{
rx_size=1;
b=0;
c=1;
}
}
}
主程序里面
while(1)
{
for(i=0;i<6;i++)
{
Angle=(float)((sbus_rx_buffer[2*i+2]|sbus_rx_buffer[2*i+3]<<8)/100.0);
}
Go(0,0,0,0,Angle[4]);
delay_ms(3000);
i=0;
}
|
|