任意波形动态显示 简易示波器功能描述: 1.测量直流信号、交流信号的电压幅度; & E, F4 y. E' u$ g& }8 \% s2 {7 Z2.测量交流信号的周期,并计算频率; 9 N1 e( ~* {6 E- D3.显示交流信号波形; " j# k x4 x. l. w! V, I4.波形的放大和缩小; 5.··········· , L/ e; @5 S2 M- _) B暂时就先实现以上几个简单的基本功能,STM32芯片是3.3V供电,AD采样也只有0-3.3V,前端没有做硬件电路,所以这些测量暂时都是0-3.3V; ) r+ [; N! {1 o. ]0 d* I; U# U' j目前实现功能:任意波形动态显示 首先看一下效果: 1.采集IO引脚翻转: 2.采集DAC模拟输出锯齿波: 3.采集DAC模拟输出方波: 大致实现过程: 首先在之前贴基础上更改:简易示波器(三)方波简单显示 (出处: 意法半导体STM32/STM8技术社区) uint16_t uhADCxConvertedValue[1024*6] ={ 0}; a.ADC连续采集1024*6个数据并使能DMA存储在uhADCxConvertedValue数组中; HAL_ADC_Stop(&AdcHandle); for(i = 0; i < 1024*5; i++) { y3 =400 - (80*3.3*uhADCxConvertedValue[i+512]/4095); } HAL_ADC_Start(&AdcHandle); flag = 1; b.DMA完成后进入中断,关闭ADC采样并将数据复制到显示缓冲区的数组中,设定标志位置1,开启ADC继续采集(如果不暂停ADC,新采集的值会打乱完整的1024*6个数据,所以复制过程中暂停采集); if(temp == 0) { for(i = 0; i<500;i++) { aPointsRe.y = y3; //aPointsRe.x = x; } } else if(temp < 10) { for(i = 0; i<500;i++) { aPointsRe.y = y3[i+temp*500]; //aPointsRe.x = x; } } GUI_SetColor(GUI_GREEN); GUI_DrawPolyLine(aPointsRe, /* Ö¸ÏòÒªÏÔʾµÄÕÛÏß */ GUI_COUNTOF(aPointsRe), /* µãÁбíÖÐÖ¸¶¨µÄµãÊýÁ¿ */ 50, /* ÔµãµÄXλÖà */ 40); temp++; if(temp == 10) { temp = 0; flag = 0; } GUI_Delay(100); c.回到主函数进行数据处理,由于每次显示的是500个数据,所以显示10次后在此读取ADC数据进行显示; H8 S: o9 c2 M- A6 V+ m $ [$ N u! ~/ I |
代码有点乱,有点简单,请见谅!
绘图我也只是调用GUI里面的库函数,程序也比较乱,一直想整理,都还没来得及
沐紫姐客气了,我也是在论坛里面成长的,我应该谢谢感谢论坛
感谢支持
感谢支持
感谢支持
板子是一个论坛送的
感谢支持
这个可以有