在调试过程中.,经常会有需要看到数据实时变化的情况,这时候便需要用到虚拟示波器。如:制作平衡车时,需要了解拟合角度跟随加速度计和陀螺仪的动态变化情况;做电机PWM调速时需要了解速度的变化曲线等。
对于虚拟示波器的选择,由于之前参加过飞思卡尔,用过是山外的多功能调试助手中的虚拟示波器,感觉还不错。
现在想用stm32制作一个平衡车,需要用到虚拟示波器,现在把使用方法分享出来,给那些有需要的人。
首先是通信协议:(下面是虚拟示波器部分的通信协议)
虚拟示波器采用串口通信的方式和下位机通信。因此首先要配置好串口(这里就不做介绍了),接下来便需要实现发送函数。
///发送一个字节的数据
void usart3_send_char(uint8_t c)
{
while(USART_GetFlagStatus(USART3,USART_FLAG_TXE)==RESET); //循环发送,直到发送完毕
USART_SendData(USART3,c);
}
///发送指定长度的数组
void usart3_putbuff (uint8_t *buff, uint32_t len)
{
while(len--)
{
usart3_send_char(*buff);
buff++;
}
}
///根据通信协议向上位机发送数据
void vcan_sendware(uint8_t *wareaddr, uint32_t waresize)
{
#define CMD_WARE 3 //3代表虚拟示波器,1摄像头,2CCD
uint8_t cmdf[2] = {CMD_WARE, ~CMD_WARE};
uint8_t cmdr[2] = {~CMD_WARE, CMD_WARE};
usart3_putbuff(cmdf,sizeof(cmdf));
usart3_putbuff(wareaddr,waresize);
usart3_putbuff(cmdr,sizeof(cmdr));
}
下面举一个发送的例子
#include float a = 1.5; float warebuf[8]; void main(void) { while(1) { a = 10 *a; warebuf[0] = a; vcan_sendware((uint8_t *)warebuf,sizeof(warebuf)) delay_ms(10); } } 山外多功能调试助手的下载链接:http://www.vcan123.com/thread-5988-1-1.html
上一篇:STM32驱动多个超声波模块(只用一个定时器)
下一篇:STM32驱动MAX6675读取K型热电偶温度
推荐阅读最新更新时间:2024-11-11 15:32
设计资源 培训 开发板 精华推荐
- DEMO56F8014: 56F8014数字信号控制器的演示板
- OP297EZ平方根放大器的典型应用
- 负载开关IC TCK321G、TCK322G、TCK323G应用&电路
- 输入电压范围为 5V 至 60V 的 LTC3643EUDD 5V 备份系统的典型应用电路
- LT8705AEFE 用于超级电容器备用电源的降压-升压型 DC/DC 控制器的典型应用
- LTC3538EDCB 演示板、800mA 同步降压-升压型 DC/DC 转换器
- 局域网控制的旋转LED
- AD5342 并行接口、双电压输出、12 位 DAC 的典型应用
- 适用于STM32 Nucleo-64和-144的MANTIS Wi-Fi扩展板
- 适用于 ADP7104 9V 低压差 (LDO) 线性稳压器的 ADP7104RDZ-REDYKIT、ADP7104RD-EVALZ SOIC RedyKit
- 得捷第二季Follow me第2期来袭,一起解锁功能强大且灵活的【Arduino UNO R4 WiFi】
- TE 官微人工客服功能上线,可以与 TE 技术专家直接微信沟通了!
- 抢楼有奖:免费获得元器件样品本~~
- 共抗疫情 少出门多学习: 多部TI实用课程奉上, 身体不能在路上就让灵魂在路上
- 有奖直播:TI MSP430TM集成可配置信号链模块在传感测量领域的应用
- 分分钟完成电子设计的奥秘—2015WEBENCH邀你共同见证!
- 【抢楼有礼】聊聊vishay照明应用在我们身边哪些地方!
- 一天一个Webench设计,看谁能撑30天?
- 2023 DigiKey KOL 系列——将TinyML融入IoT物联网应用中