|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
经常有人会问,你们STM32编程是用库函数 还是用寄存器的...会说库函数方便,容易,都用库函数...等等这样的问题,今天我们就来dis一下这几种编程方式,STM32编程目前常见的几种形式如下:, o. O7 q$ B2 Y% F: ~5 U8 M
1.使用标准外设库开发
- O4 o) b' d& m2 M2.使用寄存器开
6 q+ j. {+ t4 ^6 c2 c3.使用CubeMax生成代码工具开发' X4 g2 e! U$ H6 F9 Y9 t
! K* }* ^) |# k下面我们先来说一下目前这几种形式的区别:
, ]$ w) \/ q1 W( Q2 @* D' M) z: O; n. r; |3 q
1.使用标准外设库开发
/ V. X: l& t) H) m9 T* a+ kStm32标准外设库是stm32官方提供给用户的全系列芯片的外设驱动,官方把单片机外设的功能进行包装,提供给用户一个现成的接口函数,用户不用去管寄存器到底是如何操作的,直接调用接口函数,即可使用这些外设。在这个基础上你直接开发你的应用层程序即可。$ h$ S! @ ?6 \/ T3 x3 y) f. B$ R- c9 X
3 ~: }2 Q4 j s- H6 H3 s4 S这个驱动包名字一般是STM32Fxxx_StdPeriph_Lib_Vx.x.x有了它可以大大加速我们开发stm32。我们以STM32F10x_StdPeriph_Lib_V3.5.0驱动包为例,解压该zip文件,得到如下文件夹和文件% A7 i" u; k# h5 C, S
! u' H* m$ ~* ^) d9 q9 i2 @0 r! k6 u _htmresc
! }# p# E7 b$ n4 L8 B Libraries6 ^. D% ?5 C8 A( w4 c# @# C
Project
. F" c7 s5 J5 c5 v+ |7 l Utilities9 u, S ~# N% f! Y5 d
Release_Notes.html0 _9 T4 w8 r3 B* c" [. {3 f
stm32f10x_stdperiph_lib_um.chm
0 I2 |3 w" g3 j. ~4 K1 d3 Y
3 w6 ], _8 n4 i' g: y: M" }其中Libraries包含库的源代码,Project包含stm32各个外设的使用范例和一个工程模板,Utilities是使用st公司评估板的例子,stm32f10x_stdperiph_lib_um.chm教我们怎么用标准外设库。( d- V" J5 a! O
# W7 N8 S6 u! s7 W0 P
2. 使用寄存器开发2 V$ Q/ F2 {2 W$ \( O
使用寄存器开发,用户需要自己去操作底层外设寄存器,实现想要的外设功能,这个过程是需要自己对照手册,一行一行把代码敲出来的。
: l; c9 P6 t! q/ Y: S. y( g4 [. T' E0 \# L
3. 使用CubeMax开发$ Z0 q; q5 F0 ?
这个是官方提供的图形化的一键生产代码的工具,在这个IDE中我们只要根据你想要的功能,点点鼠标,就可以生成你想要的功能,但是注意这个功能只是你想要的单片机外设配置功能,并不是你的应用程序功能,比如你想要以一个什么样的方式通讯,还是需要你自己去完善的。如下图是图形化开发的界面:
2 @& v8 L! P1 v, e A( u/ z8 V# q. ~# u4 J% E
上面我们以简洁明了的描述了三种编程方式的使用方式和编程过程,接下来我们来分析一下这三种方式的优缺点:
' Z) G3 h& I* F9 h5 D0 q5 c9 d/ S
第一种方法,官方提供了现成的驱动库,用户可以直接使用,使用起来方便,快捷,开发速度快,相对起来也容易上手一点,但是对底层的寄存器操作原理了解不深,只知其一,不知其二,出了问题,解决起来比较麻烦。且官方的驱动库为了容错性高一些等原因,会引入一些判断机制,相对复杂一些,但是实际上有的东西是我们用不到的,这就会造成代码执行效率会相对低一些。" d4 v! g& x6 Z$ V) W3 e7 t: H/ e
0 T- ~* K7 A4 N4 R8 ?第二种方法,虽然开发起来相对来说比较慢一些,比较繁琐一些,但是接触的都是真正的底层内容,出了问题,我们也能从源头来快速分析解决问题,而且写的代码中省去了一些不必要的判断过程,执行效率会相对高一些,代码看起来也会清爽一些。3 W& n9 T( ?/ T" g) I* z5 b" c- k
& ~% a; K, K# l) p
第三种方法,使用IDE开发,这个相比较来讲入门是最快的,不用接触那些库函数接口,也不用去理会那些寄存器操作,只要在图形化的界面上勾选一些选项就可以了,这简直是懒人必备神器啊,但是话说回来,这种开发方式,基本上接触单片机底层内容为0%,只要写应用程序就可以了,出了问题更难解决。如果换了个平台,没有这种方便的IDE,怎么办呢?5 L: O/ H( J) A6 N
9 G" Z8 w$ K# K# x上面我们全面分析了STM32的几种编程方式,我认为大家在学习STM32单片机时,应该先从寄存器入手,知其所以然,理解了原理,底层知识之后,可以再拐回头使用标准库,或者IDE,这样效果会更好,你认为呢?
; e6 z3 W. r' K3 [* `7 N% h' [
$ S% p5 [6 t M- x0 C$ ^1 v# E3 t7 V2 A; w# H; h
|
|