你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 3024|回复: 0

STM32 AD DMA 转换结果的问题

[复制链接]

18

主题

60

回帖

0

蝴蝶豆

新手上路

最后登录
2018-1-8
发表于 2011-7-2 20:33:47 | 显示全部楼层 |阅读模式
求求高手回答小弟一问题。。
我在STM32 AD 采样之后用DMA存了10个数据在数组AD_Value[10]中,
在寄存器中看见的是数据都是在2400左右,
我想求出这10数的均值怎么求啊?!
公式如何去写啊?!
下面就是我的程序,我在寄存器中能看见AD_Value[10]的十个值就是求不出来它的平均值,不知道哪个变量定义错了,跪求高手指教一二啊,谢谢了,闹心好久了,我用的是IAR 5.50 + v3.4.0的库!
#include "stm32f10x.h"
#define ADC1_DR_Address    ((uint32_t)0x4001244C)
ADC_InitTypeDef ADC_InitStructure;
DMA_InitTypeDef DMA_InitStructure;
vu16 AD_Value[10];
u16 Volt;
int main(void)
{ RCC_Configuration();
  GPIO_Configuration();
  DMA_DeInit(DMA1_Channel1);
  DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address; // 外设地址
  DMA_InitStructure.DMA_MemoryBaseAddr = (u32)&AD_Value;// 内存地址 
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;// DMA 传输方向单向 
  DMA_InitStructure.DMA_BufferSize = 10; // 设置DMA在传输时缓冲区的长度 word 
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;// 设置DMA的外设递增模式,一个外设 
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;// 设置DMA的内存递增模式 
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;// 外设数据字长//定义外设数据宽度16位
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;// 内存数据字长 //定义存储器数据宽度16位
  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;// 设置DMA的传输模式:连续不断的循环模式 
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;// 设置DMA的优先级别 
  DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;// 设置DMA的2个memory中的变量互相不访问 
  DMA_Init(DMA1_Channel1, &DMA_InitStructure); //初始化DMA通道x
  DMA_Cmd(DMA1_Channel1, ENABLE);//使能DMA通道x 
  ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //独立转换模式 
  ADC_InitStructure.ADC_ScanConvMode = ENABLE;//使能扫描
  ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;//连续转换模式 
  ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;//转换不受外界决定//有软件控制转换
  ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//数据右对齐 
  ADC_InitStructure.ADC_NbrOfChannel = 1;//扫描通道数
  ADC_Init(ADC1, &ADC_InitStructure);
  ADC_RegularChannelConfig(ADC1, ADC_Channel_13, 1, ADC_SampleTime_55Cycles5);//通道13,采用时间为55.5周期,1代表规则通道
  ADC_DMACmd(ADC1, ENABLE);
  ADC_Cmd(ADC1, ENABLE);
  ADC_ResetCalibration(ADC1);
  while(ADC_GetResetCalibrationStatus(ADC1));
  ADC_StartCalibration(ADC1);
  while(ADC_GetCalibrationStatus(ADC1));  
  ADC_SoftwareStartConvCmd(ADC1, ENABLE);
  while(1)
   {
     int i = 0; 
     int result = 0; 
     for (i = 0;i 
1.jpg
回复

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版