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

cubemx如何设置ADC的多通道采集

[复制链接]
always18 提问时间:2018-9-25 16:18 /
本帖最后由 always18 于 2018-9-25 17:04 编辑

我的cubemx版本是4.26,mcu是f042c6,网上找了些资料都是可以设置通道个数和顺序的,而我的cube版本却没有,大家帮忙看看下面的步骤哪里有问题


uint32_t ADC_Value[100], ad1, ad2;

在while(1)前添加 HAL_ADC_Start_DMA( &hadc, (uint32_t*)&ADC_Value, 100 );

while(1)
{
   ......
   HAL_Delay(1000);
   while(i<100)
   {
    ad1 += ADC_Value[i++];
    ad2 += ADC_Value[i++];
   }
   ad1 /= 50;
   ad2 /= 50;
   printf("ad1=%d,ad2=%d\n", ad1, ad2);
}

串口打印的结果一直是 ad1=800,ad2=640,不论通道电压怎么变化,这个值一直不变,问题在哪里?

1.png
2.png
3.png
4.png
5.png
6.png
收藏 评论6 发布时间:2018-9-25 16:18

举报

6个回答
qq74567871 回答时间:2018-9-25 20:21:14
        赞一个!丰富STM32CubeMX的学习和推广!.
always18 回答时间:2018-9-26 18:41:09
版主能帮忙看下吗?
always18 回答时间:2018-9-26 18:42:00
这论坛从来都没人回帖的吗?
xmshao 回答时间:2018-9-26 22:39:59
always18 发表于 2018-9-26 18:42
这论坛从来都没人回帖的吗?

你看看你的DMA 配置部分,DMA是normal模式还是circular模式。
如果是Normal模式的,每次你得重新初始化DMA才能传输新的数据。

评分

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

查看全部评分

always18 回答时间:2018-9-26 23:30:51
xmshao 发表于 2018-9-26 22:39
你看看你的DMA 配置部分,DMA是normal模式还是circular模式。
如果是Normal模式的,每次你得重新初始化DM ...

如果是normal,可以每隔1000ms打印ad1和ad2的值,只是值是不变化的,按照您的意思,我在每次打印时调用MX_DMA_Init();或者HAL_ADC_Start_DMA( &hadc, (uint32_t*)&ADC_Value, 100 );
还是没有变化

如果是circular,则串口快速打印出一些数字来,也不知道是哪里打印的

不知道是哪里的问题了
xmshao 回答时间:2018-9-27 16:43:10
always18 发表于 2018-9-26 23:30
如果是normal,可以每隔1000ms打印ad1和ad2的值,只是值是不变化的,按照您的意思,我在每次打印时调用MX ...

一定有原因的。

1、确认下硬件是否有问题,你调整输入是否真的变化了? 你可以同时配合ADC_DR寄存器的数据来观察
2、看看是否代码哪里出现小失误而以为数据没变化。
3、多看看手册,CUBEMX最多最多只是做些基本配置。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版