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

STM32开发利器:STM32CubeMX

[复制链接]
STMCU小助手 发布时间:2022-10-31 23:26
为大家介绍ST公司推出的STM32CubeMX开发工具,当成下周更新STM32 10个项目工程的预备篇,同时FPGA FPGA 20个例程篇:8.SD卡任意地址的读写,代码部分已经编写完毕,对应博客正在整理中,如图1所示即为STM32CubeMX的图标。
) A. i. e* ]! m- ?6 ^& M- K4 s1 J9 \* Z. q2 ]9 I" R5 U) a0 S
d75538bf2dcc442fb333aafa4eece828.png ( L$ B( ^$ w0 H7 s1 q; k
3 ?4 d; m3 W5 O0 }! D1 f% x" V1 N
图1 STM32CubeMX图标
; ^. X7 V$ w2 E' ]" M7 W5 m) k: |& q' X0 X" P
       在介绍STM32CubeMX之前,我们需要知道HAL库这个概念,实际在早些年大概2018年以前吧,大家做STM32工程开发,用的最多的是标准库,标准库自出道超过 10 年以来受广大使用者推崇,就算现在2022年还有一部分工程师、公司仍在继续使用。不过现实情况很残酷,ST 官方已经不再更新 STM32 标准固件库,比如STM32F1系列标准固件库在 2013 年后没有正式发布更新版本,类似于之前大家在开发FPGA时都用XILINX推出的ISE环境,但ISE在2014年后就没有更新版本,XILINX把所有的精力都放在了VIVADO环境。伴随HAL库的兴起,ST推出了STM32CubeMX开发工具,简单地说这个工具可以将STM32芯片的底层配置通过图形化界面配置,这样就极大限度内减少了工程师的工作量,这就好比做FPGA设计的时候,使用了GVIM计数器和状态机模板;在做PCB设计的时候,使用了skill等快捷键方便拉线、打孔、铺铜等常规操作,让工程师在面对快速的项目开发和迭代中,能把更多精力放在逻辑层、应用层开发上,因为手工配置底层引脚,中断类型等,人都会存在大意的时候,出错单步仿真也不易排查出问题。$ _4 c* ]+ t# B) D2 m9 M# R/ Q

7 Z  j8 x& T: Y, G6 r       STM32CubeMX 可以直观的选择 STM32 微控制器、配置微控制器、自动处理引脚冲突、动态设置确定时钟树、动态确定参数设置的外围和中间件模式和初始化。STM32CubeMX 生成的代码可以在 KEIL、IAR、GCC 等编程软件上面使用。所以简单地说STM32CubeMX 本身就是一个工具软件,我们只要在上面通过图形化配置就可以生成STM32 功能代码工程,这个代码工程已经包括了必要的外设初始化程序,这样节省我们的工作量,把工作重点放在项目逻辑层、应用层的实现。
! A! w0 A. e$ _8 \. a$ K- S: T0 {# ~3 \; _5 x. J
      HAL 的全称是:Hardware Abstraction Layer (硬件抽象层),HAL 位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化。HAL 库是一个由 ST公司基于硬件抽象层而设计的软件函数包,它由程序、数据结构、宏等组成,包括了微控制器所有外设的性能特征。此外HAL函数库包括每一个外设的驱动描述和应用实例,为开发者访问底层硬件提供了一个中间 API,所以说通过使用 HAL 库,工程师不需要花过多精力去深入掌握底层硬件细节,就可以应用STM32的每个外设,实现快速二次开发的目的。7 r" H5 [+ c- S7 r, N
0 m& p0 Q8 f& }& a
      如图2所示,是笔者之前转产项目中的STM32CubeMX配置,使用了STM32CubeMX工具对一颗STM32F429IGT6芯片进行硬件初始化配置,该芯片驱动了一颗SDRAM,外挂了一颗EEPROM和一颗FLASH,还有其他外设例如蜂鸣器、编码器、按键、电容触摸屏,芯片内部有定时器中断刷新屏幕,有三个UART DMA空闲中断,也上了Freertos操作系统、Emwin人机界面、FATS32 U盘识别,如果这些底层都手工配置的话,平心而论是个非常烦琐和浩大的工程,且很容易出错,而步入工作岗位以后,现实是私企老板、产品经理、项目负责人等各路人马会不断催促项目进度,这时也就体现了STM32CubeMX的价值,在这篇博客最后,笔者也附带了STM32CubeMX学习教程和STM32CubeMX安装包的下载链接,供大家学习交流。# w" j* A+ H- N6 D1 [3 ~
