打印
[STM32F1]

STM32CubeMX1.4.0版发现bug

[复制链接]
1311|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
碧云天书|  楼主 | 2016-6-17 22:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
选择ADC1和ADC2以同步方式采集数据2×4通道的数据,运行自动生成的代码,直接陷入错误捕获循环中。
★故障分析:
MX_ADC2_Init()函数有设置多通道代码如下
    multimode.Mode = ADC_DUALMODE_REGSIMULT;
    if (HAL_ADCEx_MultiModeConfigChannel(&hadc2, &multimode) != HAL_OK)
    {
        Error_Handler();
    }
就是这个HAL_ADCEx_MultiModeConfigChannel()函数,它只能由主ADC调用,根本就不该出现在从ADC调用中,于是就陷入错误捕获函数Error_Handler()内部了。
★故障排除办法:删除该段代码。
★值得说明的是,这个错误在v1.4.0以前的版本就有,但到了v1.4.0就变成了致命错误,这说明:
1. ST公司具有法国奔放浪漫的基因,程序风格属于意识流;
2. ST的HAL库确实在进步,学会通过检验函数返回值拦截错误了;
3. 这个HAL库还有进步的巨大空间;
4. 用  /* USER CODE BEGIN 1 */ 和  /* USER CODE END 1 */ 限定用户的可编程区域真的很蛋疼。比如,想在所有头文件之前加个定义都没门儿,修改HAL库的错误也很麻烦,每次重新生成之后都要再改一遍。
沙发
lixiaoxu186| | 2016-7-16 16:54 | 只看该作者
1、楼主您好,打包了您的STM32F4Cube库CDC类试用手记USB例程,全速模式,对于我们这种对USB不了解,但还需要使用的开发人员,开发起来确实很方便,测试速度 800~980KB/S ,
2、现在遇到个问题,我需要实时采集两路AD并通过USB传输给PC,我也是使用STM32CubeMX生成的两路ad,DMA模式,该工程我使用串口打印,两路AD采集传输都正常。

3、现其移植到您的工程里,当我我启动DMA,即 HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&ADC_Value, 2);  语句加上, USB就不工作了,上位机端也显示Unkonw divice ,识别不到虚拟串口。各别时候可以识别但是通讯不上。把 HAL_ADC_Start_DMA(&hadc1, (uint32_t*)&ADC_Value, 2);去掉usb工作正常。
您在虚拟USB工程上使用过,DMA采集AD吗
恳请大神指导下,我是哪里出现了问题。

使用特权

评论回复
板凳
734774645| | 2016-7-17 09:02 | 只看该作者
恩,确实这个可能会有BUG,不过,随着版本的更新,肯定会解决的。

使用特权

评论回复
地板
wahahaheihei| | 2016-7-21 10:56 | 只看该作者
BUG不可怕,基础扎实牢固,主要看手册的那个结构图,配合着用

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:红尘俗世偏逍遥 看风乍起 笑雨正飘

24

主题

330

帖子

23

粉丝