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

STM32 CUBEMX 使用注意事项讨论  

[复制链接]
AI++ 提问时间:2018-6-19 20:58 /
用了一段时间CubeMx  感觉还是有些不足,
1 不支持函数或任务重命名,如果在CubeMx里强行重命名函数或者任务名 ,用起来就会造成原来的旧函数被清掉,
比如 在Cube中希望重命名一个任务函数,直接在原来已有的函数配置表中修改是不行的,这样会导致旧函数被删除,
目前的办法是 建立新的希望的函数后,手动把旧函数的内容剪切过来,然后删除旧函数,
2 随意写注释,
使用CubeMx后 注释不能再随便写是麻烦的事,主要是因为你一旦在CubeMx中对配置进行了更新, 在新生成代码时就可能把原来的
部分注释清除掉,

我感觉应该有办法让CubeMx在新创建代码时忽略用户注释的办法,但是目前还不知道,谁知道的话 就请教一下
还有什么心得 大家来补充



收藏 1 评论24 发布时间:2018-6-19 20:58

举报

24个回答
zhdzhd 回答时间:2018-6-22 10:51:01
在论坛参与问题讨论分析解答的过程,其实就是一个自我学习的过程,碰到网友提出的问题,自己没有遇到过,通过分析测试,知识点就到自己的信息库中,在以后碰到时就不会花太多的时间去绕弯路,同时分享自己的方法也可以让广大的网友借鉴使用,确实是个两全其美的途径,希望大家各种参与进来,共同使用好ST芯片,充分发挥它的潜力,造福世界。。。

评分

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

查看全部评分

科技人生 回答时间:2018-6-21 09:59:28
本帖最后由 o科技人生o 于 2018-6-21 10:04 编辑

如果用cube做freertos的工程  建议你都选择任务在外部声明,然后任务你可以单独用一个或者多个.c写,这样cube就只帮你建立任务,分配空间,并且每个任务都做好了extern的声明,你在自己的.c改任务名,再同步在cube这边修改一下就ok。cube新建的工程不会修改你自己建的.c文件和工程目录。但是你要在cube生产的代码里面改东西,一定要在user code begin / end里面改。相比传统方式, 感觉用cube改起来感觉要方便很多,占用的资源一目了然,各种配置也可视化了。不用花很多时间配置底层,也不容易出错。
微信图片_20180621095645.png

点评

你的建议非常好!!!谢谢  发表于 2018-6-21 10:49

评分

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

查看全部评分

MrJiu 回答时间:2018-6-20 11:09:39
首先,/* USER CODE BEGIN Init */ /* USER CODE END Init */之间写代码,是不会被清掉的。。。其次,Cube启的函数名字干嘛要改呢?这么来说,一套API接口,有专门的人维护,而且还有专门的人搞,对于我们这些使用者来说,只要好用,那必须是拿起就是用啊!!!目前,我HAL和LL都用,感觉不错,不过LL的缺点就是资料有点少,非常接近寄存器配置!!!不过使用方式和HAL差不多吧。。。至少我目前是尽量把HAL和LL使用方式接近!!!

评分

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

查看全部评分

电子星辰 回答时间:2018-6-19 21:35:15
我觉得HAL里串口发送t函数和串口接收函数的__HAL_LOCK(huart)是冲突的,不知道为什么这样设定

评分

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

查看全部评分

me浩 回答时间:2018-6-20 09:30:35
在用户段复制?
AI++ 回答时间:2018-6-20 11:16:49
MrJiu 发表于 2018-6-20 11:09
首先,/* USER CODE BEGIN Init */ /* USER CODE END Init */之间写代码,是不会被清掉的。。。其次,Cube ...

在RTOS 系统中 ,创建的 任务函数名,变量名 ,可能在后期需要调整,改变任务名称,邮箱名称
MrJiu 回答时间:2018-6-20 11:21:29
50031185 发表于 2018-6-20 11:16
在RTOS 系统中 ,创建的 任务函数名,变量名 ,可能在后期需要调整,改变任务名称,邮箱名称 ...

RTOS啊,这些组件类的,我都是直接从原先的官网下载的,Cube工具又封装了一波,我个人认为不好。。这么来说吧,我就把Cube当作MCU的外设初始化用了。。。其他东西没必要参考。。。
AI++ 回答时间:2018-6-20 16:25:27
MrJiu 发表于 2018-6-20 11:21
RTOS啊,这些组件类的,我都是直接从原先的官网下载的,Cube工具又封装了一波,我个人认为不好。。这么来 ...

这个确实 有利有弊, 弊端是 对于原始的系统 改变了操作函数接口,有时搞得人摸不清方法, 好处是上手容易,适合新手,
做复杂的系统功能定制不方便,
但是 被CubeMx封装的接口做常规的功能设计已经足够了
xmstudio 回答时间:2018-6-21 08:22:04
这个就是标准化编程,生成代码的时候会把不是User Code的部分全部复盖掉,所以如果自己写代码一定要全部写在User Code的注释范围里面

评分

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

查看全部评分

馒头弟 回答时间:2018-6-22 09:14:39
推荐一看来是研究过啊
wenyangzeng 回答时间:2018-6-22 09:28:15
1、函数重命名时,只要不是CubeMX默认的文件名,是不会被覆盖掉的。关键是你必须为工程新添加该文件和路径。
2、楼主只要把注释放进之间,就不会被覆盖了。:
/* USER CODE BEGIN Init */

  /* USER CODE END Init */

评分

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

查看全部评分

zhdzhd 回答时间:2018-6-22 10:45:27
其实STM32CubeMX的设计,在重新生成代码时只会修改STM32CubeMX生成的代码,保留用户在指定区域内编写的代码,指定区域就是:
/* USER CODE BEGIN Init */

  /* USER CODE END Init */

另外关于在STM32CubeMX生成的文件中写注释的问题,建议将注释的代码放到用户创建的源文件中,STM32CubeMX不会去修改用户创建的源文件,所以是没问题的;或者写在用户代码区域中。
b7ba76f845bbaef6ebd5713ddfc930d3.jpg
随风飘扬 回答时间:2018-6-22 14:13:00
CubeMX的目的应该是更方便而不是更灵活,最灵活的方式就是完全自己写了,我在使用的时候一般也只用初始化部分,其他功能都是自己写,毕竟初始化基本都一样,容易通用化,但功能实现确很难做到面面俱到,还是自己写的比较好

评分

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

查看全部评分

feiante 回答时间:2018-6-22 16:20:02
我一般是自己建立一个.c文件,然后把CubeMX生成的程序贴到自己的文件中,这样随便加注释、随便更改。包括更改函数名

评分

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

查看全部评分

12下一页

所属标签

相似问题

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