ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:19.75KB ,
资源ID:9316882      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9316882.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于STM32的FFT傅里叶变换.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于STM32的FFT傅里叶变换.docx

1、基于STM32的FFT傅里叶变换/* (C) COPYRIGHT 2010 STMicroelectronics * File Name : ADCompute.c* Author :* Version : V1.0* Date : 10/08/2007* Description : AD_Compute program body* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORD

2、ER FOR THEM TO SAVE TIME.* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING* INFORMATION CONTAINED HEREIN IN CONNECTION WITH

3、 THEIR PRODUCTS.*/* Includes -*/#include stm32f10x.h#include main.h#include stm32f10x_usart.h#include stm32f10x_lib.h #include stm32f10x_map.h #include platform_config.h#include stm32f10x_nvic.h#include stm32f10x_adc.h#include stm32f10x_dma.h#include extern.h#include #include #define plus1 0#define

4、plus2 1#define plus3 2/#define BufferSize 200#define ADC1 (ADC_TypeDef *) ADC1_BASE)#define DMA1_Channel6 (DMA_Channel_TypeDef *) DMA1_Channel6_BASE)/u8 ch_flag3=0,0,0 ;/u8 plus_state3=0,0,0;volatile unsigned short int Current_L; / 剩余电流volatile unsigned short int ADC_ValueData224;/volatile unsigned

5、short int ADC_ValueDataTAB7=0,0,0,0,0,0,0;volatile unsigned short int Angle_Value_Data7=0,0,0,0,0,0,0;volatile signed long int zhengxuDateTab367; volatile signed long int fuxuDateTab367;/unsigned short int ADC_Value7=0,0,0,0,0,0,0;/标识/u8 prun,ddj_run,qda,qdc5,Trip,Trip2,Alarm,RLP_oweI,RLP_oweP,RLP_o

6、weUA,RLP_oweUT;/变量/vs32 recval316,e40; vs32 ss0,ss1,ss2,ss3,ss4,ss5,ss6,ss7,ss8,ss9,ss10,ss11,ss12,ss13,ss14,ss15,ss16,ss17,ss18,ss19,ss20,ss21,sss_r,sss_x, ss_dxa,ss_dxb,ss_dxc,ss_bphave,ss_bpha,ss_bphb,ss_bphc,ss_bphmax;vu8 pro1,pro2,pro3,pro4,pro5,pro6,pro7,pro8,pro9,pro10,pro11,pro12,pro13,pro14

7、,pro15,settFLASH_PAGE_SIZE;vu32 e_im,e_105im,e_3im,e_6im,e_25im,e_1375im,pn,un;u32 est_t,st_t,tfdl2,rtfdl2;vu8 chn,set_num,M_num;float Ttirp,t_rgz;const signed short int x_Num = 0, 347, 684, 1000, 1285, 1532, 1732, 1879, 1969, 2000, 1969, 1879, 1732, 1532, 1285, 1000, 684, 347,-0,-347,-684,-1000,-12

8、85,-1532,-1732,-1879,-1969,-2000,-1969,-1879,-1732,-1532,-1285,-1000,-684,-347 ;/vs16 resist_temper4;unsigned short int SampleData(volatile unsigned short int ADCDataTab, unsigned short int nChannel); /const signed short int y_Num = 2000, 1969, 1879, 1732, 1532, 1285, 1000, 684, 347, 0,-347,-684,-10

9、00,-1285,-1532,-1732,-1879,-1969,-2000,-1969,-1879,-1732,-1532,-1285,-1000,-684,-347,-0, 347, 684, 1000, 1285, 1532, 1732, 1879, 1969 ;/float CH_ComputeTab107; float UI_Parent7; /unsigned short int Signal_Data7=0,0,0,0,0,0,0;/unsigned int IA1_Value = 0;/void Voltage_Calculate(void);void Signal_Conve

10、rsion(void);void SIG_Distribute(void);float Differencevalue(float number); / 绝对值double _squarert(double number); / 开方struct Ctrl_Flag CtrlState;struct Meterage_Parameter phaseA,phaseB,phaseC; / 定义测量参数 /* Function Name : ADC_Configuration* Description : This function handles ADC_Configuration* Input

11、: None* Output : None* Return : None*/void ADC_Configuration(void) ADC_InitTypeDef ADC_InitStructure; /* ADC1 Configuration -*/ ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; /独立工作模式 ADC_InitStructure.ADC_ScanConvMode = ENABLE; /扫描方式 ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; /连续转换 ADC_I

