搜索
bottom↓
回复: 43

分享:学习STM32CubeMX遇到的坑

  [复制链接]

出0入12汤圆

发表于 2020-7-14 15:03:02 | 显示全部楼层 |阅读模式
STM32CubeMX是个 ST 公司推出的一个配置工具,直接由图形界面配置STM32全系列单片机,基于HAL库生成初始化代码,用起来还是比较方便。
但是我在这几天的学习过程中遇到了一些问题,现列出来,避免新同学们再次入坑,如果以后还有坑,我还在这里记下来。

1、在学习TIM产生PWM脉冲时
遇到__HAL_TIM_SetCompare找不到的情况
需要在main.c前面加入#include "Legacy/stm32_hal_legacy.h"



2、在学习TIM捕获功能遇到的:
stm32f1xx_hal_tim.h库文件中有一个BUG:
库文件中原:
#define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \
  (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP))):\
   ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\
   ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC3P)) :\
   ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC4P)))

应为:
#define TIM_RESET_CAPTUREPOLARITY(__HANDLE__, __CHANNEL__) \
  (((__CHANNEL__) == TIM_CHANNEL_1) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC1P | TIM_CCER_CC1NP)) :\
   ((__CHANNEL__) == TIM_CHANNEL_2) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC2P | TIM_CCER_CC2NP)) :\
   ((__CHANNEL__) == TIM_CHANNEL_3) ? ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC3P)) :\
   ((__HANDLE__)->Instance->CCER &= ~(TIM_CCER_CC4P)))

否则造成:
error:  #53: expected a ":"

error:  #65:expected a ";"
的错误信息半天找不到原因。

3、在学习IIC设备驱动中遇到的BUG
生成的i2c.c文件,必须将I2C时钟初始化 __HAL_RCC_I2C1_CLK_ENABLE(); 语句提前到初始化GPIO前面。
否则驱动失败,不报错,没有任何反应,查找问题让人抓狂。

出0入12汤圆

 楼主| 发表于 2020-9-5 18:51:19 | 显示全部楼层
问题4、F1系列实时时钟,在掉电后,时间在走,日期是不走的。
原因是F1的RTC只是一个32位的秒计数器,而HAL库中并没有将秒计数值转换成日期,而是在上电的时候粗暴地重新赋值。

出0入12汤圆

发表于 2020-7-14 15:16:18 | 显示全部楼层
看看是什么坑

出110入12汤圆

发表于 2020-7-14 16:17:31 | 显示全部楼层
新建还是另存的时候,一直搞不懂这个软件建文件夹还有文件名的逻辑,有时候现有文件会被软件删干净。

出16170入6148汤圆

发表于 2020-7-15 08:54:37 来自手机 | 显示全部楼层
打赏!

庆祝论坛“打赏”功能实施, 现在开始发技术主题,可以获得打赏
https://www.amobbs.com/thread-5735948-1-1.html

出0入0汤圆

发表于 2020-7-15 08:57:52 | 显示全部楼层
楼主细心了,我还是坚守用STM32 STD 库

出0入0汤圆

发表于 2020-7-15 09:14:30 来自手机 | 显示全部楼层
我实验时看了代码,没这个问题啊。

出0入0汤圆

发表于 2020-7-15 09:35:24 | 显示全部楼层
消费敏感行业,用不起hal库,都是用标准库或LL库

出0入12汤圆

 楼主| 发表于 2020-7-15 10:31:42 | 显示全部楼层
XA144F 发表于 2020-7-15 09:14
我实验时看了代码,没这个问题啊。

库版本STM32F1 Series 1.8.0

出0入4汤圆

发表于 2020-7-15 10:37:26 来自手机 | 显示全部楼层
我用1.7.0的库没发现任何问题,改成1.8.0连按键都失效,所以还在用1.7.0

出0入0汤圆

发表于 2020-7-16 18:48:09 | 显示全部楼层
感觉cubemx生成的代码好乱,无用的注释信息太多了。大家有没有好点的整理工程的办法?

