功能描述:定时器触发AD采样指定长度后处理 , 通过DMA传输
STM32CubeMX配置如下
时钟配置
ADC配置
DMA请求
记得开启DMA全局中断
定时器配置
代码如下
#define LENGTH 4096 //采样长度
uint16_t adc_sample[LENGTH];
float vol_value[LENGTH];
初始化
HAL_ADC_Start(&hadc1); //开启ADC1
HAL_TIM_Base_Start(&htim3);//打开定时器3
HAL_ADC_Start_DMA(&hadc1,(uint32_t*)adc_sample,LENGTH);//开启DMA
模数转换完成回调函数
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc)
{
HAL_ADC_Stop_DMA(&hadc1);
for(uint16_t i=0;i<LENGTH;i++)
{
vol_value[i]=adc_sample[i]*3.3/4095;//采样结果换算为电压
}
}
调试验证:
采样频率fs=84M/(3*1367)=20.482KHz
被测信号为1KHz,1Vpp的方波,因为负电压AD采不到,所以为0