以下代码基于标准库编写(代码全部实测可行)-复制粘贴即可使用
一、F4系列代码 触发式-单次转换
主程序
uint16_t ADValue; //定义AD值变量
float Voltage; //定义电压变量
int main(void)
{
AD_Init(); //AD初始化
while (1)
{
ADValue = AD_GetValue();//---获取AD转换的值
Voltage = (float)ADValue;//--4095 * 3.3;//将AD值线性变换到0~3.3的范围,表示电压
Delay_ms(100);//-------------延时100ms,手动增加一些转换的间隔时间
}
}
子程序
/**
*****************************************************************************************
* @brief: F429-AD初始化
* @other:
* @param:
* @retval: 无
* @note: 在STM32F429中,ADCCLK最大频率为36M,而APB2的一般配置为90M,所以,在F429中,AD
采样的频率一般设置为:90/4=22.5M。
以PC5所对应的 ADC12_IN15 为例,此处使用ADC1
*****************************************************************************************
**/
void AD_Init(void)
{
/*开启时钟*/
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); //开启ADC1的时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); //开启GPIOC的时钟
/*GPIO初始化*/
GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;//将PC5引脚初始化为模拟输入
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOC, &GPIO_InitStructure);
/*初始化ADC_CCR寄存器。ADC通用控制寄存器*/
ADC_CommonInitTypeDef ADC_CommonInitStruct;//
ADC_CommonInitStruct.ADC_Mode = ADC_Mode_Independent;//-----------------------设置ADC的工作模式