登录/注册

STM32 030 ADC

STM32 030 ADC

更多

STM32F030 的 ADC(模数转换器)使用步骤如下:


1. 基本特性


2. 配置步骤

(1) 时钟使能

RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;  // 使能 ADC1 时钟
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;    // 使能 GPIOA 时钟(假设使用 PA0~PA5 作为 ADC 通道)

(2) GPIO 配置

将 GPIO 设为模拟输入模式:

GPIOA->MODER |= GPIO_MODER_MODER0;     // PA0 设为模拟模式(其他通道类似)

(3) ADC 校准

ADC1->CR |= ADC_CR_ADCAL;              // 启动校准
while (ADC1->CR & ADC_CR_ADCAL);       // 等待校准完成

(4) 参数配置

// 设置 ADC 参数
ADC1->CFGR1 &= ~ADC_CFGR1_RES;         // 12 位分辨率
ADC1->CHSELR = ADC_CHSELR_CHSEL0;      // 选择通道 0(PA0)
ADC1->SMPR = ADC_SMPR_SMP_0;           // 设置采样时间(例如 7.5 个周期)

(5) 启动转换

ADC1->CR |= ADC_CR_ADEN;               // 使能 ADC
while (!(ADC1->ISR & ADC_ISR_ADRDY));  // 等待 ADC 就绪

ADC1->CR |= ADC_CR_ADSTART;            // 启动转换
while (!(ADC1->ISR & ADC_ISR_EOC));    // 等待转换完成
uint16_t value = ADC1->DR;             // 读取转换结果

3. 示例代码(HAL 库)

#include "stm32f0xx_hal.h"

ADC_HandleTypeDef hadc;

void ADC_Init() {
  ADC_ChannelConfTypeDef sConfig = {0};

  hadc.Instance = ADC1;
  hadc.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV2;
  hadc.Init.Resolution = ADC_RESOLUTION_12B;
  hadc.Init.DataAlign = ADC_DATAALIGN_RIGHT;
  hadc.Init.ScanDirection = ADC_SCAN_DIRECTION_FORWARD;
  hadc.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
  HAL_ADC_Init(&hadc);

  sConfig.Channel = ADC_CHANNEL_0;      // PA0
  sConfig.Rank = ADC_RANK_CHANNEL_NUMBER;
  sConfig.SamplingTime = ADC_SAMPLETIME_7CYCLES_5;
  HAL_ADC_ConfigChannel(&hadc, &sConfig);
}

uint16_t Read_ADC() {
  HAL_ADC_Start(&hadc);
  HAL_ADC_PollForConversion(&hadc, 100);
  return HAL_ADC_GetValue(&hadc);
}

4. 注意事项

具体配置请参考 STM32F030xx 参考手册(RM0360)的 ADC 章节

STM32F030芯片内部ADC结果挪位的问题分析及解决办法

有人使用STM32F030芯片内部ADC的CH0、CH3、CH5共3个通道,单次扫描转换后通过DMA将结果放在一个数组。

2024-01-05 10:14:05

STM32G030J6M6

STM32G030J6M6

2023-04-06 23:31:50

STM32G030C6T6多ADC通道不工作是何原因呢

在 stm32g030k6t6 中,多个 adc 通道与 DMA 一起工作正常,但在 Stm32g030c6t6 中不工作。请帮助

2022-12-23 08:17:17

stm32g030多路adc DMA采集程序

stm32g030_多路adc_DMA采集程序

资料下载 过往5 2023-06-19 09:43:09

解决LAT1015_STM32F030在低温下无法启动的问题

解决LAT1015_STM32F030在低温下无法启动的问题

资料下载 DSSDX 2022-02-08 16:32:55

STM32ADC学习历程

STM32的ADC学习历程(电源技术期刊影响因子)- STM32的ADC

资料下载 王越建 2021-09-27 12:32:55

STM32ADC驱动程序

STM32的ADC驱动程序(电源技术被踢出核心)-  STM32的ADC

资料下载 刘满贵 2021-09-23 13:43:22

STM32ADC代码例程

STM32的ADC代码例程(普德新星电源技术有限公司怎么样)- STM32的ADC

资料下载 vinww特烦恼 2021-09-23 09:53:19

CKS中科芯CKS32F030C8T6 mcu单片机 LQFP48 替换STM32F030C8T6

1970-01-01 08:00:00 至 1970-01-01 08:00:00

造成stm32F030ADC异常的原因是什么

造成stm32F030的ADC异常的原因是什么?stm32F030的ADC

2022-02-10 06:52:59

使用STM32F030多路ADC采样遇到了哪些问题

使用STM32F030多路ADC采样遇到了哪些问题?怎样去解决这些问题呢?

2021-10-21 09:29:20

怎样去编写STM32F030C8T6 多通道ADC采集的程序

怎样去编写STM32F030C8T6 多通道ADC采集的程序?

2021-10-19 08:40:57

STM32F103和STM32F030 ADC有哪些不同之处呢

STM32F103和STM32F030 ADC有哪些不同之处呢?

2021-10-19 06:29:54

关于stm32adc功能的例程

在网上看到的关于stm32的adc功能的例程,大多数是stmf103的,基于stm32f030的相当少。而我就是用

2021-08-04 07:05:38

stm32f030stm32f103功能差异

stm32f030和stm32f103功能差异主要表现在哪?

2021-07-22 09:35:47

7天热门专题 换一换
相关标签