STM32G031K LL库的使用 - ADC

本文介绍了在STM32G031K6上使用LL库进行ADC初始化、校准及手动触发单次采样的方法。通过启用和禁用ADC采样,以及在定时函数中调用LL_ADC_REG_StartConversion()进行数据转换,实现了多次采样求平均值的策略。该方法适用于间隔一定时间获取ADC数据的场景,如1分钟间隔内进行10次10ms间隔的采样来计算电池电压平均值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明:驱动基于STm32G031K6测试,其他型号需自行做改动。

ADC的初始化:

#define ADCIO1_IN_CHANNEL           LL_ADC_CHANNEL_5
#define ADCIO2_IN_CHANNEL           LL_ADC_CHANNEL_7
uint8_t STM32LLADC1Init(void)
{
  LL_ADC_REG_InitTypeDef ADC_REG_InitStruct = {0};
  LL_ADC_InitTypeDef ADC_InitStruct = {0};

  LL_GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* Peripheral clock enable */
  LL_APB2_GRP1_EnableClock(LL_APB2_GRP1_PERIPH_ADC);                //使能ADC时钟
  
  LL_IOP_GRP1_EnableClock(LL_IOP_GRP1_PERIPH_GPIOA);                //谁能响应ADCioGpio时钟
  /**ADC1 GPIO Configuration  
  PA5   ------> ADC1_IN5
  PA7   ------> ADC1_IN7 
  */
  GPIO_InitStruct.Pin = gpioADCIO1_IN_PIN;                            //ADC检测IO初始化
  GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
  GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  LL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  GPIO_InitStruct.Pin = gpioADCIO2_IN_PIN;
  GPIO_InitStruct.Mode = LL_GPIO_MODE_ANALOG;
  GPIO_InitStruct.Pull = LL_GPIO_PULL_NO;
  LL_GPIO_Init(GPIOA, &GPIO_InitStruct);


  /** Configure the global features of the ADC (Clock, Resolution, Data Alignment and number of conversion) 
  */
  ADC_REG_InitStruct.TriggerSource = LL_ADC_REG_TRIG_SOFTWARE;                //ADC定时转化触发条件来源,可以为软件触发或硬件(外部中断、定时器)触发。
  ADC_REG_InitStruct.SequencerLength = LL_ADC_REG_SEQ_SCAN_ENABLE_2RANKS;     //ADC顺序采集通道的个数,根据自己需要的通道个数设置
  ADC_REG_InitStruct.SequencerDiscont = LL_ADC_REG_SEQ_DISCONT_DISABLE;       //
  ADC_REG_InitStruct.ContinuousMode = LL_ADC_REG_CONV_SINGLE;                 //采集方式,单次采集还是连续采集
  ADC_REG_InitStruct.DMATransfer = LL_ADC_REG_DMA_TRANSFER_UNLIMITED;         //使能DMA,并使用无限传输,如果DMA保存方式为循环覆盖的话才可以使用无限传输。
  ADC_REG_InitStruct.Overrun = LL_ADC_REG_OVR_DATA_OVERWRITTEN;               //采集的数据循环覆盖模式
  LL_ADC_REG_Init(ADC1, &ADC_REG_Ini
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值