资源简介

stm32f207 ADC多通道采样DMA传输数据

资源截图

代码片段和文件信息

#include “stm32f2xx.h“
#include “ADC.h“
#include 
vu16 AD_Value[N][8] ;  //DMA传输地址
// vu16 AD_Value[8] ;  //DMA传输地址
vu16 Filter[8] ;
float Voltage[8];

void ADC3_DMA_Configuration(void)
{
  ADC_InitTypeDef                ADC_InitStructure;
  ADC_CommonInitTypeDef    ADC_CommonInitStructure;
  DMA_InitTypeDef               DMA_InitStructure;
  GPIO_InitTypeDef              GPIO_InitStructure;
  
  /* Enable ADC3 DMA2 and GPIO clocks ****************************************/
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2 | RCC_AHB1Periph_GPIOF ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3 ENABLE);


  /* DMA2 Stream0 channel2 configuration **************************************/
  DMA_InitStructure.DMA_Channel = DMA_Channel_2;  
  DMA_InitStructure.DMA_PeripheralbaseAddr = (uint32_t)ADC3_DR_ADDRESS;//(u32)&ADC3->DR;// //DMA外设ADC基地址
  DMA_InitStructure.DMA_Memory0baseAddr = (uint32_t)&AD_Value;//ADC3ConvertedValue;//(u32)&AD_Value; //DMA内存基地址
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;//DMA_DIR_PeripheralSRC; //内存作为数据传输的目的地
  DMA_InitStructure.DMA_BufferSize = N*8;//N*M; //DMA通道的DMA缓存的大小
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;// DMA_PeripheralInc_Disable; //外设地址寄存器不变
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//DMA_MemoryInc_Enable; //内存地址寄存器递增
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;///数据宽度为16位
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;//数据宽度为16位
  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;//工作在循环缓存模式
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;//DMA通道 x拥有高优先级
  DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;         
  DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;
  DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
  DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
  DMA_Init(DMA2_Stream0 &DMA_InitStructure);
  DMA_Cmd(DMA2_Stream0 ENABLE);

  /* Configure ADC3 Channel7 pin as analog input ******************************/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10  ;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN ;
  GPIO_Init(GPIOF &GPIO_InitStructure);

  /* ADC Common Init **********************************************************/
  ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
  ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div8;
  ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_1;
  ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
  ADC_CommonInit(&ADC_CommonInitStructure);

  /* ADC3 Init ****************************************************************/
  ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
  ADC_InitStructure.ADC_ScanConvMode = ENABLE;
  ADC_InitStructure.ADC_Conti

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         363  2014-05-04 15:01  ADC.h
     文件        5021  2014-05-12 17:12  ADC.c

评论

共有 条评论