• 大小: 1KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-12-03
  • 语言: 其他
  • 标签: STM32  

资源简介

STM32的ADC转换程序,测试通过,非DMA方式,可用于多通道采集

资源截图

代码片段和文件信息

#include “stm32_adc.h“

u16  ADC_Value[2]={0};

void ADC1_Init(void)  
{     
    // 定义ADC初始化结构体
ADC_InitTypeDef ADC_InitStructure;
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1     ENABLE );   //
RCC_ADCCLKConfig(RCC_PCLK2_Div8); // ADC所允许的最大时钟频率为14MHz
// 独立工作模式
// 多通道扫描模式
// 连续模数转化模式
// 转换触发方式: 转换由软件触发启动
// ADC数据右对齐
// 进行规则转换的ADC通道的数目为1
ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_InitStructure.ADC_ScanConvMode = DISABLE;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_NbrOfChannel = 1;
ADC_Init(ADC1 &ADC_InitStructure);

ADC_Cmd(ADC1 ENABLE); // 使能ADC1
ADC_ResetCalibration(ADC1); // 复位校准寄存器
while(ADC_GetResetCalibrationStatus(ADC1)); // 等待ADC1校准寄存器复位完成
ADC_StartCalibration(ADC1); // 开始ADC1校准
while(ADC_GetCalibrationStatus(ADC1)); // 等待ADC1校准完成
}         
  
//单次获得ADC值  
//ch:通道值 0~3  
u16 Get_ADC(u8 ch)     
{  
    u16 tempADC = 0;   
     
    // 设置ADC1使用8转换通道,采样时间为55.5周期
    ADC_RegularChannelConfig(ADC1 ch 1 ADC_SampleTime_239Cycles5);
    ADC_SoftwareStartConvCmd(ADC1 ENABLE); // 启动ADC1转换
    while(!ADC_GetFlagStatus(ADC1 ADC_FLAG_EOC ));//等待转换结束  
    tempADC = ADC_GetConversionValue(ADC1);        
    ADC_SoftwareStartConvCmd(ADC1 DISABLE); // 启动ADC1转换
    return tempADC; //返回最近一次ADC1规则组的转换结果  
}  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-12-31 11:20  STM32_ADC\
     文件        1636  2018-12-31 11:19  STM32_ADC\stm32_adc.c
     文件         226  2017-12-06 14:10  STM32_ADC\stm32_adc.h

评论

共有 条评论