历史上的今天

今天是:2024年09月22日(星期日)

正在发生

2021年09月22日 | 【STM32平衡小车】APP调试协议及代码分析

发布者:Qingliu2022 来源: eefocus关键字:STM32  平衡小车 手机看文章 扫描二维码
随时随地手机看文章

一、首页界面

printf("{A%d:%d:%d:%d}$",a,b,c,d);


a、b、c、d分别为需要显示的状态:


a对应左边的码盘,b对应右边的码盘,通过百分比表示,可以用于速度等状态的显示,范围是0—100(%)

c主要是用于显示电量,范围也是0—100(%)

d是角度值,范围是-180°—180°。

在这里插入图片描述

APP控件名称与发送指令对应对应关系

image.png

二、波形界面

printf("{B%d:%d:%d:%d:%d}$",a,b,c,d,e);


5个波形通道!


a、b、c、d、e 为需要显示的波形,发送的参数必须为整型变量,如果需要显示浮点数,放大一定的倍数之后再打印出来。


需要注意的是,每个通道发送的数据不可超过 5 个,但是可以少于 5 个。

在这里插入图片描述

三、调试界面

printf("{B%d:%d:%d:%d:%d:%d:%d:%d:%d}$",a,b,c,d,e,f,g,h,i);


调试界面可以进行 9 个通道【0-8】的参数调节,点击每个通道的文字,可以编辑该通道的名称、调节范围、数值等。点击右上方的菜单按钮,可以弹出设置界面。

在这里插入图片描述
在这里插入图片描述

【实时发送参数】,使能后在推动滑块到某一位置松开手便发送相应的参数。

【发送所有参数】,上述【实时发送参数】如果不使能,则需要点击下方的,一起发送 9 个通道的数据。(注意:程序暂时没有处理这个发送所有参数)


【掉电保存参数】,主要是把调节好的参数,写入下位机的 Flash 或者 EEPROM 等,实现掉电保存。


【获取设备参数】,可以接收下位机的参数并更新到当前的调节界面。接收该指令之后,下位机需要把参数打印出来。


APP控件名称与发送指令对应对应关系

image.png

四、聊天界面

在这里插入图片描述

下位机(单片机)发送消息到APP,格式参考:printf("{#hello world}$");

APP发送消息到下位机(单片机)可直接发送。

五、代码

/**************************************************************************

函数功能:串口3接收中断

入口参数:无

返回  值:无

**************************************************************************/

void USART3_IRQHandler(void)

