你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

求HAL+ADC+DMA多路采集完整例程。

[复制链接]
sos博 提问时间:2018-10-7 14:13 /
我板子F407VG
在网上找教程,都是怎么配置,我按着差不多配置完了,不知道怎么获取值,怎么得到结果。
下面放上我自己配置的,给大家看看有毛病不。

  1. <p>ADC_ChannelConfTypeDef sConfig;
  2.   ADC_MultiModeTypeDef multimode;
  3.    
  4.   hadc1.Instance = ADC1;
  5.   hadc1.Init.ClockPrescaler = ADC_CLOCK_SYNC_PCLK_DIV4;
  6.   hadc1.Init.Resolution = ADC_RESOLUTION_12B;//精度12bit
  7.   hadc1.Init.ScanConvMode = ENABLE;
  8.   hadc1.Init.ContinuousConvMode = ENABLE;
  9.   hadc1.Init.DiscontinuousConvMode = DISABLE;
  10.   hadc1.Init.ExternalTrigConvEdge = ADC_EXTERNALTRIGCONVEDGE_RISING;
  11.   hadc1.Init.ExternalTrigConv = ADC_EXTERNALTRIGCONV_T3_CC1;
  12.   hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT;//数据右对齐
  13.   hadc1.Init.NbrOfConversion = 8;//顺序转换8个通道的ADC值
  14.   hadc1.Init.DMAContinuousRequests = ENABLE;
  15.   hadc1.Init.EOCSelection = ADC_EOC_SINGLE_CONV;
  16.   if (HAL_ADC_Init(&hadc1) != HAL_OK)
  17.   {
  18.     _Error_Handler(__FILE__, __LINE__);
  19.   }

  20. multimode.Mode = ADC_MODE_INDEPENDENT;
  21.   if (HAL_ADCEx_MultiModeConfigChannel(&hadc1, &multimode) != HAL_OK)
  22.   {
  23.     Error_Handler();
  24.   }
  25. </p><p>
  26. </p><p>sConfig.Channel = ADC_CHANNEL_0;
  27.   sConfig.Rank = 1;
  28.   sConfig.SamplingTime = ADC_SAMPLETIME_3CYCLES;
  29.   if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  30.   {  _Error_Handler(__FILE__, __LINE__);}
  31.         sConfig.Channel = ADC_CHANNEL_1;
  32.   sConfig.Rank = 2;
  33.   if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  34.   {  _Error_Handler(__FILE__, __LINE__);}
  35.         sConfig.Channel = ADC_CHANNEL_2;
  36.   sConfig.Rank = 3;
  37.   if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  38.   {  _Error_Handler(__FILE__, __LINE__);}
  39.         sConfig.Channel = ADC_CHANNEL_3;
  40.   sConfig.Rank = 4;
  41.   if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  42.   {  _Error_Handler(__FILE__, __LINE__);}
  43.         sConfig.Channel = ADC_CHANNEL_4;
  44.   sConfig.Rank = 5;
  45.   if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  46.   {  _Error_Handler(__FILE__, __LINE__);}
  47.         sConfig.Channel = ADC_CHANNEL_5;
  48.   sConfig.Rank = 6;
  49.   if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  50.   {  _Error_Handler(__FILE__, __LINE__);}
  51.         sConfig.Channel = ADC_CHANNEL_6;
  52.   sConfig.Rank = 7;
  53.   if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  54.   {  _Error_Handler(__FILE__, __LINE__);}
  55.         sConfig.Channel = ADC_CHANNEL_7;
  56.   sConfig.Rank = 8;
  57.   if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK)
  58.   {  _Error_Handler(__FILE__, __LINE__);}</p><p>
  59. </p><p>下面是GPIO的配置我没放。</p>
复制代码


收藏 评论13 发布时间:2018-10-7 14:13

举报

13个回答
tgw860910 回答时间:2018-10-8 09:20:30
你用的是DMA吧?那就要打开DMA的转换,函数应该是这个 HAL_ADC_Start_DMA

评分

参与人数 1蝴蝶豆 +1 收起 理由
STMCU + 1

查看全部评分

wenyangzeng 回答时间:2018-10-8 09:59:18
ST官方就有代码可参考:

ADC_RegularConversion_DMA.rar (5.97 MB, 下载次数: 538)

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

sos博 回答时间:2018-10-9 09:04:01
tgw860910 发表于 2018-10-8 09:20
你用的是DMA吧?那就要打开DMA的转换,函数应该是这个 HAL_ADC_Start_DMA

哦,那个函数我看到了,也用了,但是返回来的是0。。。。
并且不知道多路的怎么获取,难道定义个数组?然后传入数组名和长度?我试了,也是0.
sos博 回答时间:2018-10-9 09:04:54
wenyangzeng 发表于 2018-10-8 09:59
ST官方就有代码可参考:

那个我看了,没有帮助啊,那个函数我用了,返回0.请看楼上我的描述。
wenyangzeng 回答时间:2018-10-9 10:24:08
sos博 发表于 2018-10-9 09:04
那个我看了,没有帮助啊,那个函数我用了,返回0.请看楼上我的描述。

ST官方例程一定没问题的,楼主应该检查一下自己的硬件了。
tgw860910 回答时间:2018-10-9 13:54:35
        HAL_ADC_Start_DMA(&hadc1, (uint32_t*)Adcc_Val, ADCC_Channel_Max);

就是这样用啊,定义一个 Adcc_Val[ADCC_Channel_Max] 的数组,你在配置ADC的时候用了多少个RANK,这些AD值就会循环地写入这个数组,还有一个要注意的是,你在初始化配置的时候用的是TIM3 CH1的触发,你还得看看TIM3 CH1有没有工作,我建议你改成 hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START;
butterflyspring 回答时间:2018-10-9 17:14:53
多路只能一个个去获取,而且要注意间隔时间

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

absdjko 回答时间:2018-11-10 08:42:26
感觉407的AD用、。。。。
absdjko 回答时间:2018-11-10 08:49:00
wenyangzeng 发表于 2018-10-8 09:59
ST官方就有代码可参考:

单通道的啊,问题是多通道就有问题了
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版