OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3060|回复: 3

从论坛上找到了自制示波器程序,其中有部分看不懂,各位大佬看看啦

[复制链接]

2

主题

11

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2017-12-23
在线时间
3 小时
发表于 2018-10-22 16:15:14 | 显示全部楼层 |阅读模式
show函数和Date_processing具体的代码含义没整明白,特别是show函数
QQ截图20181022161304.jpg
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-10-22 16:30:22 | 显示全部楼层
用过示波器的手动触发模式不?
Date_processing就是判断信号是否在触发区内
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2017-12-23
在线时间
3 小时
 楼主| 发表于 2018-10-22 16:34:25 | 显示全部楼层
edmund1234 发表于 2018-10-22 16:30
用过示波器的手动触发模式不?
Date_processing就是判断信号是否在触发区内

没用过,一直用的是示波器的默认设置。但你这么一说我大概知道那个函数的意思是判断信号是否在触发区,满足条件才显示波形?
回复 支持 反对

使用道具 举报

2

主题

11

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2017-12-23
在线时间
3 小时
 楼主| 发表于 2018-10-22 16:38:09 | 显示全部楼层
贴代码:
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "lcd.h"
#include "adc.h"
#include "key.h"

/*
    ¶àᢶàí¨μ࣬ê1óÃDMA£¬×¢òa£o
    ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 1, ADC_SampleTime_84Cycles)
    ÖDADC_SampleTime_84Cycles2»ÄüéèÖÃ1yD¡£¬·ñÔò2aá¿Îó2î½Ï′ó
*/

__IO uint16_t ADC1ConvertedValue[q][w];

uint16_t ADC1out[q][w];
uint16_t clear[q][w];

u16 i,j;
u32 temp1=0,temp2=0;

float jv[q],ji[q];
u16 yv[q][w], yi[q][w];
u16 e=0;  
u16 a=5;
u8 trigger=0;
u8 k,flag1;           //±£′æ¼üÖμ  
//′¥·¢±êÖ¾¶¨òå  
uint8_t  g_usTrigFlag = 1;          //êÇ·ñ′¥·¢±ê־λ
uint16_t g_usTrigValue = 2048;      //′¥·¢Öμ
uint16_t g_usTrigPosit = 0;         //′¥·¢oóêy¾YλÖÃ
u16 clearflag=0;
void Data_processing(void);
void key_read(u8 key);
void show(void);
int main(void)
{

  KEY_Init();       //3õê¼»ˉóë°′¼üᬽóμÄó2¼t½ó¿ú
   
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÏμí3ÖD¶ÏóÅÏè¼¶·Ö×é2
        delay_init(168);    //3õê¼»ˉÑóê±oˉêy
        uart_init(115200);        //3õê¼»ˉ′®¿ú2¨ìØÂêÎa115200
        LED_Init();                                        //3õê¼»ˉLED
        LCD_Init();         //3õê¼»ˉLCD½ó¿ú
        Adc_Init();         //3õê¼»ˉADC
        POINT_COLOR=RED;
        LCD_ShowString(3,2,200,16,16,"STM32F4");       
  LCD_ShowString(70,2,200,16,16,"F:    Hz");
  LCD_ShowString(160,2,200,16,16,"Vpp:      mV");
   
  
        while(1)
        {
                        k=KEY_Scan(0);                //μÃμ½¼üÖμ
                        if(k!=0)
                                        key_read(k);
                       
                        POINT_COLOR=RED;
                        LCD_DrawRectangle(10,20,310,220);//¾ØDοò
                        LCD_DrawLine(10,120,310,120);   //x×ø±ê
                        Data_processing();

       
                        LED0=!LED0;
                        delay_ms(100);       
        }
}

//uint8_t  g_usTrigFlag = 1;          //êÇ·ñ′¥·¢±ê־λ
//uint16_t g_usTrigValue = 1024;      //′¥·¢Öμ
//uint16_t g_usTrigPosit = 0;         //′¥·¢oóêy¾YλÖÃ
void Data_processing(void)
{
    for(i = 0; i < q*w; i++)
    {
        if( (ADC1ConvertedValue[i+1][0] >= g_usTrigValue) && (ADC1ConvertedValue[i][0] <= g_usTrigValue) && (trigger == 1) && (i < q*w) )
        {
            g_usTrigPosit = i;
            break;
        }
    }
    if(trigger)
        show();     
}

void show(void)
{
         for(j=clearflag;j<(clearflag+1500);j++)
            {
              LCD_Fast_DrawPoint(10+(j-clearflag)/a,220-(clear[j][0]*200.000/4096),WHITE);
              LCD_Fast_DrawPoint(10+(j-clearflag)/a,220-(clear[j][1]*200.000/4096),WHITE);
            }
        for(j=g_usTrigPosit;j<(g_usTrigPosit+1500);j++)
            {        
                LCD_Fast_DrawPoint(10+(j-g_usTrigPosit)/a,220-(ADC1ConvertedValue[j][0]*200.000/4096),BLUE);
                clear[j][0] = ADC1ConvertedValue[j][0];
                LCD_Fast_DrawPoint(10+(j-g_usTrigPosit)/a,220-(ADC1ConvertedValue[j][1]*200.000/4096),BLACK);
                clear[j][1] = ADC1ConvertedValue[j][1];
                clearflag = g_usTrigPosit;
            }
        trigger=0;
        ADC_Cmd(ADC1, ENABLE);//ê1&#196;üADC   
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 01:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表