找回密码
 注册
关于网站域名变更的通知
查看: 572|回复: 3
打印 上一主题 下一主题

STM32的几种开发方式,你都知道吗?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-10-21 11:24 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
经常有人会问,你们STM32编程是用库函数 还是用寄存器的...会说库函数方便,容易,都用库函数...等等这样的问题,今天我们就来dis一下这几种编程方式,STM32编程目前常见的几种形式如下:
- h5 V* D( r8 A  M& ]7 G. s9 t1.使用标准外设库开发  ; Z; i+ Q6 W) ~' [0 ^1 V
2.使用寄存器开  
# E; @2 D4 b( F7 w% q1 |# j2 u3.使用CubeMax生成代码工具开发
- q( W! ^3 N6 ~3 C" e' w7 ?. h3 V4 r# v
下面我们先来说一下目前这几种形式的区别
' U5 q: @2 S5 @1 X; V" |3 d, U$ `0 R
& a. @" ^( ]: `% i) v$ V9 b. f1.使用标准外设库开发
$ b8 h* m% l# p0 I- CStm32标准外设库是stm32官方提供给用户的全系列芯片的外设驱动,官方把单片机外设的功能进行包装,提供给用户一个现成的接口函数,用户不用去管寄存器到底是如何操作的,直接调用接口函数,即可使用这些外设。在这个基础上你直接开发你的应用层程序即可。
+ Y6 S2 a( z) r( \. T9 j, d) P
+ X5 {8 V) {; H/ B8 b: n0 I) _这个驱动包名字一般是STM32Fxxx_StdPeriph_Lib_Vx.x.x有了它可以大大加速我们开发stm32。我们以STM32F10x_StdPeriph_Lib_V3.5.0驱动包为例,解压该zip文件,得到如下文件夹和文件% x5 B% F( m. r  f1 ?
7 ~. O" j8 e2 R
   _htmresc6 h8 \8 |; S+ d' q, `3 d
   Libraries
2 |# r' _$ o; ?4 [$ m, Q   Project
6 t. D  u! ^6 K# m   Utilities
* w: b: Q+ u$ v! G+ k   Release_Notes.html
; _, u# B: H6 U0 l, [  m   stm32f10x_stdperiph_lib_um.chm" |" h/ }2 n3 Z* u1 k; z! t

. i9 {6 e; k6 b! h其中Libraries包含库的源代码,Project包含stm32各个外设的使用范例和一个工程模板,Utilities是使用st公司评估板的例子,stm32f10x_stdperiph_lib_um.chm教我们怎么用标准外设库。: {5 u% {" ]4 H; j
; D' W" v" l1 k
2. 使用寄存器开发- l9 |" e! H: Z) H% ?+ I
使用寄存器开发,用户需要自己去操作底层外设寄存器,实现想要的外设功能,这个过程是需要自己对照手册,一行一行把代码敲出来的。! Y7 _% _; E. q$ H5 T2 ], P
- ^  r: v% D* U$ o8 ]
3. 使用CubeMax开发; F' e! _2 S6 X& v! u0 K
这个是官方提供的图形化的一键生产代码的工具,在这个IDE中我们只要根据你想要的功能,点点鼠标就可以生成你想要的功能,但是注意这个功能只是你想要的单片机外设配置功能,并不是你的应用程序功能,比如你想要以一个什么样的方式通讯,还是需要你自己去完善的。如下图是图形化开发的界面:
' J6 ^$ Q, c  _0 O2 z: v
2 b, N7 A- @* x& W2 v  D' h" l
上面我们以简洁明了的描述了三种编程方式的使用方式和编程过程,接下来我们来分析一下这三种方式的优缺点:
8 X2 k) B) }7 K7 U1 A3 G, J4 n- M2 p  I+ f8 f- M. z
第一种方法,官方提供了现成的驱动库,用户可以直接使用,使用起来方便,快捷,开发速度快,相对起来也容易上手一点,但是对底层的寄存器操作原理了解不深,只知其一,不知其二,出了问题,解决起来比较麻烦。且官方的驱动库为了容错性高一些等原因,会引入一些判断机制,相对复杂一些,但是实际上有的东西是我们用不到的,这就会造成代码执行效率会相对低一些。
" u8 p" X' K6 Q$ I( e3 G. G) K) \! j9 q* H5 z& I$ Q
第二种方法,虽然开发起来相对来说比较慢一些,比较繁琐一些,但是接触的都是真正的底层内容,出了问题,我们也能从源头来快速分析解决问题,而且写的代码中省去了一些不必要的判断过程,执行效率会相对高一些,代码看起来也会清爽一些。
- ]' q$ O' l6 _* z$ K, `" D, O$ G% [! d  C
第三种方法,使用IDE开发,这个相比较来讲入门是最快的,不用接触那些库函数接口,也不用去理会那些寄存器操作,只要在图形化的界面上勾选一些选项就可以了,这简直是懒人必备神器啊,但是话说回来,这种开发方式,基本上接触单片机底层内容为0%,只要写应用程序就可以了,出了问题更难解决。如果换了个平台,没有这种方便的IDE,怎么办呢?
# e, [3 L2 t2 s1 F! }# c, Q# k+ v8 b  A& p
上面我们全面分析了STM32的几种编程方式,我认为大家在学习STM32单片机时,应该先从寄存器入手,知其所以然,理解了原理,底层知识之后,可以再拐回头使用标准库,或者IDE,这样效果会更好,你认为呢?
! Q/ G0 r6 A, y, |& p
! l2 u* Q4 j& ^# {& M& U  u

, J3 \: o; g8 ]0 M% h: S- S" p6 S
  • TA的每日心情
    开心
    2022-12-27 15:07
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2021-10-21 13:07 | 只看该作者
    使用寄存器开发,操作底层外设寄存器,实现想要的外设功能

    该用户从未签到

    3#
    发表于 2021-10-21 16:19 | 只看该作者
    使用IDE开发,这个相比较来讲入门是最快的

    该用户从未签到

    4#
    发表于 2021-10-21 16:20 | 只看该作者
    官方把单片机外设的功能进行包装,提供给用户一个现成的接口函数,用户不用去管寄存器到底是如何操作的,直接调用接口函数,即可使用这些外设
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-6-16 15:45 , Processed in 0.093750 second(s), 26 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表