当前位置:   article > 正文

stm32 HAL库使用定时器触发adc采样_stm32l4 hal adc timer

stm32l4 hal adc timer

我的目的是使用定时器触发adc采样,采样频率是500khz,在DMA传输完500个数据之后,求这500个数据的平均值,通过串口发送出去,相当于串口接收端的采样频率是1khz。

cube设置:

时钟

在这里插入图片描述

adc

在这里插入图片描述

timer设置

在这里插入图片描述

keil代码部分:

生成代码后调用以下函数开启DMA传输和相关中断

HAL_TIM_Base_Start_IT(&htim2);
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
HAL_ADC_Start_DMA(&hadc1, (uint32_t *);
  • 1
  • 2
  • 3

在中断服务函数中求平均值
HAL的DMA传输完成中断服务函数跟其他中断服务函数(比如串口、定时器)不一样,不是weak的,好像用户不能重定义,只能使用自动生成的中断服务函数,这个中断服务是在库函数HAL_ADC_Start_DMA中被关联的,
在这里插入图片描述

所以找到ADC_DMAConvCplt之后,将自己的代码加入到里面就可以啦!
在这里插入图片描述

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号