虚拟示波器下载地址 如何使用虚拟示波器
我们在调直立的时候,需要查看角度的变化情况,又或者是查看原始数值的变化情况的时候,虽说查看Livewatch动态框(基于IAR)是可以看的,但是缺点是数值变化太快,没法细致去查看,这时候就需要使用一款查看变化值的利器——虚拟示波器。我们只需要将我们的变量发送给虚拟示波器,它就能在屏幕上动态显示对应的波形,是不是很神奇,接下来我们来移植下相应代码!
接下来基于K60山外底层库进行移植操作: 首先打开 我们将虚拟示波器的相关代码放在UART.c里,因为我们要使用UART这个工具,放这里以后找也方便,你也可以自己建个.c存放也行。
float SDS_OutData[4]= {0};
unsigned short CRC_CHECK(unsigned char *Buf, unsigned char CRC_CNT)
{
unsigned short CRC_Temp;
unsigned char i,j;
CRC_Temp = 0xffff;
for (i=0;i CRC_Temp ^= Buf[i]; for (j=0;j<8;j++) { if (CRC_Temp & 0x01) CRC_Temp = (CRC_Temp >>1 ) ^ 0xa001; else CRC_Temp = CRC_Temp >> 1; } } return(CRC_Temp); } void SDS_OutPut_Data(float S_Out[]) { int temp[4] = {0}; unsigned int temp1[4] = {0}; unsigned char databuf[10] = {0}; unsigned char i; unsigned short CRC16 = 0; float SDS_OutData[4]; for(i=0;i<4;i++) { SDS_OutData[i]=S_Out[i]; } for(i=0;i<4;i++) { temp[i] = (int)SDS_OutData[i]; temp1[i] = (unsigned int)temp[i]; } for(i=0;i<4;i++) { databuf[i*2] = (unsigned char)(temp1[i]%256); databuf[i*2+1] = (unsigned char)(temp1[i]/256); } CRC16 = CRC_CHECK(databuf,8); databuf[8] = CRC16%256; databuf[9] = CRC16/256; for(i=0;i<10;i++) { uart_putchar(UART5, databuf[i] ); } } 在UART.c文件最后移植以上代码,如下: 在UART.h记得声明外部变量,格式格式,写比较标准。不写应该也没问题的。 这样的话,虚拟示波器移植大致完成啦! 接下来就是如何将我们的数值发送到我们的软件上去。 我们可以在我们的main.c上将我们需要的数值赋值给数组,最后通过发送函数发送给虚拟示波器。大功告成! 上代码: SDS_OutData[0] = ACC_x_z; SDS_OutData[1] = GYRO_y; SDS_OutData[2] = mpu_gyro_z; SDS_OutPut_Data(SDS_OutData); 接下来就是连线问题,首先登场的是USB转TTL串口 拿杜邦线连接TXD和RXD两个管脚 由于要进行通信,因此与单片机连接方式为 串口: 单片机 TXD —— RXD RXD —— TXD 单片机管脚可供选择如下图: 接下来初始化UART 我使用的是UART5 也就是PTE9 PTD9 两个管脚,你可以自己选用你自己喜欢的管脚,只要是同一组就行。 当串口在发送数据的时候有两个灯的时候即表示为发送成功,接下来打开虚拟示波器软件 然后打开设备管理器查看串口COM 显示当前串口为COM8 配置虚拟示波器设置: 然后就大功告成啦!so-easy! 注:当我们代码和硬件完成后,而且串口灯也亮,却发现虚拟示波器没波形,这时候的问题是坐标轴的数值太大,如下: 我们可以首先按下界面 然后通过按住Ctrl+鼠标滚轮,进行缩放: 大功告成~