新手入门
- 积分
- 13
- 金钱
- 13
- 注册时间
- 2016-4-3
- 在线时间
- 2 小时
|
5金钱
请大神帮我看看,我用的STM32F103C8T6,我这样为什么采不到电压数据
#include "stm32f10x.h"
#include "ADC.h"
uint16_t adv;
void ADC_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
ADC_InitTypeDef ADC_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_ADC1, ENABLE); //使能PA端口、ADC时钟
RCC_ADCCLKConfig(RCC_PCLK2_Div8); //配置ADC时钟,为PCLK2的8分频,即9MHz
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN; //模拟输入
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_Init(GPIOA,&GPIO_InitStructure); //根据设定参数初始化GPIOA.0
ADC_DeInit(ADC1);
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //独立模式
ADC_InitStructure.ADC_ScanConvMode = DISABLE; //单通道模式
ADC_InitStructure.ADC_ContinuousConvMode = ENABLE; //连续转换
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; //不使用外部触发转换
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; //右对齐
ADC_InitStructure.ADC_NbrOfChannel = 1; //扫描通道数1
ADC_ClearFlag(ADC1,ADC_FLAG_EOC); //????
ADC_Init(ADC1,&ADC_InitStructure);
ADC_DMACmd(ADC1, DISABLE); //关闭DMA请求
ADC_Cmd(ADC1,ENABLE); //使能或者失能指定的ADC
ADC_ResetCalibration(ADC1);
while(ADC_GetResetCalibrationStatus(ADC1)); //等待复位校准寄存器复位完成
ADC_StartCalibration(ADC1);
while(ADC_GetCalibrationStatus(ADC1)); //等待ADC校准完成
}
uint16_t ADC_Value(void)
{
ADC_RegularChannelConfig(ADC1,ADC_Channel_1,1,ADC_SampleTime_55Cycles5);
ADC_SoftwareStartConvCmd(ADC1,ENABLE); //使能ADC的软件转换启动功能
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));//判断ADC转换结束标志位 等待转换结束
adv = ADC_GetConversionValue(ADC1);
return adv;
}
#include "stm32f10x.h"
#include "adc.h"
int main(void)
{
ADC_Config();
while(1)
{
ADC_Value();
}
}
|
|