" B, V6 x+ C7 k9 n' ?
183ea0d3807743c0aab082797bf17293.png
$ G3 {# R2 v) |: g5 }. v
' {6 J: _2 T/ c 图2 STM32CubeMX配置STM32F429IGT6芯片
8 T8 A/ G5 ^  x+ ~  X$ f  a( T3 \+ g& X; @9 Q1 [  e& f) J% {
      谈到STM32CubeMX配置细枝末节的地方有很多,很难在一篇博客里逐一列举出来,只能说工作用到哪里再去对照着研究哪里即可,这里举个简单地例子我们用STM32CubeMX配置野火开发板上的STM32F103VET6芯片上的串口,如图3所示,我们先选择STM32F103VET6芯片再单击Start Project选项。* \- j- r9 }6 P/ f3 d4 A8 Q4 V& v

, `3 |6 A' C4 B6 t a9eb9bcd989b49beacf166f0ec278c64.png . T! w" W$ K: U

( U9 @/ i' Z7 g) m* C- C9 @' X  图3 STM32CubeMX环境下选择STM32F103VET6芯片; _% A0 U! L) ^/ l

, ?7 d, L# ]4 x% W6 v9 c         如图4和图5所示,我们在STM32CubeMX环境下配置好RCC时钟,这里由一个外部8Mhz的时钟通过芯片内部倍频产生一个72Mhz的主频时钟,直接配置UART1的引脚和115200的波特率,在图6下选择生成可以用KEIL 5打开的工程文件,最后如图7所示在KEIL5下打开STM32CubeMX环境下生成的底层配置工程,再进去下一步的二次开发。
/ \3 [) {2 ~1 ~! O
' N+ G/ [+ t# Y7 C6 R dd1dcb96cc7240bfbe988ab9d86e1035.png
. Y8 A/ F. b# {/ v) f$ I8 t3 W4 ?# L& H- |# Q& J$ {
1612b7e3826a417883be954a174d9cd6.png
* A0 b8 S& W! m1 I! [2 U! n
3 s8 M- r8 t* K$ D图4 STM32CubeMX环境下配置RCC时钟" g1 ~) p  [( e( e! K% ?

$ x. C( l7 S' J: o$ V7 I6 i% s; T0 y) M. C' c2 E! x- E

, c( j, q' }- j& x5 F- K% m    图5 STM32CubeMX环境下配置UART1串口
5 K1 c  G" O: u& N) L# |
; Q) E4 p+ \& ]. ^! \9 { 49a134510c6a4d8ba8e075e26356747c.png
2 c9 S: ?3 o' `& d+ j4 S1 l/ Y/ k6 D0 @0 h
: \( ?0 R! U' F 图6 STM32CubeMX环境下生成KEIL工程  d( W. i; x7 C9 X& o1 A3 ?
# o% T! _4 \/ ]4 ?, B
8a411ebee83c4b41ad2ae2af527ad3d9.png + b/ n1 V2 c5 n$ {: ^2 F
# u9 d- |- T3 Q4 E) d
  图7 KEIL5环境下打开STM32CubeMX生成的底层配置代码( n4 s8 }! K) |. W& r2 A  g8 z) d
————————————————/ x: G3 J3 W3 @$ [* S4 x
版权声明:青青豌豆$ y" g6 C: g  |6 K
. y0 S! |& t2 D' Q6 T' y7 R% }
03e2fbeb19e54cd78e085f38c7cbb32a.png
赞 收藏 评论0 发布时间:2022-10-31 23:26

举报

0个回答

所属标签

相似技术帖

官网相关资源

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