初级会员
- 积分
- 105
- 金钱
- 105
- 注册时间
- 2018-4-6
- 在线时间
- 25 小时
|
3金钱
本帖最后由 会飞的萨摩 于 2018-6-1 03:23 编辑
//协议如下
//上位机发送读PID数据的命令为:0X8A 0X8B 0X1C 0XAD + 无用数据 + SUM
///串口1接收1个字节/////返回值:接收到的字节
///////
int usart1_receive_char()
{
u8 c;
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);//Ñ-»··¢Ëí,Ö±μ½·¢Ëííê±Ï
c=USART_ReceiveData(USART1);
return c;
}
//////读pid
///返回i。1成功,0失败;
int Read_pid()
{
u8 i=0;
if(usart1_receive_char()==0x8A) //接收到的第一个字节是不是0x8A
{
if(usart1_receive_char()==0x8B) //接收到的第二个
{
if(usart1_receive_char()==0x1C) //接收到的第三个
{
if(usart1_receive_char()==0xAD) i=1;
}
}
}
return i;
}
上次写的单片机上传pid数据到匿名上位机写出来了。不过是一直上传,就想用那个‘读pid’的按钮来控制,
当我点一下读pid,上位机就发送一串数据到下位机,然后我的程序就判断接收到这个命令上传pid数据。
下面是主函数中的那条判断的语句
if(Read_pid()) usart1_report_pid(1,0,3,4,5,6,6,6,6);
就想问问各位大佬,我这个逻辑没问题吧?
|
-
读pid按钮_如上
最佳答案
查看完整内容[请看2#楼]
可以了,我把接收写在中断里面就行了,先把接收到的数据打印出来,看看点下按钮会发什么数据给下位机,再根据这串数据写程序
|