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

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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版