这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » STM32 » 【STM32F373】1、ADC+DMA

共2条 1/1 1 跳转至

【STM32F373】1、ADC+DMA

助工
2024-10-16 22:12:07     打赏

【前言】

在ADC获取转换时,如果需要实现快速转换,如果使用poll来读取,那么需要浪费很多的CPU的资源,本篇记录如果配置ADC+DMA进行数据搬运,快速读取ADC并完成数值的平均。

【STM32CubeMX配置】

1、stm32F373只有一路ADC,所以只需要配置好通道就行了。如下图所示,使能通道1,其余参数如图所示。

image.png

2、打开DMA配置,添加一个通道,方向为从外设到内存,字节由于我们使用的是12位的ADC所以选择半字节16bit。

image.png

【代码实现】

生成代码后,我们在main中添加启动HAL_ADC_Start_DMA(&hadc1, (uint32_t*)adc_buf, ADC_BUF_LEN);

然后在实现自定义的回调函数:

/* USER CODE BEGIN 1 */
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){
	//Running Point average, values in array may change during.
	float avrage = 0;
	uint8_t i;

	for(i = 0; i < ADC_BUF_LEN; i++){
		avrage += adc_buf[i];
	}
	//MAX 15 VOLTS

	U1_printf("ADC1_channle1 value:%.2f\r\n",avrage /ADC_BUF_LEN);

	HAL_ADC_Stop_DMA(&hadc1);
	

}
/* USER CODE END 1 */

【验证】

下载到开发板后,就可以实现打印出采集到的数据了。

image.png




关键词: STM32F373     ADC+DMA    

工程师
2024-10-17 10:37:44     打赏
2楼

666


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]