12、nitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; /外部触发禁止 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; /数据右对齐 ADC_InitStructure.ADC_NbrOfChannel = 7; /用于转换的通道数 ADC_Init(ADC1, &ADC_InitStructure); /* ADC1 regular channel8 configuration */ / 规则模式通道配置 ADC_RegularChannelConfig( AD

13、C1 , ADC_Channel_0, 4, ADC_SampleTime_239Cycles5); / Ia ADC_RegularChannelConfig(ADC1, ADC_Channel_1, 5, ADC_SampleTime_239Cycles5); / Ib ADC_RegularChannelConfig(ADC1, ADC_Channel_2, 6, ADC_SampleTime_239Cycles5); / Ic ADC_RegularChannelConfig(ADC1 , ADC_Channel_3, 1, ADC_SampleTime_239Cycles5); /

14、Ua ADC_RegularChannelConfig( ADC1, ADC_Channel_4, 2, ADC_SampleTime_239Cycles5); / Ub ADC_RegularChannelConfig( ADC1, ADC_Channel_5, 3, ADC_SampleTime_239Cycles5); / Uc ADC_RegularChannelConfig( ADC1, ADC_Channel_6, 7, ADC_SampleTime_239Cycles5); / Il /* Configure high and low analog watchdog thresh

15、olds */ /ADC_AnalogWatchdogThresholdsConfig(ADC1, 0x0B00, 0x0300); /* Configure channel8 as the single analog watchdog guarded channel */ /ADC_AnalogWatchdogSingleChannelConfig(ADC1, ADC_Channel_8); /* Enable analog watchdog on one regular channel */ /ADC_AnalogWatchdogCmd(ADC1, ADC_AnalogWatchdog_S

16、ingleRegEnable); /* Enable AWD interupt */ /ADC_ITConfig(ADC1, ADC_IT_AWD, ENABLE); / AD 中断 /* Enable ADC1 */ ADC_Cmd(ADC1, ENABLE); /* Enable ADC1 reset calibaration register */ ADC_ResetCalibration(ADC1); / 下面是ADC自动校准,开机后需执行一次,保证精度 /* Check the end of ADC1 reset calibration register */ while(ADC_G

17、etResetCalibrationStatus(ADC1); /* Start ADC1 calibaration */ ADC_StartCalibration(ADC1); /* Check the end of ADC1 calibration */ while(ADC_GetCalibrationStatus(ADC1); /DMA_Cmd(DMA1_Channel1, ENABLE); /* Start ADC1 Software Conversion */ ADC_SoftwareStartConvCmd(ADC1, ENABLE); /* Enable ADC1 DMA 使能A

18、DC1 DMA*/ ADC_DMACmd(ADC1, ENABLE); /* Function Name : SampleData * Description : Sample the ADC converted value of one channel * Input : Address of the ADCDataTab, Number of the Channel * Output : SampleData * Return : SampleData */ unsigned short int SampleData(volatile unsigned short int ADCDataT

19、ab, unsigned short int nChannel) auto float Value=0; for(ss10=0;ss10(DATALEN-5);ss10+) Value += (unsigned short int)(*(ADCDataTab+nChannel+ss10*TDCONLEN); return (unsigned short int)(Value/(DATALEN-5); /* Function Name : Voltage_Conversion * Description : average the ADC converted value of one chann

20、el * Input : Address of the ADCDataTab, Number of the Channel * Output : Average value * Return : Average value * */void Voltage_Conversion(void) volatile signed short int AdcValueTmp=0; ss12 = 0; for(ss12=0;ss12=(DATALEN-1) ss13 = 0; CtrlState.ADCompute_Flag = 1; /* Function Name : xinhaoConversion

21、* Description : None* Input : None* Output : None* Return : None*/void xinhaoConversion(void)/信号转换 auto unsigned char xubu=0,shibu=0; /虚部和实部变量 auto unsigned long int TotalTemp=0; / 总变量 auto signed long int TotalSTemp=0,TotalLTemp=0; / 总分量 if(CtrlState.ADCompute_Flag) CtrlState.ADCompute_Flag = 0; fo

22、r(shibu=0;shibu(TDCONLEN-1);shibu+) TotalSTemp = 0; TotalLTemp = 0; TotalTemp = 0; for(xubu=0;xubu=1) RLP_oweUT = 0; CtrlState.ADCAverage_Flag = 1; /* Function Name : Signal_Conversion* Description : None* Input : None* Output : None* Return : None*/void Signal_Conversion(void) xinhaoConversion(); SIG_Distribute(); /* Function Name : SIG_Distribute* Description : None* Input : float data* Output : unsigned int data* Return : None*/void SIG_Distribute(void) auto unsigned char iii=0,jjj=0; auto double average=0; if(CtrlState.ADCAverage_Flag)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1