获取的是谁的频率 //获取频率 void DSO_GetFrequence(u16 x, u16 y, u16 width, u16 height, u8 size,long* pBuff) { uint16_t Row,i; uint16_t Max_Val=0; for(i=1;i<DMA_BUFF_SIZE/2;i++) //显示频率值 { if(pBuff[i]>Max_Val) { Max_Val=pBuff[i]; Row=i; } } Freq=(72000000)/(DMA_BUFF_SIZE*TIM_ETC_ARR_DEF*TIM_ETC_PSC_DEF/Row); if((Freq >0)&&(Freq < 1024)) { sprintf((char*)showstr,"Fre:%d Hz ",(uint32_t)Freq); LCD_ShowString(x,y,width,height,size,showstr); } else if((Freq >1024) && (Freq < 65535)) { Freq = Freq/1000.0; sprintf((char*)showstr1,"Fre:%.2fKhz ",Freq); LCD_ShowString(x,y,width,height,size,showstr1); } }
时间: 2024-04-09 09:30:15 浏览: 143
DSO.rar_51 示波_dso_pwm_单片机 频率计_示波器
这段代码是一个函数,用于获取频率。具体来说,它通过分析一个存储在pBuff数组中的数据,计算出信号的频率,并将频率显示在LCD屏幕上。
代码的主要逻辑如下:
1. 首先,定义了一些变量,包括Row、i和Max_Val。其中,Row用于记录最大值所在的位置,Max_Val用于记录最大值。
2. 使用一个循环遍历pBuff数组的前一半元素(DMA_BUFF_SIZE/2),找出最大值以及其所在的位置。
3. 根据最大值所在的位置(Row),计算出频率(Freq)。这里的计算公式是根据特定的硬件参数和采样率得出的。
4. 根据频率的大小,使用sprintf函数将频率信息格式化为字符串,并将其显示在LCD屏幕上。
需要注意的是,代码中的一些常数(如DMA_BUFF_SIZE、TIM_ETC_ARR_DEF和TIM_ETC_PSC_DEF)是特定硬件的参数,可能需要根据实际情况进行修改。另外,LCD_ShowString函数是一个用于在LCD屏幕上显示字符串的函数,具体实现可能需要查看其他部分的代码。
阅读全文