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

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

cube设置:

时钟

stm32 HAL库使用定时器触发adc采样_第1张图片

adc

stm32 HAL库使用定时器触发adc采样_第2张图片

timer设置

stm32 HAL库使用定时器触发adc采样_第3张图片

keil代码部分:

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

HAL_TIM_Base_Start_IT(&htim2);
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
HAL_ADC_Start_DMA(&hadc1, (uint32_t *);

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

所以找到ADC_DMAConvCplt之后,将自己的代码加入到里面就可以啦!
stm32 HAL库使用定时器触发adc采样_第5张图片

你可能感兴趣的:(stm32,嵌入式)