資源簡介
stm32 三路ADC配置,DMA傳輸。親測可用他
代碼片段和文件信息
#include“adc.h“
#include“delay.h“
#define?N??3//ADC1的通道數
extern?u16?AD_DATA[2];
extern?float?AD_ANALOG[2];
void??Adc_Init(void)
{
??ADC_InitTypeDef?ADC_InitStructure;?
??GPIO_InitTypeDef?GPIO_InitStructure;
??RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA?|RCC_APB2Periph_ADC1ENABLE?);//使能端口1的時鐘和ADC1的時鐘,因為ADC1的通道1在PA10上
??RCC_ADCCLKConfig(RCC_PCLK2_Div6);???//設置ADC分頻因子6?72M/6=12MADC最大時間不能超過14M,也就是ADC的時鐘頻率為12MHz
??
??//PA1?作為模擬通道輸入引腳?????????????????????????
??GPIO_InitStructure.GPIO_Pin?=?GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_5;
??GPIO_InitStructure.GPIO_Mode?=?GPIO_Mode_AIN; //模擬輸入引腳
??GPIO_Init(GPIOA?&GPIO_InitStructure);
??ADC_DeInit(ADC1);??//復位ADC1將外設?ADC1?的全部寄存器重設為缺省值
??ADC_InitStructure.ADC_Mode?=?ADC_Mode_Independent; //本次實驗使用的是ADC1,并ADC1工作在獨立模式ADC_CR1的位19:16
??ADC_InitStructure.ADC_ScanConvMode?=?ENABLE; //ADC_ScanConvMode?用來設置是否開啟掃描模式,本實驗開啟掃面模式.ADC_CR1的位8
??ADC_InitStructure.ADC_ContinuousConvMode?=?ENABLE; //ADC_ContinuousConvMode?用來設置是否開啟連續轉換模式?模數轉換工作在連續轉換模式,ADC_CR2的位1
??ADC_InitStructure.ADC_ExternalTrigConv?=?ADC_ExternalTrigConv_None; //轉換由軟件而不是外部觸發啟動?ADC_CR2的位19:17
??ADC_InitStructure.ADC_DataAlign?=?ADC_DataAlign_Right; //ADC數據右對齊ADC_CR2的位11
??ADC_InitStructure.ADC_NbrOfChannel?=?N; //順序進行規則轉換的ADC通道的數目ADC_SQR1位23:20
??ADC_Init(ADC1?&ADC_InitStructure); //根據ADC_InitStruct中指定的參數初始化外設ADCx的寄存器???
??
評論
共有 條評論