当前位置: 首页 > news >正文

湖北创研楚商网站建设销售人员河南怎样做网站推广

湖北创研楚商网站建设销售人员,河南怎样做网站推广,wordpress更改头像,网站栏目优化本次实现的功能为单片机DAC输出一个正弦波,然后ADC定时采样用DMA输出,最后对DAC输出的波形进行FFT。单片机STM32F103ZET6内部时钟一、配置ADCADC端口为PA1,采用DMA输出,定时器3触发定时器时钟64M,分频后为102.4KHzADC采…

本次实现的功能为单片机DAC输出一个正弦波,然后ADC定时采样用DMA输出,最后对DAC输出的波形进行FFT。

单片机STM32F103ZET6

内部时钟

一、配置ADC

ADC端口为PA1,采用DMA输出,定时器3触发

定时器时钟64M,分频后为102.4KHz

ADC采样时间为102.4KHz/100=1.024KHz

二、配置DAC

DAC端口PA4

DMA传输

定时器6

定时器时钟64M,分频后为1MHz

三、配置DSP

四、配置时钟

四、代码

注意生成的代码里初始化中DMA要在ADC之前

FFT需要#include "arm_math.h"头文件

需添加include

在define后面补全USE_HAL_DRIVER,STM32F103xE,ARM_MATH_CM4,__CC_ARM,ARM_MATH_MATRIX_CHECK,ARM_MATH_ROUNDING,__FPU_PRESENT=1

main中加入ADC、DAC与FFT代码

uint16_t ad_value;          
uint16_t adc_buffer[1] = {0};HAL_TIM_Base_Start(&htim3);
HAL_ADC_Start_DMA(&hadc1,(uint32_t *)&adc_buffer,1);HAL_TIM_Base_Start(&htim6);
SineWave_Data(n,DualSine12bit,1.6);
HAL_DAC_Start_DMA(&hdac,DAC_CHANNEL_1,(uint32_t *)DualSine12bit,n,DAC_ALIGN_12B_R);arm_cfft_radix4_instance_f32 scfft;        //FFT对应结构体变量
arm_cfft_radix4_init_f32(&scfft,fft_adc_n,0,1); //初始化scfft结构体,设置FFT相关参数

SineWave_Data是产生正弦波的点(子函数)

#include "math.h"
#define n 100
uint16_t DualSine12bit[n];
//num:要在一个正弦波中采集多少点
//*D:创建的一个数组用来存放正弦波各个点的数值的
//U:输出电压的峰值(0~1.5V)
//Pi:3.1415926 自己定义
void SineWave_Data( uint16_t num,uint16_t *D,float U)
{uint16_t i;for( i=0;i<num;i++){D[i]=(uint16_t)((U*sin(( 1.0*i/(num-1))*2*3.14159265358979)+U)*4095/3.3);}
}

FFT定义

#define fft_adc_n 1024    // 采1024个点
uint16_t i;
float adc_data[fft_adc_n*2]={0};        // 存ADC值
float fft_in_adc_data[fft_adc_n*2]={0}; // FFT输入,实部是ADC值,虚部补0
float fft_out_adc_data[fft_adc_n]={0};  // FFT输出/*********************************************************************Name          : FFT_deal0(short int *data, float *fft_in,int data_length)Funcation :对波形数据进行补零操作Parameter :    short int *data        波形信号float *fft_in            输入信号(信号长度应是输出信号的2倍)int data_length        输出信号长度(与波形信号长度保持一致)Return    无
********************************************************************/
void FFT_deal0(float *data, float *fft_in,int data_length)
{for(int i = 0;i < data_length;i++){fft_in[2*i] = data[i];fft_in[2*i+1]=0;}
}

在ADC回调函数中加入标志位

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{ad_flag=1;
}

主函数

        while(i<fft_adc_n)  //等待1024个点{if(ad_flag==1){i++;ad_flag=0;ad_value=HAL_ADC_GetValue(&hadc1);adc_data[i]=ad_value;}}for(i=0;i<fft_adc_n;i++)   //打印采集到得ADC值{printf("%.2f\r\n",adc_data[i]);}//FFTFFT_deal0(adc_data,fft_in_adc_data,fft_adc_n);                                //对采集后的数据进行补0,补足虚部arm_cfft_radix4_f32(&scfft,fft_in_adc_data);                                            //FFT计算(基4)arm_cmplx_mag_f32(fft_in_adc_data,fft_out_adc_data,fft_adc_n);            //把计算结果复数求模得幅值 printf("ffffffffffffffffffff\r\n");//打印FFT输出for(i=0;i<fft_adc_n;i++){fft_out_adc_data[i]=fft_out_adc_data[i]*0.0008056640625;printf("%.2f\r\n",fft_out_adc_data[i]);}while(1);

将采集到得ADC放入Excel打印出来

波形频率50Hz

1.024KHz采样频率采集1024个点,刚好50个波形

FFT分析后得波形

可以看到频率为50左右,还是比较精准的

http://www.hengruixuexiao.com/news/27177.html

相关文章:

  • 安康网站开发公司报价友情链接是外链吗
  • 做笑话网站赚钱nba排行榜最新排名
  • 备案网站名称注意事项电商运营培训班
  • 国外有哪些优秀的网站广点通
  • 做机械有什么兼职网站温州最好的seo
  • 网站建设与管理 期末关键词推广哪家好
  • 做网站老师seo是搜索引擎吗
  • wordpress 是什么开源协议福建seo排名
  • 小程序开发外包郑州网站优化公司
  • 网站建设落地页源码网站推广方式
  • 微号网站开发墨子学院seo
  • 网站专属定制高端网站建设宁波seo优化定制
  • 可做用户密码暴力破解测试的网站深圳平台推广
  • 志鸿优化设计百度seo一本通
  • 门户网站建设厂商名录湖南专业的关键词优化
  • 建站abc和凡科哪个好seo策略有哪些
  • 专业网站开发多少钱宝塔没有域名直接做网站怎么弄
  • 网站公司说我们做的网站服务器不够用学做网站需要学什么
  • 广州10打网站服务商嵌入式培训
  • 怎么在b2b网站上发信息让百度收录怎么做黄冈网站推广软件视频下载
  • 共享备案网站广州四楚seo顾问
  • 大网站服务器维护费用seo 工具
  • 鱼台县建设局网站知识营销
  • 怎么做网站竞价推广宁波seo的公司联系方式
  • 没有网站可以做落地页淘宝指数网站
  • 赣州做建材的网站河北高端网站建设
  • 贵阳专业防水补漏公司北京seo排名技术
  • 武汉响应式网站建设学计算机哪个培训机构好
  • 给国外b2b网站开发信益阳网站seo
  • wordpress添加顶和踩福州百度快速优化排名