出0入0汤圆

发表于 2020-7-24 16:19:35 | 显示全部楼层
cubemx最大问题是例程不全,和STD没法比,界面细节坑巨多,还不如直接看代码设置快捷。

出0入12汤圆

 楼主| 发表于 2020-7-26 09:50:11 | 显示全部楼层
发现一个比较大的问题:

生成的代码不能完全在GD32芯片上运行。

不象以前使用标准库,只要注意GD与STM的兼容性问题,程序基本不用改。

出0入0汤圆

发表于 2020-8-13 16:31:17 | 显示全部楼层
非常感谢!

出0入0汤圆

发表于 2020-8-13 18:06:28 | 显示全部楼层
非常感谢楼主分享

出0入0汤圆

发表于 2020-8-13 18:22:29 来自手机 | 显示全部楼层
简单方便  坑多

出0入0汤圆

发表于 2020-9-5 19:06:25 | 显示全部楼层
..........................

出0入0汤圆

发表于 2020-9-5 21:43:54 | 显示全部楼层
mark 记号

出0入12汤圆

 楼主| 发表于 2020-9-27 19:09:07 | 显示全部楼层
问题5:生成的12864和19264显示驱动程序有时屏幕上会出现乱码,比如过多刷新显示信息就会出现,这个也不知道是不是我程序的问题,反正我用寄存器编写的驱动程序没出现过这种情况。

出0入0汤圆

发表于 2020-9-28 06:57:53 | 显示全部楼层
这么多坑

出100入101汤圆

发表于 2020-9-28 08:02:24 来自手机 | 显示全部楼层
还有坑么?

出0入0汤圆

发表于 2020-9-28 08:44:17 | 显示全部楼层
持续关注中

出0入0汤圆

发表于 2020-9-28 10:28:41 | 显示全部楼层
正准备学习呢,刚好来看看前辈遇到哪些坑,之前一直用库函数,现在想用L系列的,好像不支持库函数o(╥﹏╥)o

出0入0汤圆

发表于 2020-9-28 11:46:17 | 显示全部楼层
多谢楼主分享,
看来是STM32CubeMX的问题,HAL库没问题吧

出0入12汤圆

 楼主| 发表于 2020-9-29 05:55:53 | 显示全部楼层
kuanglf 发表于 2020-9-27 19:09
问题5:生成的12864和19264显示驱动程序有时屏幕上会出现乱码,比如过多刷新显示信息就会出现,这个也不知 ...

经检查,应该是我程序的问题

出0入12汤圆

 楼主| 发表于 2020-9-29 05:58:07 | 显示全部楼层
kuanglf 发表于 2020-7-26 09:50
发现一个比较大的问题:

生成的代码不能完全在GD32芯片上运行。

这个应该也是我程序的问题,确定的问题我以后会将它顶置

出0入0汤圆

发表于 2020-9-29 17:34:21 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2020-9-30 09:37:25 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2020-9-30 15:59:12 | 显示全部楼层
前两天用CubeMX创建了一个工程,导出为iar工程,编译了之后只烧进去过一次程序,之后jlink没法连接到CPU了,一直提示reset引脚不能复位,手动复位之后烧回之前的程序就好了,不知是我不会用还是有什么问题,是不是用Cubestudio会好点?

出0入0汤圆

发表于 2020-10-12 08:40:29 | 显示全部楼层
谢谢分享                     

出0入0汤圆

发表于 2020-10-12 14:00:09 | 显示全部楼层
cube的坑

出0入0汤圆

发表于 2020-10-22 13:36:23 | 显示全部楼层
cube代码小bug挺多的,造成意料之外的错误,还好常用外设bug大家都会贴出来

出0入0汤圆

发表于 2020-10-22 20:24:44 | 显示全部楼层
最近也开始用HAL库,整体感觉有点不习惯,比标准库复杂很多

