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

让菜鸟秒变stm32高手的STM32CubeMX

[复制链接]
aimejia 发布时间:2018-5-22 14:25
     菜鸟到高手,显得有些霸气哈,不过的确如此,官方带给我们一个比较实用的stm32的工具。这个工具就是STM32CubeMX,昨天玩freeRTOS的时候就提到过。说到freeRTOS,这里就多说两句。全局变量,在任务间相互访问的时候也是需要临界保护的,不然可能会出现奇怪的问题。不过我们可以关掉时间片调度,任务间可以访问全局变量而不用加保护(不等于菜鸟可以随意代码)。关闭了时间片调度,只有发生vTaskDelay的时候才会上下文切换。只要代码合理访问全局变量可以不加保护的。因此代码也不是可以任意书写的,关于freeRTOS的问题,多看看源码,一切都会有答案。源码较少,这里就不过多介绍。关闭时间片不是网上说的configUSE_TIME_SLICING这个宏定义,老鸟发现这个宏压根没用哈,嘿嘿。阅读源码可以找到相关宏配置。不过不建议关闭,时间片调度也可以让一个任务在执行一定时间后切换到其他就绪任务去执行。如果有freeRTOS相关问题,可以留言给我。废话说多了点哈,继续我们的STM32CubeMX。下面我们来讲讲这个工具的作用,讲完后,可以自己下载一个试试,挺简单不多介绍。/ ~: o3 ?" a5 k, J5 b
# a8 X( w" K- p
     到官网下载STM32CubeMX,并安装。% I! ^& b9 \# z/ e$ o7 E) M

