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

2019-07-21 08:52发布

show函数和Date_processing具体的代码含义没整明白,特别是show函数
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
fighting666
2019-07-21 17:10
贴代码:
#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   
}

一周热门 更多>