一、所需资源

硬件:正点原子无线烧录器
软件:MiniBalance波形显示上位机

二、CUBE配置

2.1配置串口

使用CUBEMX配置串口,默认使用串口1,波特率为115200

2.1.1将串口模式配置为Asynchronous

2.2.2波特率设置为115200

2.2配置定时器

配置定时器频率为1kHz,并打开中断。
频率计算公式:
频率=主时钟频率/预分频系数(PSC)/自动重装值(ARR)

2.2.1设置时钟源

将时钟源设为Internal Clock

2.2.2设置频率

2.2.3打开定时器中断

三、代码实现

3.1在中断回调函数中进行计数

3.2调用波形显示

3.3将以下两份代码保存为.c和.h文件,添加到工程中

DataScope_DP.c

#include "DataScope_DP.h"
unsigned char DataScope_OutPut_Buffer[42] = {0};      //串口发送缓冲区/*--------------------------------------------------------------------------------------------------与上位机通信的数据帧长度固定为4N*1,帧数据字节之间传输延时不可超过1ms,否则将认为当前帧结束。UI刷新没有限制显示延时
----------------------------------------------------------------------------------------------------*///函数说明:将单精度浮点数据转成4字节数据并存入指定地址
//附加说明:用户无需直接操作此函数
//target:目标单精度数据
//buf:待写入数组
//beg:指定从数组第几个元素开始写入
//函数无返回值
void Float2Byte(float *target,unsigned char *buf,unsigned char beg)
{unsigned char *point;point = (unsigned char*)target;    //得到float的地址buf[beg]   = point[0];buf[beg+1] = point[1];buf[beg+2] = point[2];buf[beg+3] = point[3];
}//函数说明:将待发送通道的单精度浮点数据写入发送缓冲区
//Data:通道数据
//Channel:选择通道(1-10)
//函数无返回
void DataScope_Get_Channel_Data(float Data,unsigned char Channel)
{if ( (Channel > 10) || (Channel == 0) ) return;  //通道个数大于10或者等于0,直接跳出函数else{switch (Channel){case 1:  Float2Byte(&Data,DataScope_OutPut_Buffer,1); break;case 2:  Float2Byte(&Data,DataScope_OutPut_Buffer,5); break;case 3:  Float2Byte(&Data,DataScope_OutPut_Buffer,9); break;case 4:  Float2Byte(&Data,DataScope_OutPut_Buffer,13); break;case 5:  Float2Byte(&Data,DataScope_OutPut_Buffer,17); break;case 6:  Float2Byte(&Data,DataScope_OutPut_Buffer,21); break;case 7:  Float2Byte(&Data,DataScope_OutPut_Buffer,25); break;case 8:  Float2Byte(&Data,DataScope_OutPut_Buffer,29); break;case 9:  Float2Byte(&Data,DataScope_OutPut_Buffer,33); break;case 10: Float2Byte(&Data,DataScope_OutPut_Buffer,37); break;}}
}//函数说明:生成DataScopeV1.0能正确识别的帧格式
//Channel_Number,需要发送的通道个数
//返回发送缓冲区数据的个数
//返回0表示帧格式生成失败
unsigned char DataScope_Data_Generate(unsigned char Channel_Number)
{if ( (Channel_Number > 10) || (Channel_Number == 0) ) { return 0; }  //通道个数大于10或者等于0,直接跳出函数else{   DataScope_OutPut_Buffer[0] = '$';  //帧头switch(Channel_Number)   { case 1:   DataScope_OutPut_Buffer[5]  =  5; return  6;  case 2:   DataScope_OutPut_Buffer[9]  =  9; return 10;case 3:   DataScope_OutPut_Buffer[13] = 13; return 14; case 4:   DataScope_OutPut_Buffer[17] = 17; return 18;case 5:   DataScope_OutPut_Buffer[21] = 21; return 22;  case 6:   DataScope_OutPut_Buffer[25] = 25; return 26;case 7:   DataScope_OutPut_Buffer[29] = 29; return 30; case 8:   DataScope_OutPut_Buffer[33] = 33; return 34; case 9:   DataScope_OutPut_Buffer[37] = 37; return 38;case 10:  DataScope_OutPut_Buffer[41] = 41; return 42; }     }return 0;
}/*-------------------主函数调试--------------------------*/unsigned char i;          //计数变量
unsigned char Send_Count; //串口需要发送的数据个数
static float a;while(1){a+=0.1;if(a>3.14)  a=-3.14; DataScope_Get_Channel_Data(500*sin(a), 1 );DataScope_Get_Channel_Data(500* tan(a), 2 );DataScope_Get_Channel_Data( 500*cos(a), 3 ); DataScope_Get_Channel_Data( 100*a , 4 );   DataScope_Get_Channel_Data(0, 5 );DataScope_Get_Channel_Data(0 , 6 );DataScope_Get_Channel_Data(0, 7 );DataScope_Get_Channel_Data( 0, 8 ); DataScope_Get_Channel_Data(0, 9 );  DataScope_Get_Channel_Data( 0 , 10);Send_Count = DataScope_Data_Generate(10);for( i = 0 ; i < Send_Count; i++) {while((USART1->SR&0X40)==0);  USART1->DR = DataScope_OutPut_Buffer[i]; }delay_ms(50); //20HZ}

DataScope_DP.h

#ifndef __DATA_PRTOCOL_H
#define __DATA_PRTOCOL_Hextern unsigned char DataScope_OutPut_Buffer[42];      //待发送帧数据void DataScope_Get_Channel_Data(float Data,unsigned char Channel);    // 写通道数据至 待发送帧数据缓存区unsigned char DataScope_Data_Generate(unsigned char Channel_Number);  // 发送帧数据生成函数#endif

四、注意事项

1.软件不用安装,直接右键以管理员身份运行即可!( 如果打开失败,重启一次电脑试试)
2.与上位机通信的数据帧长度固定为 4*N+1,帧数据字节之间传输延时不可超过 1ms,否则将认为当前帧结束。UI 刷新没有限制显示延时。
3.接线时注意是接无线烧录器的串口端,不是烧录端!!!可以同时读取10个变量,有10个通道。

STM32使用正点原子无线烧录器无线查看数据波形相关推荐

  1. 基于stm32的正点原子Lora模块教程

    基于stm32的LoRa模块调试教程 初识LoRa 上手LoRa 程序编写 结果演示 再见LoRa 初识LoRa 简单来讲,LoRa就是一种低功耗远程无线通信技术.它是基于Semtech公司SX127 ...

  2. 基于STM32的正点原子LORA模块通信网络

    LoRa是semtech公司开发的一种低功耗局域网无线标准,其名称"LoRa"是远距离无线电(Long Range Radio),它最大特点就是在同样的功耗条件下比其他无线方式传播 ...

  3. 正点原子 DAP下载器简单使用

    使用DAP下载器给开发板下载程序 文章目录 使用DAP下载器给开发板下载程序 前言 0.接线方法(支持模拟串口) 1.开发板接线 2.核心板接线 1.驱动安装 2.配置下载器 3.虚拟串口功能 前言 ...

  4. STM32基于正点原子ALIENTEK探索者开发板的跑马灯实验

    一.首先我们来了解建立好的工程框架 1.USER 组USER下面主要存放的是用户代码. main.c是主函数 system_stm32f4xx.c文件是片上外设接入层系统文件,主要是申明设置系统及总线 ...

  5. STM32外接正点原子显示屏开机屏幕闪一下就灭的解决方案

    任务场景: 使用一块(非正点原子的)STM32F407核心板,外接正点原子的4.3寸电容屏时遇到的问题 问题描述: 反复检查硬件接口对上之后,还是会出现开机屏幕闪一下,然后全黑的问题. 并且,同一份代 ...

  6. STM32 无线烧录器

    1.elaphureLink 1.1下载固件 使用合宙的ESP32c3烧录固件 wireless-DAPLINK-LuatOS-ESP32C3_USB.soc ,在这个固件中默认链接 Wi-Fi配置会 ...

  7. 自制基于jlink的无线调试器

    一.无线调试器说明 许多单片机支持使用SWD与JTAG接口在线仿真调试,但很多场景下(如无人机.移动机器人),我们没有办法在设备运行的过程中将线缆插到设备上进行有线调试,这时候一个可以远程debug和 ...

  8. 开源SWD脱机烧录器-第三章 基于QT的上位机

    /********************2020.03.02更新********************/ 感谢博友的提醒我忘记上传Qt源码了,这就补上 https://gitee.com/airt ...

  9. 【STM32】基于正点原子『探索者』开发板的烧录

    项目需要一个功能,开发板范例正好有,就买了一块,不过还是有点贵 我手边没有J-Link 用的都是串口烧录 烧录时,先打开右上的开关 如果是仿真器烧录,它无法供电,需要接12V适配器或是杜邦线供电 然后 ...

最新文章

  1. 关于IO模拟时序(SPI)的注意事项
  2. java transient_【转】Java中的关键字 transient
  3. linux系统编程之使用C++(1)-打开关闭文件
  4. android基础之内容提供者使用
  5. 用友UI层获取机构的方法
  6. qos的_QoS 概述
  7. JavaScript面试的完美指南(开发者视角)
  8. 遍历二叉树的基本思路
  9. 【日常篇】002_五线谱调式推导
  10. NX/UG二次开发简单干涉
  11. 从头到尾彻底解析Hash 表算法
  12. 呼叫中心客服人员的秘密生活:同理心永远不会让你遭殃
  13. 996工作制该取消吗?
  14. 数据挖掘与数据化运营实战. 3.5 交叉销售模型
  15. 小C实例也有大梦想——自定义strlen函数
  16. div+CSS浏览器兼容问题整理(IE6.0、IE7.0 ,ie8 , FireFox...)
  17. 通达信自动提示穿头破脚K线组合形态(含指标公式源码)
  18. 基于J2EE的科研项目管理系统设计与实现
  19. 标星 3.6k+ 让你无所不能的工具
  20. scrapy豆瓣爬虫mysql存储名字有图片的问题(关于utf8mb4)

热门文章

  1. 【Java】java.lang.Object
  2. 什么样的视频号内容更容易火?视频号怎么做推送上热门
  3. 行人重识别+人脸识别+商品识别(新商品库对比)
  4. hadoop面试题 5 ---有用
  5. 旧文重发:IP 库的那些事儿之 2013 - 2014 流水帐版~
  6. 不相交轮换的乘积怎么求_怎么样将一个轮换分解成不相交的轮换的乘积
  7. python妹子图软件下载_python3下载妹子图,你懂的。
  8. 成功举办!805个团队参赛~
  9. 朋友圈/评论/点赞/搜索/购物车
  10. 宝塔面板nginx域名配置