论坛大神
  
- 积分
- 1876
- 金钱
- 1876
- 注册时间
- 2014-9-10
- 在线时间
- 208 小时
|

楼主 |
发表于 2014-9-28 08:56:02
|
显示全部楼层
我的例程是这样,没有dma的配置,只有一行和DMA有关系: ADC_DMACmd(ADC1, ENABLE);我就在想,这样一行dma功能就有了吗?感觉有点悬。
static void ADC_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
ADC_InitTypeDef ADC_InitStructure;
__IO uint16_t ADCConvertedValue;
/* 使能 ADC1 and GPIOC clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOC, ENABLE);
/* 配置PC4为模拟输入(ADC Channel14) */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOC, &GPIO_InitStructure);
/* 配置ADC1, 不用DMA, 用软件触发 */
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);
/* 配置ADC1 规则通道14 channel14 configuration */
ADC_RegularChannelConfig(ADC1, ADC_Channel_14, 1, ADC_SampleTime_55Cycles5);
/* 使能ADC1 DMA功能 */
ADC_DMACmd(ADC1, ENABLE);
/* 使能 ADC1 */
ADC_Cmd(ADC1, ENABLE);
/* 使能ADC1 复位校准寄存器 */
ADC_ResetCalibration(ADC1);
/* 检查ADC1的复位寄存器 */
while(ADC_GetResetCalibrationStatus(ADC1));
/* 启动ADC1校准 */
ADC_StartCalibration(ADC1);
/* 检查校准是否结束 */
while(ADC_GetCalibrationStatus(ADC1));
/* 软件启动ADC转换 */
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
} |
|