中级会员
- 积分
- 375
- 金钱
- 375
- 注册时间
- 2016-9-26
- 在线时间
- 59 小时
|
5金钱
本帖最后由 单井老头 于 2016-12-10 13:30 编辑
使用匿名四轴上位机测试,自己按照协议仿写了一个测试函数。[mw_shl_code=c,true]void test_send_data(u16 a1,u16 a2,u16 a3,u16 a4,u16 a5,u16 a6)
{
u8 tbuf[12];
tbuf[0]=(a1>>8)&0XFF;//取aacx高8位数据存放到tbuf[0]
tbuf[1]=a1&0XFF;//取aacx低8位数据
tbuf[2]=(a2>>8)&0XFF;
tbuf[3]=a2&0XFF;
tbuf[4]=(a3>>8)&0XFF;
tbuf[5]=a3&0XFF;
tbuf[6]=(a4>>8)&0XFF;
tbuf[7]=a4&0XFF;
tbuf[8]=(a5>>8)&0XFF;
tbuf[9]=a5&0XFF;
tbuf[10]=(a6>>8)&0XFF;
tbuf[11]=a6&0XFF;
usart1_niming_report(0XA1,tbuf,12);//自定义帧,0XA1
} [/mw_shl_code][mw_shl_code=c,true]int main(void)
{
u16 a1=1,a2=2,a3=3,a4=4,a5=5,a6=6;
delay_init(); //延时函数初始化
uart_init(115200); //串口初始化为500000
while(1)
{
t++;
{
if(50==t){LED1=!LED1;delay_ms(5);t=0;}
test_send_data(a1,a2,a3,a4,a5,a6);
}
}[/mw_shl_code]
然后在主函数中调用该函数向上位机发送数据,但收到的数据不正确,可能的原因有哪些?
|
最佳答案
查看完整内容[请看2#楼]
无语了。。。问题找到了。原因是在画PCB的时候将串口1的RX,TX标注反了,导致的正确的串口*交叉接法接受数据反而错误。唉,耽误了一天时间。PS:擦,还有关键字过滤,额。。。
|