2 k2 O% y2 E& x4 S4 ?     1:芯片选型
  |7 \$ ?3 t; g1 L8 ]' A8 u/ a7 @+ }, ]% C% \/ N& m
       打开STM32CubeMX,我们点击new project,我们就可以进行芯片选型,如果你下载了打开了这个工具,是不是很惊讶,stm32的所有产品型号都在里面,而且左下提供了资源勾选,比如你要以太网支持,勾选以太网选项,所有的支持以太网的stm32芯片才会被显示,旁边还有个max的栏目指示了芯片最多支持该功能的个数。空白的一般默认只有一个。9 P7 Z6 C% U2 {. x
2 Y8 A3 h  L( R3 X) _9 {5 g: `7 c/ ~
      我们选择其中一个的单片机后。右上部分给我们提供了完美的支持。! y) \( |+ y. k
* B1 v0 k$ h; W. ~1 i3 q& [% ~
      第一个选项提供了改cpu的特性,我们可以大概的了解选中的cpu资源。% v3 x& U9 \# O' {1 K  ]8 I6 g
) f3 r9 z/ q, ^7 i% K8 s$ n
1.png
+ F! t/ l5 U# T" l: }2 I  e  k! f
4 n. U6 U, A  H# V  V* l2 B       第二个选项提供该cpu框图,截图图片太大,这里就不截图了。9 C6 n9 Z& K/ z8 W! p

. E/ @) d+ p' Q1 ~       第三个选项提供了cpu文档,这个文档非常多也非常全面,基本不用在网上东找西找了,主要给硬件工程师用。
  F& r) O1 ~( A
" D, N8 h$ h2 P2 }, j8 ]8 X" s       第四个选项提供了cpu的相关设计资源,软件编程文档,给软件工程师用,非常全面,包括网上很少用到的文档资料,比如系统移植相关的底层资料(堆栈,指令,汇编)。
) Z. i7 l& C% J" G( f1 n1 ^  w- p$ U
# h! g+ C9 w8 u( {1 l2 n( v2 i       第五个选项提供了芯片购买途径,这个每个人自己选择吧。' o& }* F8 Z$ J

: g+ Q( Y; o0 H% {7 [9 _       第六个选项开始工程,芯片选好了,就可以开始工程。
' \2 g) B! A: H7 o/ e7 D# v" A6 C- H# e( H& K. ~
2:设定芯片
$ p, B& m& `& u* ]' c8 y/ r; p5 K  H
       芯片选好后,可以开始设定芯片。这就是软件工程师的好帮手呀。比如我要以太网功能,勾选上以太网即可,他就会自动分配出芯片对应的以太网接口。如下图:; S! z4 n& {' p3 l5 s, _5 x( }
5 x: k0 ?( t1 V3 N) H/ j
2.png 6 W2 L+ w9 `9 L/ j% W; S0 V$ t( R
2 s4 a; L+ u2 |
       上面我选了标准的MII接口。很多人可能就不理解,你勾了个以太网,咋报错了。老鸟告诉你为啥变红了,stm32有个复杂的功能就是io口复用,勾选mii后分配的io口和spi2以及iis口重合了,所以这个工具非常智能的提示了出来,非常神奇吧。告诉你他们不能使用了。还有些变黄了,说明他们可以选择性使用,真是太方便了,省去了查资料慢慢找io的痛苦。比如我们还要给它个外部时钟。我们勾选时钟即可,响应的时钟脚就会分配出来。) C5 R/ p. M% X( f  Q5 V
$ m% u" V8 W* }3 x8 Q$ ]
3.png 7 i5 q/ G' f0 P) a/ z- G) I2 z

# ]; v) d( B' E3 c/ R, z* I% _        如果要将某个脚设置成输入输出那就更简单了,鼠标点选对应的io口选择对应功能即可,比如我单击PA6,它的所有功能可以轻松选择:
" d  f$ m3 R# q1 Y" q2 F+ Y" Q" y6 b
4.png
' d# e" K  P0 S$ D8 R
" o# z: t6 ?" l* w+ ?4 Q7 _- l2 q       软件使用比较简单,不过多解释,一看就明白,设置完芯片功能后,我们就设定系统各项功能时钟。
7 Y7 l4 h; C3 I0 J7 `  m3 ]5 M
       选择时钟设置页面(clock configuration)时钟轻松设定,如下图,简单明了,不过多解释了:
. i$ x2 ^+ O2 |, {! C' j
6 {0 e9 w* \( B4 j1 w! Y- n* b 5.png 6 Y4 [* c9 G! `" ~7 j

9 l. Z1 v$ k* o! H  G/ a      时钟配置完成后,可以切换到configuration选项对功能进一步设定,里面参数都是常用的功能,设置较为简单。就不多举例了,比如网络功能里面设置mac地址等。
4 Y% z2 \: w' p+ }. q2 e* v% d; M  q2 w6 t0 t4 }, C' ^3 y8 M
6.png , L' }. T& J4 C' t( d- N
9 y0 x( w  B4 R2 l7 i2 n9 `( W
3:生产初始化代码, w9 E% A4 A3 X2 Q. z$ P$ }( ~
  E! o5 h' Y2 ~4 X
        经过上面的图形化设定,我们可以直接生产初始化代码。省去我们查阅资料慢慢配置的的环节,时间更多的利用在应用层设计。点击project下面的生成代码选项。输入工程名(根据你项目需要起名),这里我就随便输入一个名字。设定好相关参数。点击ok即可。顺便说下,这个工具是配带教程的,我这里只是告诉大家有这样个工具可以加速开发,具体设置参考官方教程。& v- O, f! B, V$ w2 X) Z% C
生成后打开文件夹内容如下:3 v& [; P& ]4 c0 o% u  b

, l9 X* k% {- [7 v$ f' M9 L 7.png
, E$ {+ W, p: s: K: R" a5 C' c
$ Q  t0 W7 D9 `* O2 x- y7 H8 y0 j       上图的inc 和src文件夹里面是生成的主要代码,其他几个文件夹里面的东西,大家可以根据自己需要选择。src文件夹文件如下:" P7 U$ U) W% ]% p7 \5 w8 t" r

- ?  ^- Z6 `" p# t# [ 8.png , W5 r5 V" S, ^5 ]. O- @
% ]- Z- Y. F7 o5 v! T) F  p
       打开熟悉的main.c,可以看到如下内容:% r5 w  i: n& Z6 n
9 Z, m) D3 C! Q$ E- j- A* V
9.png * @0 ]7 k& a  D- S
0 D, R, P2 l0 s) Y! n, ^
      初始化已经完成,直接写自己的功能即可了,然后就是加入到工程里面编辑,是不是非常简单。熟悉的话10来分钟一个工程构架就出来了。这样一来,stm32就变成最简单的单片机了,有木有,这个是基于库函数的,io操作直接可以查看库函数手册完成。这个工具主要是加速底层开发。轻松弄出自己的应用程序。对于新入手stm32来说,用这个库函数,让开发变得简单。减少定时器,can,ad,line等外围配置花去的时间,图像化配置,秒变高手。最主要的是功能直观可见,编辑性好,可导入工程编辑。修改配置也很简单。" `4 z2 a) Y! Y# y: F5 A. I- |

7 t$ G# o. P7 z2 `. j) ~) y
' F* i$ w$ c" F9 Y% G" h( J$ q' p) o9 T  |+ z1 ^
转载自山涧之水
& i+ P8 K; i" ]" d! b' q& G# T
  Q5 {5 F0 E3 O8 l1 _' S8 N# E" [: C2 `; H. @
赞 收藏 评论9 发布时间:2018-5-22 14:25

举报

9个回答
Glenxu 回答时间:2019-8-2 12:02:08
早知道有这神器何必认真学C!!!
+ y7 G; J. t2 N; p, Q  P, X7 D感谢楼主分享!
anywill 回答时间:2018-5-22 16:18:48
同意楼主观点,
GKoSon 回答时间:2018-5-22 19:22:49
深有同感
loveu99 回答时间:2018-5-23 09:11:09
初始化一下硬件就成为高手,可能有些夸大其词了。个人觉得高手是可以用最少的代码完成更多的功能、高手是有独见的算法、高手是有自己的编程思想。。。
jerryz2017 回答时间:2018-5-23 09:35:59
确实方便我们初学者学习了,感谢分享
rockze 回答时间:2018-5-23 09:49:35
高手有的是知识库和触觉。. E1 @7 P$ E3 P- U
知识库可以积累,但触觉是学不来的~~
g921002 回答时间:2018-5-23 10:54:57
想太多,那個只是讓你初始化速度快一點。簡單應用不用花太多時間。% F2 J, b/ g; E! {
出問題沒法定位問題的時候一樣讓你吃鱉。
a2768149 回答时间:2018-5-23 13:40:35
樓主說明的很讚! 大推
aimejia 回答时间:2018-5-23 13:57:06
a2768149 发表于 2018-5-23 13:40
; w: q) r6 U* ^+ H7 {& H樓主說明的很讚! 大推
6 ^( E9 }. M( s8 p0 g7 `9 E
谢谢哦~

所属标签

相似技术帖

官网相关资源

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