資源簡介
PA4輸入進(jìn)行電流檢測
代碼片段和文件信息
#include?“sys.h“
#include?“delay.h“??
#include?“usart.h“??
#include?“l(fā)ed.h“
#include?“key.h“
#include?“l(fā)cd.h“
#include?“timer.h“?
#include?“math.h“?
#include?“arm_math.h“??
#include?“adc.h“
#include?“string.h“
#include?“adc_dma.h“
#include?“stdio.h“
#include?“exti.h“
//ALIENTEK?探索者STM32F407開發(fā)板?實(shí)驗(yàn)47_2
//DSP?FFT測試實(shí)驗(yàn)???-庫函數(shù)版本
//技術(shù)支持:www.openedv.com
//淘寶店鋪:http://eboard.taobao.com??
//廣州市星翼電子科技有限公司??
//作者:正點(diǎn)原子?@ALIENTEK
//ADC采樣定義
extern?u16?adc_buf[4096];
extern?u16?flag;
float?adc_bufmoni[4096];???//用于保存轉(zhuǎn)換計(jì)算后的電壓值
float?adc_bufmoni1[4096];???//用于保存轉(zhuǎn)換計(jì)算后的電壓值
struct?paixu?shuju[4096];
//FFT定義
#define?FFT_LENGTH 4096 //FFT長度,默認(rèn)是1024點(diǎn)FFT
float?fft_inputbuf[FFT_LENGTH*2]; //FFT輸入數(shù)組
float?fft_outputbuf[FFT_LENGTH]; //FFT輸出數(shù)組
float?max;
float?min;
float?sub;
u8?timeout;//定時(shí)器溢出次數(shù)
u8?DISP[20];
int?main(void)
{?
??arm_cfft_radix4_instance_f32?scfft;
? u8?t=0;
u8?buf[50];?
u16?i;?
?//??int?j;
float?time;
??float?H_1;
float?H_i;
?//?float?maxmin[5];
?//?float?aver;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置系統(tǒng)中斷優(yōu)先級(jí)分組2
delay_init(168);??//初始化延時(shí)函數(shù)
uart_init(115200); //初始化串口波特率為115200
LED_Init(); //初始化LED?
? LCD_Init();?????????//初始化LCD接口
??Rheostat_Init();//ADCDMA
??ADCInit_Timer();?//ADCTIMER
??TIM2_Int_Init(6553584-1); //1Mhz計(jì)數(shù)頻率最大計(jì)時(shí)65ms左右超出
??EXTIX_Init();
POINT_COLOR=RED;?
LCD_ShowString(150151503024“FFT?Analysis“);
LCD_ShowString(0402001616“_______________________________________________________________________________________________________________“);
POINT_COLOR=BLACK;//設(shè)置字體為藍(lán)色
LCD_ShowString(10802001624“Hrmc“);
LCD_ShowString(100802001624“Frequecy“);
LCD_ShowString(310802001624“Amplitude“); //先在固定位置顯示小數(shù)點(diǎn)
//LCD_ShowString(350151007024“sinsinsi“);
while(1)
{?
??//將ADC輸入數(shù)組
for(i=0;i<4096;i++)
{
adc_bufmoni[i]?=?(float)adc_buf[i]/4096*(float)3.3;
adc_bufmoni1[i]?=?(float)adc_buf[i]/4096*(float)3.3;
}
delay_ms(150);
???????????????//FFT運(yùn)算主程序
???
POINT_COLOR=RED;?
LCD_ShowString(107702001624“FFT?runtime:“);//顯示FFT執(zhí)行時(shí)間
POINT_COLOR=BLUE; //設(shè)置字體為藍(lán)色???
??arm_cfft_radix4_init_f32(&scfftFFT_LENGTH01);//初始化scfft結(jié)構(gòu)體,設(shè)定FFT相關(guān)參
for(i=0;i {
?fft_inputbuf[2*i]=adc_bufmoni[i];
?fft_inputbuf[2*i+1]=0;//虛部全部為0
}
TIM_SetCounter(TIM20);//重設(shè)TIM3定時(shí)器的計(jì)數(shù)器值
timeout=0;
arm_cfft_radix4_f32(&scfftfft_inputbuf); //FFT計(jì)算(基4)
time=TIM_GetCounter(TIM2)+(u32)timeout*65536;? //計(jì)算所用時(shí)間
sprintf((char*)buf“%0.3fms\r\n“time/1000);
LCD_ShowString(100+12*8770808024buf); //顯示運(yùn)行時(shí)間
arm_cmplx_mag_f32(fft_inputbuffft_outputbufFFT_LENGTH); //把運(yùn)算結(jié)果復(fù)數(shù)求模得幅值?
//FFT運(yùn)算主程序結(jié)束
//存入結(jié)構(gòu)體
for(i=0;i<2048;i++)
{
shuju[i].num=i;
shuju[i].am=fft_outputbuf[i];
評(píng)論
共有 條評(píng)論