标题: 基于STM32以及CUBEMX的项目分享(二) [打印本页]

作者: wells0000    时间: 2023-8-17 10:14
标题: 基于STM32以及CUBEMX的项目分享(二)
   本来这期打算给大家分享PID怎么用的,但是我想到一个问题,我们说PID小车的效果怎么样,咱们不能仅仅通眼睛去看吧,因此我们需要一个上位机,这里我推荐一个上位机叫做VOFA+,我看很少有人去讲这个上位机,那今天我来讲讲吧,我也在这个论坛学习了很长时间了,现在也给这个论坛做点贡献,那么我宣布本期的分享内容就是基于STM32以及CUBEMX的VOFA+上位机曲线绘制教学,下面我们开始吧。
第一步、我们要有上位机:

在此我附上这个上位机官网的链接:百度vofa,去官网下载就可以了,当然我也会在文末给出一个安装包。

第二步、我们要配置这个上位机软件  按照串口配置进行参照就可以了,我们选用的是JUSTFLOAT这个协议,但是很多人更喜欢其他的协议,因为其他的协议不需要写特定的代码比较方便,但是JUSTFLOAT这个协议适合高频的数据发送。

第三步、相关通信协议
//这个就是将浮点数转换成4个字节的代码,具体怎么实现大家还自行研究,我也没深刻研究。
  1. /**************************************************************************
  2. *功  能: 将浮点数转换成四个单字节数值
  3. *输  入: f:浮点数 byte储存空间(4个字节)
  4. *返回值: none
  5. **************************************************************************/
  6. //VOFA通讯协议
  7. void Float_to_Byte(float f,uint8_t byte[])   //参考[url]https://blog.csdn.net/ls667/article/details/50811519[/url]博客
  8. {
  9. FloatLongType fl;
  10. fl.fdata=f;
  11. byte[0]=(unsigned char)fl.ldata;
  12. byte[1]=(unsigned char)(fl.ldata>>8);
  13. byte[2]=(unsigned char)(fl.ldata>>16);
  14. byte[3]=(unsigned char)(fl.ldata>>24);
  15. }
复制代码
  1. typedef union   //定义结构
  2. {
  3. float fdata;
  4. unsigned long ldata;
  5. }FloatLongType;
复制代码
第四步、单片机通信协议
以下是这个协议的规则,我们需要严格执行。
因此我们定义一个数组进行存放帧尾
  1. uint8_t Send_tail[4]={0x00, 0x00, 0x80, 0x7f};//帧尾
复制代码

那么我们绘制曲线的方法是什么思路呢?
--->data1 data2 .... datan 帧尾 data1 data2 .... datan 帧尾 data1 data2 .... datan 帧尾 data1 data2 .... datan 帧尾这样即可
下面附上我的代码: PID_Test.7z (5.18 MB, 下载次数: 9)






欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1