登录/注册

定时器触发adcstm32f4

更多

在STM32F4系列微控制器中,配置定时器触发ADC采样的步骤如下:


1. 硬件外设使能


2. 定时器配置

TIM_HandleTypeDef htim2;

void TIM_Config(void) {
  htim2.Instance = TIM2;
  htim2.Init.Prescaler = 8399;         // 预分频值,假设系统时钟84MHz → 84MHz/8400=10kHz
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = 999;             // 自动重装载值,触发频率=10kHz/(999+1)=10Hz
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  HAL_TIM_Base_Init(&htim2);

  // 配置定时器触发输出事件(TRGO)
  HAL_TIMEx_MasterConfigSynchronization(&htim2, 
    &(TIM_MasterConfigTypeDef){.MasterOutputTrigger = TIM_TRGO_UPDATE});

  HAL_TIM_Base_Start(&htim2);  // 启动定时器
}

3. ADC配置

ADC_HandleTypeDef hadc1;

void ADC_Config(void) {
  hadc1.Instance = ADC1;
  hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
  hadc1.Init.Resolution = ADC_RESOLUTION_12B;
  hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T2_TRGO; // 选择TIM2_TRGO作为触发源
  hadc1.Init.ContinuousConvMode = DISABLE;                    // 禁用连续转换,由外部触发
  HAL_ADC_Init(&hadc1);

  // 配置ADC通道(例如通道0)
  ADC_ChannelConfTypeDef sConfig = {0};
  sConfig.Channel = ADC_CHANNEL_0;
  sConfig.Rank = 1;
  sConfig.SamplingTime = ADC_SAMPLETIME_84CYCLES;
  HAL_ADC_ConfigChannel(&hadc1, &sConfig);
}

4. DMA配置(可选,推荐用于连续传输)

DMA_HandleTypeDef hdma_adc;

void DMA_Config(void) {
  __HAL_RCC_DMA2_CLK_ENABLE();  // ADC1通常使用DMA2 Stream0
  hdma_adc.Instance = DMA2_Stream0;
  hdma_adc.Init.Channel = DMA_CHANNEL_0;
  hdma_adc.Init.Direction = DMA_PERIPH_TO_MEMORY;
  hdma_adc.Init.PeriphInc = DMA_PINC_DISABLE;
  hdma_adc.Init.MemInc = DMA_MINC_ENABLE;
  hdma_adc.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
  hdma_adc.Init.MemDataAlignment = DMA_MDATAALIGN_HALFWORD;
  hdma_adc.Init.Mode = DMA_CIRCULAR;  // 循环模式自动填充缓冲区
  HAL_DMA_Init(&hdma_adc);

  // 关联DMA到ADC
  __HAL_LINKDMA(&hadc1, DMA_Handle, hdma_adc);

  // 启动ADC的DMA传输
  HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buffer, BUFFER_SIZE);
}

5. 启动外设

// 启动定时器(触发ADC)
HAL_TIM_Base_Start(&htim2);

// 启动ADC(如果未使用DMA,使用HAL_ADC_Start_IT()中断方式)
HAL_ADC_Start(&hadc1);

关键点说明


调试建议

通过以上步骤,即可实现STM32F4定时器精确触发ADC采样。

学习STM32F103的定时器功能

三勺最近在学习STM32F103的定时器功能,本文主要解释在配置通用、基本、高级定时器寄存

2023-10-24 15:49:29

STM32速成笔记(6)—定时器

关于什么是定时器,简单来讲,就是是用来定时的。STM32F103ZET6有两个基本定时

2023-10-24 09:41:50

STM32有哪几种定时器 STM32高级定时器有哪些功能

SysTick定时器的功能比较单一,主要是供给系统使用的,系统默认设置为1ms触发一次中断。而用户想要使用自己的定时器,

2023-07-27 16:25:17

STM32定时器学习---基本定时器

STM32F1系列的产品,除了互联网产品外,工作8个,3种定时器,其中一种就是基本定时器。那么

资料下载 杨福林 2021-12-02 14:06:11

STM32定时器触发ADC的时序话题

在STM32芯片的ADC应用中,我们往往会利用定时器来触发ADC的启动转换,而能够触发

资料下载 建立建利12 2021-11-30 11:06:20

STM32F103定时器触发ADC+DMA传输

STM32F103定时器触发ADC+DMA传输ADC除了软件触发方式之外

资料下载 20615 2021-11-30 10:36:14

STM32定时器-基本定时器

目录定时器分类基本定时器功能框图讲解基本定时器功能时钟源计数器时钟计数

资料下载 佚名 2021-11-23 18:21:39

战舰:官方程序定时器触发ADC,测试可用

战舰:官方程序定时器触发ADC,测试可用(电源技术发展的新趋势新技术)-stm32f103

资料下载 佚名 2021-09-24 15:11:56

STM32 TIM—基本定时器

STM32F4xx系列控制器有共有14个TIM定时器。其中2个高级控制定时器

2023-07-22 17:05:44

STM32F407 基本定时器使用

介绍STM32F407基本定时器的配置方法,分别介绍轮询方式、中断方式使用定时器完成定

2023-07-06 14:32:55

STM32F407 滴答定时器

介绍STM32F407滴答定时器配置方法、使用方式,封装延时函数得到精确的时间。

2023-07-06 14:32:11

STM32F03定时器基础知识基本简介

STM32F103微控制器的定时器分为系统定时器(SysTick)、“看

2023-07-03 17:08:11

STM32的通用定时器

STM32F1 的定时器非常多,由 2 个基本定时器(TIM6、TIM7)、4

2023-02-10 14:47:04

STM32定时器触发ADC的时序话题

STM32G4芯片为例,来大致聊聊该话题。 这里选择TIM1来触发ADC。我们从手册或CubeMx配置界面不难看到可用来触发ADC的

2021-02-19 14:13:17

关于STM32定时器触发SPI逐字收发之应用示例

STM32定时器触发SPI逐字收发之应用示例

2020-01-14 16:35:54

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