{

if(USART3->SR&(1<<5))//接收到数据

{   

static u8 Flag_PID,i,j,Receive[50];

static float Data;

Usart3_Receive=USART3->DR; 

APP_RX=Usart3_Receive;

if(Usart3_Receive>=0x41&&Usart3_Receive<=0x48)//0x41-'A'...0x48-'H'

Flag_Direction=Usart3_Receive-0x40;

else if(Usart3_Receive<10)  

Flag_Direction=Usart3_Receive;

else if(Usart3_Receive==0x5A)//0x5A-'Z'

Flag_Direction=0;


//以下是与APP调试界面通讯

if(Usart3_Receive==0x7B) Flag_PID=1;   //APP参数指令起始位 - 0x7B对应的ASCII是'{'

if(Usart3_Receive==0x7D) Flag_PID=2;   //APP参数指令停止位 - 0x7D对应的ASCII是'}'


if(Flag_PID==1)  //采集数据 将APP参数指令保存到Receive数组中,包括`{`但不包括'}'

{

Receive[i]=Usart3_Receive;

i++;

}

if(Flag_PID==2)  //分析数据

{

if (Receive[3]==0x50) PID_Send=1; //0x7D对应的ASCII是'P'

else  if(Receive[3]==0x57) Flash_Send=1; //0x57对应的ASCII是'W'

else  if(Receive[1]!=0x23) //0x23对应的ASCII是'#'  对应APP拖动滑块然后松手发送参数到下位机(单片机)的操作

{

for(j=i;j>=4;j--)//假如发送指令为{0:120},该for循环的作用是取出120

{

Data+=(Receive[j-1]-48)*pow(10,i-j);//注意此处的49对应0x30

}

switch(Receive[1])//对应的通道

{

case 0x30:  Bluetooth_Velocity=Data;break;

case 0x31:  Velocity_KP=Data;break;

case 0x32:  Velocity_KI=Data;break;

case 0x33:  break;

case 0x34:  break;

case 0x35:  break;

case 0x36:  break;

case 0x37:  break; //预留

case 0x38:  break; //预留

}

}  

Flag_PID=0;//相关标志位清零

i=0;

j=0;

Data=0;

memset(Receive, 0, sizeof(u8)*50);//数组清零

}

 


官方说明文档

资料获取 - 提取码:y81g

ASCII码表

在这里插入图片描述

关键字:STM32  平衡小车 引用地址:【STM32平衡小车】APP调试协议及代码分析

上一篇:【STM32平衡小车】PC端上位机协议及代码
下一篇:【STM32平衡小车】一篇快速上手MPU6050

推荐阅读

今日(9月21日),雷诺-日产-三菱汽车(以下简称“联盟”)宣布与谷歌(Google)建立技术合作伙伴关系。根据协议,将在联盟旗下销售的多个品牌和各级别车型上配置安卓(Android)操作系统,为消费者提供智能车载娱乐和信息服务,以及以用户为中心的应用服务。该配置提升计划将于2021年正式启动。根据技术合作协议,联盟成员在多个市场销售的车辆都将使用全...
(文章来源:中科罗伯特机器人学院) 现在我国主要的工业机器人有、搬运、喷漆、切割、、码垛机器人。主要是在汽车行业、电气行业等有着较为广泛的应用,在中国制造业向智造业转型的趋势下,工业机器市场的发展被人们看好。 综合看来,除了核心零部件研发的问题,我国的工业机器人在、算法、硬件、机械等方面还有很多的额问题需要解决,如工业机器人...
一、时钟树 普通的MCU,一般只要配置好GPIO 的寄存器,就可以使用了。STM32为了实现低功耗,设计了非常复杂的时钟系统,必须开启外设时钟才能使用外设资源。 左边开始,从时钟源一步步分配 到外设时钟。 从时钟频率来说,又分为高速时钟和低速时钟,高速时钟是提供给芯片主体的主时钟,而低速时钟只是提供给芯片中的 RTC...
日前,国家统计局披露的数据显示,8月份,规模以上工业增加值同比实际增长5.3%,比2019年同期增长11.2%,两年平均增长5.4%。其中,集成电路产品产量为321亿块,同比增长39.4%;1—8月,集成电路产品产量为2399亿块,同比增长48.2%。  分行业看,8月份,汽车制造业下降12.6%,铁路、船舶、航空航天和其他运输设备制造业增长1.3%,电气机械和器材制造业增...

史海拾趣

问答坊 | AI 解惑

重庆邮电大学06年考研复试《低频电子电路》考试大纲

(一)了解半导体材料的导电特点,熟悉半导体元器件(晶体二极管、晶体三极管和场效应管)的外部特性与主要性能特点。   (二)晶体三极管和场效应管构成的单级放大电路(共发或共源、共基、共集、差放)的工作点近似计算与设置,小信号概念,以 ...…

查看全部问答∨

与80后的朋友们闲聊

在这里玩的,很大一部分应该是像我这样的80年代生人。网络语言曰:80后。 这一拨人被打上了很多标签,用Google搜索的自动联想功能可以看到,往往和教育、就业、房价等社会敏感的问题联系起来……这是为什么呢? http://www.labournet.c ...…

查看全部问答∨

SPI 程序问题请教!

SPI0是主机,SPI1是从机 void SPI1_Isr (void){    RcvData = SSP1DR;                          ...…

查看全部问答∨

WinCE 4.2 中 File Server 的问题

看到别人在 WinCE 4.2 中开启了 File Server ,于是我也想试试看。 1、为操作系统加载了 File Server 组件; 2、配置了注册表项; 运行操作系统后,发现 smbserver.dll 文件已经在 \\Windows 文件夹中了,但是在 PC 机中还是无法用 \\\\Windows ...…

查看全部问答∨

cadence spb 16.2 pcb入门中文学习教程

cadence spb 16.2 pcb入门学习的朋友们要注意了!!…

查看全部问答∨

STM32的优势主要有哪些?

                                 STM32的优势主要有哪些?…

查看全部问答∨

双口ram的仿真

quartus ip核的双口ram仿真没有输出,总是为高阻态,不解。…

查看全部问答∨

急招电子标签工程师

急招电子标签工程师 具体要求: 1、大专以上学历,有两年相关工作经验 1、了解RFID产业方向,熟悉RFID市场及产品厂商; 2、 至少两年以上电子标签行业工作经验,对RFID/DR/RF/EAS產品有清晰理解; 3、掌握RFID系统原理、结构及技术标准等相关 ...…

查看全部问答∨

一块产品的开发流程和细节的问题

我是新人,想请教一个问题,如果推出一款产品一般的项目步骤是怎么样的?  是不是一开始要制作样机,然后测试样机,再批量化生产?有关细节就是: 1、电子元器件怎么样合理的采购 2、PCB打样一般找什么样的厂家 3、样机完成测试后,产 ...…

查看全部问答∨

怎样将FPGA的一个时钟信号变成多个时钟信号,求救啊

就是把固有的时钟,变成三个一样时钟信号就行了…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved