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

【STM32CubeMX】工欲善其事必先利其器之最强四大技巧

[复制链接]
飞跃-344154 发布时间:2020-3-8 18:17
一、 使用默认的配置新建工程
& J" v2 X0 w4 D% b) D' h- l, w2 C经常大伙都会把一个ioc配置文件配好了,放在某个位置,需要用的时候去找,
/ W: f6 a  I- D0 V6 a! v有时候我会经常要找半天。! d1 a/ n9 ]7 J' o& K6 Z" M  u2 G
那有没有办法把配置文件保存到工程里面呢?* e& J1 `! ]0 d8 j
CUBEMX目前看上去还没有这个功能,
$ g! _/ _/ W  v- s2 x7 H我这边研究了一下如何使自己的配置成为默认配置:
6 F/ k) _4 i0 V% g# G/ D, \: U我这边有一块NUCLEO-L496ZG的板子,每次采用ST BOARD来选择NUCLEO板子
/ L' T9 |9 U/ D/ } 1.png 5 z5 z6 m* w& ^9 V$ D+ ?) h
每次都会提示我使用默认配置:
: F+ P4 |6 E6 u& x5 z 2.png + o9 q/ k3 C9 O1 ?; [, V& R: Z
0 e7 B7 O) I4 L; I3 X. Q# R. m
3.png
1 x" ?: g; K1 E8 i' K8 Q! g  b但是吧,使用默认配置之后,有很多配置,比如RCC等都不是我想要的配置。
# J( q+ G/ L$ z5 p8 H& {每次都要改,比如这个默认配置的时钟,乱奇怪的时钟,我相信大家肯定会知道怎么改了,但是每次都要改,会增加开发时间。
0 ?% G4 |) q* S0 R  E8 S  @$ z4 d* t/ \. G 4.png 1 h1 S2 F4 f1 B$ A! k7 _. Z
我就想,我改好配置,能不能保存到CUBEMX路径上去呢?
6 y$ e- d! e* g7 L* I1 }  n探索了很久,给大家分享一下:
/ j7 G" o8 p( q: C1. 首先配置好自己想要的ioc配置,这个应该在其他教程里面都有提到。1 S+ y' y$ j# |; t8 J* o
保存好ioc文件。
' }" H* p/ Y$ w, Z1 z2. 打开CUBEMX安装路径:
  N. j' K8 F% K3 nProgram Files\STMicroelectronics\STM32Cube\STM32CubeMX\db\plugins\boardmanager\boards
# M6 d  j5 M' g9 Q2 r  P1 S看到这里有很多ioc. U4 u  ^% E! M! s( S  L3 g
找到自己的板子,NUCLEO-L496ZG
! G  `* J0 O/ n& ~3 p  A, ~" v; N# y2 U如果上面default mode选择yes就用下面的allconfig配置,如果选择no就用下面board的配置
2 g8 L, a" w5 LB43_Nucleo_NUCLEO-L496ZG_STM32L496ZG_Board.ioc
. O/ |6 S* Z( A, QB43_Nucleo_NUCLEO-L496ZG_STM32L496ZG_Board_AllConfig.ioc
* O1 H- I, N) @好,现在来替换一下就可以了
) R9 }1 h/ @9 U9 T' cB43_Nucleo_NUCLEO-L496ZG_STM32L496ZG_Board_AllConfig.ioc  j) c/ G' ]3 c; n; O6 e2 H
把这里面的配置稍作修改,之后再选择板子的时候,就可以直接使用default mode1 A% S. Y  M% P$ k$ g5 S: v# d
不过这里还有几个Project里面的选项好像通过这个配置也改不了,每次生成都是默认的。
6 I/ P5 y% a* `# z: Z/ ~7 |; F' @. W9 n具体在哪里改,我也没找到。就是project里面的配置,这个要是谁知道,请告诉小弟,万分感谢:% ^9 T. L9 k( P% i9 V: G; ^
5.png
8 [7 F, e( D0 @3 N% z4 Q# y. u/ t6 P- M( O- |' `5 D% U
0 [4 J% _  ]1 g, f& z4 v% i
二、配置默认的点灯程序:) ^4 w3 r& }1 K& @, ~( a3 Y! y
你是不是经常有这样的经历?拿到一块STM32板子,先点灯,让小灯一闪一闪亮晶晶的。! a. f. k" ?4 b: e6 o% ]" Q
是不是你总是把几条点灯的c语言代码都记在小本本上?每次拿到一块板子都先从cubemx配置开始,然后生成工程之后,把自己的c语言写进去?6 k1 C/ k0 U% y" f. _
有没有想过让cubemx自己在main里面生成一个LED点灯程序?
/ a6 f, ~+ H9 h0 F" S# o  J那让CUBEMX自己生成的代码如何写呢?
( u) l; q7 k( e研究了好久,0 I* Z. Z/ [. y0 x& `1 S" @
终于被我找到
$ Z6 q/ o' Y6 ?& u打开:
' D  b- e) I# {5 N0 qProgram Files\STMicroelectronics\STM32Cube\STM32CubeMX\db\templates\tpl_main_c.ftl
  Z4 g* g) h7 J这个文件
  U7 ?6 B/ N. A& ?6 G7 q找到下面这段:
  \: \/ g* b7 N3 @3 ~- E0 e#twhile (1)
! h  x& ^2 D0 ]#t{
, u; P& u; ~5 @, L5 ~3 l" ~+ ?/ m#t#t/* USER CODE END WHILE */
0 d: L3 p' l* a, m9 G3 T- V2 F#t#tHAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);
7 K0 D; r' Y- L+ s( l' S#t#tHAL_Delay(2000);  b6 q9 x3 J+ B; t9 w
[#if USB_HOST?? && !FREERTOS??]2 n) o: r3 j7 Q" T4 R
#t#tMX_USB_HOST_Process();
) h! D; G" B, }0 R[/#if]
5 j9 M( s" |! h# g$ k#n
, b9 W4 c* g1 u! S; t[#list voids as void]3 G6 M' G0 S  h' N- ]
[#if void.functionName?? && void.functionName?contains("Process") && !void.isNotGenerated && !FREERTOS??]
8 l3 C, i8 x$ n) K$ K#t${void.functionName}();( K) ]$ e9 e" a# Y" W4 @
[/#if]
0 X9 E/ }. p7 {7 ~! g5 C! E& T[/#list]
$ J" j. G9 e! A* I2 k$ b#t#t/* USER CODE BEGIN 3 */, K2 C7 c4 p6 j' `6 d3 @: o
#t}: P; v4 x, s$ x7 o
#t/* USER CODE END 3 */
" G7 q+ M2 _* W[/#if]
9 L4 {1 T4 Q9 @" n) z# P7 I4 W: D# R6 B! E# T# y
2 K' V* X) R' P5 t* h5 \$ H5 y
添加语句://前提你的板子上有LD2并且config.ioc里面添加了LD2的宏修改,基本上STM32 NUCLEO板子都会有LD2
0 s9 q2 m; @  w% m4 N#t#tHAL_GPIO_TogglePin(LD2_GPIO_Port, LD2_Pin);  * X, e- e. U* d
#t#tHAL_Delay(2000);3 i: i( e, k: J. @
这样我们每次生成工程的时候,就不需要再点LED灯了,CUBEMX已经帮忙弄好了。不用每次复制粘贴了+ f5 g2 Z! h* u% b, R$ n) x) R

( R' E: {3 j! U6 z
) v5 H( d0 x- ~; ]" u/ _0 y: t三、 cubemx的插件有很多:3 e8 j- b8 Q2 c; k# \' I! J
虽然软件上写着只有那么一点点:# U9 J% u. V- X. j2 R
6.png
8 d% W+ F0 f3 j但是我去官网搜了一下:
7 f7 i" V' ^5 ^' Jhttp://www.st.com/content/st_com/zh/products/ecosystems/stm32-open-development-environment/stm32cube-expansion-software.html#products6 n/ J$ [: ^# u3 X6 {* @+ ~

, b5 Z1 J9 L: v! L其实还设有很多pack包的
/ n  Q+ I/ H& G9 t8 h当然有些也不是免费的。
4 O- w& @( ?; {5 @ 7.png
( _# q; {# `% }: g2 j# u·; P, D1 q' B. e$ s7 m1 P3 d' u
下载的这些包都在下面的文件夹中,这个是安装的时候修改的。) N4 O) k7 @, S1 A( k
8.png
( y$ I# s' S& f5 F: H+ N
# E* k- H5 K# N. Z- O- c' X四、 CUBEMX教程
/ `( j3 f2 @5 Y' g& @4 \+ q这边说的教程不是普通的教程,当然你要先学会科学上网,这边我就不说了,只是给大伙看看。; y8 z4 [9 j: a2 v
是不是以前自己以为右上角的按钮都是分享的按钮?我偶尔点进去看了看,发现新大陆。9 {# R. q( o5 m0 l; K
9.png % I, O# ^2 j. {& _2 [) _, w
网址:2 x7 q+ h4 o$ G$ _; A- {
http://www.youtube.com/user/STonlineMedia/videos! U6 a6 O$ n  j
http://community.st.com/s/& @- ^. ?' l# a  S
http://twitter.com/st_world
2 _, X. V2 c4 K- U: k! y6 Z是不是感觉发现新大陆? 11.png
0 r( V( L/ t+ O1 x* R

) ^4 N9 ?! e- x" {2 e; p/ \6 J 10.png ! y) J7 w# I5 g4 S4 z0 M  E# k9 \& v

6 g0 Z5 n% Y: `这边你有任何问题都可以和其他人交流。! }- `6 G9 `5 z8 Q3 `$ [. n6 R9 c
got到新技能的人,麻烦点个下面的“支持”小按钮,或者留言继续相互交流。 B43_Nucleo_NUCLEO-L496ZG_STM32L496ZG_Board_AllConfig.zip (2.84 KB, 下载次数: 4)

评分

参与人数 2 ST金币 +52 收起 理由
Armink + 2 很给力!
STMCU + 50 赞一个!

查看全部评分

赞 12 收藏 1 评论5 发布时间:2020-3-8 18:17

举报

5个回答
飞火-348876 回答时间:2020-3-10 21:18:27
好文章啊,顶起来。新鲜的技能。。
网络孤客 回答时间:2020-3-11 09:09:55
慢慢学习,请教,能把自己的板子加入库里
飞跃-344154 回答时间:2020-3-11 11:36:00
ldptest 发表于 2020-3-11 09:09
' k. [9 R9 i7 n慢慢学习,请教,能把自己的板子加入库里
; Q: x" V) R  d! J: S$ N6 {/ a/ ]4 }
可以,找同一款CPU的NUCLEO板子,替换IOC就可以了。官方的做法还没摸清楚。
A670521546 回答时间:2020-3-12 17:56:25
这些技巧真心赞,找块板子玩玩,谢谢楼主的分享
Armink 回答时间:2020-3-13 16:50:50
使用默认的配置新建工程 ,这个以前还真没注意到,多谢分享~~

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版