在线时间0 小时
UID333881
ST金币0
蝴蝶豆0
注册时间2011-12-13
新手上路
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2011-12-15 12:56:26
|
显示全部楼层
a0a.1 0b0c
RE:STM32F103VE AD转换跨界问题
/*********************************************************************************************************
** 函数名称: GPIO_ADC_Cfg
** 功能描述: ADC引脚配置
** 输 入: 无
** 输 出: 无
********************************************************************************************************/
void GPIO_ADC_Cfg(void)
{
GPIO_InitTypeDef GPIO_InitStructure; // 定义1个结构体变量
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); // 打开GPIOX时钟
// 配置 PA0 PA1 PA2 PA3(ADC 通道 0 1 2 3)模拟输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
}
/*********************************************************************************************************
** 函数名称: ADC_Cfg
** 功能描述: 配置AD转换器
** 输 入: 无
** 输 出: 无
********************************************************************************************************/
void ADC_Cfg(void)
{
ADC_InitTypeDef ADC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); // 使能ADC1时钟
//ADC1配置
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数据右对齐
ADC_InitStructure.ADC_NbrOfChannel = ADCBUFCHL; // 规定了顺序进行规则转换的ADC通道的数目
ADC_Init(ADC1, &ADC_InitStructure);
// ADC1规则模式通道配置
ADC_RegularChannelConfig(ADC1, ADC_Channel_0 , 1, ADC_SampleTime_55Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_1 , 2, ADC_SampleTime_55Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_2 , 3, ADC_SampleTime_55Cycles5);
ADC_RegularChannelConfig(ADC1, ADC_Channel_3 , 4, ADC_SampleTime_55Cycles5);
ADC_Cmd(ADC1, ENABLE); // 使能ADC1
ADC_DMACmd(ADC1, ENABLE); // 使能ADC1 DMA功能
// Enable ADC1 reset calibaration register
ADC_ResetCalibration(ADC1);
// Check the end of ADC1 reset calibration register
while(ADC_GetResetCalibrationStatus(ADC1));
// Start ADC1 calibaration
ADC_StartCalibration(ADC1);
// Check the end of ADC1 calibration
while(ADC_GetCalibrationStatus(ADC1));
// 启动转换
ADC_SoftwareStartConvCmd(ADC1, ENABLE);
} |
|