打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
STM32_H750_ADC总结

DMA中断方式

STM32cubemx的一些基础配置
注意H750引脚,很多引脚有后缀例如PC3_C(不是PC3)




ADC和DMA都不是连续模式
初始化开启DMA传输

HAL_ADC_Start_DMA(&hadc3, (uint32_t*)&ADC_ConvertedValue, 1);

回调函数将flag变量u置1

void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* AdcHandle){u=1;y  ;}

主函数

x  ;printf("x=%d\r\n",x);if(x%5==0){HAL_ADC_Start_DMA(&hadc3, (uint32_t*)&ADC_ConvertedValue, 1);}HAL_Delay(1000);if(u==1){ADC_vol = (float)(ADC_ConvertedValue*3.3/65536);printf("y=%d\r\n",y);u=0;    printf("\r\n The current AD value = 0xX \r\n", ADC_ConvertedValue);    printf("\r\n The current AD value = %f V \r\n", ADC_vol);}

主函数每5s开启一次ADC_DMA
判断flag变量u,打印adc转换数值
DMA部分选择DMA,不要选择BDMA(网上查了下BDMA只能用在D3域)

连续转换模式,将ADC连续转换打开,DMA循环打开

HAL_ADC_Start_DMA(&hadc3, (uint32_t*)&ADC_ConvertedValue, 1);  while (1)  {HAL_Delay(1000);if(u==1){ADC_vol = (float)(ADC_ConvertedValue*3.3/65536);u=0;    printf("\r\n The current AD value = 0xX \r\n", ADC_ConvertedValue);    printf("\r\n The current AD value = %f V \r\n", ADC_vol);}}

ADC 和DMA一直在转换,只需要打印电压值。

中断方式

使用下面两个函数开启和关闭ADC中断

HAL_ADC_Start_IT(&ADC_Handle);HAL_ADC_Stop_IT(&ADC_Handle);

多通道DMA的ADC转换和单通道的区别是()

HAL_ADC_Start_DMA(&hadc1, (uint32_t *)ADC_ConvertedValue, 4);

双重ADC单通道 交替采集
双重 ADC 交替模式,只适用于 ADC1 和 ADC2。双重 ADC 交替模式是针对同一通道的使用两个 ADC(ADC1 作为主 ADC, ADC2 作为从 ADC)交叉采集,就是在 ADC1 采样完等几个时钟周期后 ADC2 开始采样,此时 ADC1 处在转换阶段,当ADC2 采样完成再等几个时钟周期后 ADC1 就进行采样,充分利用转换阶段时间达到增快采样速度的效果

HAL_ADCEx_MultiModeStart_DMA(&ADC_Handle, (uint32_t*)&ADC_ConvertedValue, 1);//开启交替采集




使用 ADC_MultiModeTypeDef 结构体变量ADC_multimode 来配置 ADC 为双重 ADC 交替模式、 3 个周期的采样延迟、数据格式选择 32 位数据格式。(DMA设置为32位)

来源:https://www.icode9.com/content-4-816701.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
STM32 ADC规则组和注入组配置方法
STM32 之 HAL库
超全STM32 HAL的知识总结
物联网之LoRa开发与应用六(LoRa自组网络设计)
【青风带你学stm32f051系列教程】第10课 ADC采样/DMA通道 | 爱板网
[HAL]stm32F407 DAC DMA TIM6查表法产生正弦波
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服