
任意波形动态显示 简易示波器功能描述: 1.测量直流信号、交流信号的电压幅度; 2.测量交流信号的周期,并计算频率; 3.显示交流信号波形; 4.波形的放大和缩小; 5.··········· 暂时就先实现以上几个简单的基本功能,STM32芯片是3.3V供电,AD采样也只有0-3.3V,前端没有做硬件电路,所以这些测量暂时都是0-3.3V; 目前实现功能:任意波形动态显示 首先看一下效果: 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数据进行显示; |
代码有点乱,有点简单,请见谅!
绘图我也只是调用GUI里面的库函数,程序也比较乱,一直想整理,都还没来得及
沐紫姐客气了,我也是在论坛里面成长的,我应该谢谢感谢论坛
感谢支持
感谢支持
感谢支持
板子是一个论坛送的
感谢支持
这个可以有