出0入0汤圆

发表于 2020-10-24 21:25:58 来自手机 | 显示全部楼层
bielai 发表于 2020-10-22 13:36
cube代码小bug挺多的,造成意料之外的错误,还好常用外设bug大家都会贴出来

写flash也有bug

出0入0汤圆

发表于 2020-10-25 18:39:19 | 显示全部楼层
我实验时看了代码,没这个问题啊

出0入0汤圆

发表于 2020-11-2 17:15:53 | 显示全部楼层
最近也开始用CubeMX了,还有点不太习惯。

出100入101汤圆

发表于 2020-11-28 10:47:04 | 显示全部楼层
bielai 发表于 2020-10-22 13:36
cube代码小bug挺多的,造成意料之外的错误,还好常用外设bug大家都会贴出来

大神提到的bug,有分享么?

出0入0汤圆

发表于 2020-11-28 10:53:36 | 显示全部楼层
今天我也遇到一个坑,芯片型号是STM32F051C8T6,生成工程之后,进J-LINK设置找不到芯片,就是读不出芯片ID,但是用老的标准库做的工程一切正常,在网上找了一圈,说是要在设置SYS那里DEBUG打钩,我打勾了还是没起作用,有遇到这个问题的坛友麻烦出来说说。

出0入0汤圆

发表于 2020-12-1 15:58:57 | 显示全部楼层
本帖最后由 yzz163 于 2020-12-1 16:00 编辑
tclg 发表于 2020-11-28 10:53
今天我也遇到一个坑,芯片型号是STM32F051C8T6,生成工程之后,进J-LINK设置找不到芯片,就是读不出芯片ID, ...


以后注意这里:设置SYS那里DEBUG打钩
我用的STM32F103C8T6 ,山寨版 ST-LINK V2 ,STM32CubeMX5.3.0 。前2天也遇到突然读不到ID,无法下载,,,后来 boot0--1, boot1--0 ,能读写了。然后又恢复 boot0--0, boot1--0,现在又正常了。

出0入0汤圆

发表于 2020-12-1 16:19:38 | 显示全部楼层
HAL是STM32的方向了,他好与不好都要适应它,迁就他。目前我做的实验性质的liteos移植工作,都是基于stm32CubeMX生成的裸机文件。暂时没碰到什么问题。至少碰到的问题都自己解决了。一点点适应吧,早改变早受益。

出0入0汤圆

发表于 2020-12-8 17:35:49 | 显示全部楼层
miractech 发表于 2020-9-30 15:59
前两天用CubeMX创建了一个工程,导出为iar工程,编译了之后只烧进去过一次程序,之后jlink没法连接到CPU了 ...

最大的坑:默认Debug 是 No ,
如果没有在 SYS 里选择 就是个死芯片了。哈哈。。我用的 SW ,现在每次生成前都要去看一下这里。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2020-12-9 14:25:05 | 显示全部楼层
yzz163 发表于 2020-12-8 17:35
最大的坑:默认Debug 是 No ,
如果没有在 SYS 里选择 就是个死芯片了。哈哈。。我用的 SW ,现在每次生 ...

确实是这样,我也发现了

出0入0汤圆

发表于 2020-12-9 16:37:53 | 显示全部楼层
楼主细心了,我还是坚守用STM32 STD 库

出0入0汤圆

发表于 2021-1-24 12:46:18 | 显示全部楼层
生成的systick中断代码变成了这样:
void SysTick_Handler(void)
{
  /* USER CODE BEGIN SysTick_IRQn 0 */

  /* USER CODE END SysTick_IRQn 0 */
  HAL_IncTick();
  /* USER CODE BEGIN SysTick_IRQn 1 */

  /* USER CODE END SysTick_IRQn 1 */
}
时面少了一行:
  HAL_SYSTICK_IRQHandler();
这样
不知道是故意这样设计的,还是出现了bug?
这个问题楼主有遇到过吗?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-19 20:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表