【2015-1-14】STM32学习之库开发好处

什么是库开发模式?

在学习51单片机的时候,我们一般都是通过直接配置寄存器来控制芯片的工作方式,如当我们使用定时器、中断等。配置的时候我们一般都需要查看芯片的数据手册,如需要需要把相应的寄存器的相应位配置成“0”或者“1”,这些都是非常机械和麻烦的事。因为51单片是8位的,寄存器也比较少,所以直接配置寄存器的方式还不算太麻烦。当我们学习STM32的时候,由于STM32是32位的,寄存器也是非常多的,假如我们还是使用直接配置寄存器的方式来进行开发的话,这是非常麻烦的,开发的效率也不高

STM32库是有ST公司开发的针对STM32的函数接口,即API,开发者可以调用这些函数从而配置相应的寄存器,这样可以使得开发人员远离底层寄存器的操作,有利于快速开发、易于阅读、同时也便于以后升级。

这种方式就像我们学习C语言一样,我们学习C语言使用printf()函数时,并没有关心printf()函数是如何完成字符串等输出的,我们只是记住printf()的使用格式。

实际上库是架设于寄存器与用户驱动层之间的代码,向下可以直接出来寄存器的相关配置,向上为用户提供配置寄存器的函数接口。下图直观的描述了库开发方式与寄存器开发方式

为什么采用库开发

对于STM32,因为外设资源丰富,带来的必然是寄存器的数量和复杂度的增加,这时直接配置寄存器方式的缺陷就突显出来了:

1)开始速度慢

(2)程序可读性差

这两个缺陷直接影响了开发效率、程序维护成本和交流成本。库开发方式则正好弥补了这两个缺陷。

而坚持采用直接配置寄存器方式开发的程序员,会列举以下原因:
(1)更直观。
(2)程序运行占用资源少。

初学STM32 的读者,普遍因为直接配置寄存器更加直观而选择寄存器方式开发,认为这样能够了解到是配置了哪些寄存器以及怎样配置寄存器。事实上,库函数的底层实现恰恰是直接配置寄存器方式的最佳例子,想深入了解芯片是如何工作的话,
只要追踪到库的最底层实现就能理解。ST的库严谨而优美,学习ST的库对C语言是很大的提高。

相对于库开发的方式,直接配置寄存器方式生成的代码量的确会少一点,但因为STM32 有充足的资源,权衡库的优势与不足,绝大部分时候我们愿意牺牲一点资源,选择库开发更划算。一般只有在对代码运行时间要求极其苛刻的地方,

才用直接配置寄存器的方式代替,如频繁调用的中断服务函数。

对于库开发与直接配置寄存器的方式,在STM32 刚推出时就引起程序员的激烈争论,但是,随着STM32 官方库的完善与大家对库的了解,更多的程序员选择了库开发的方式。

我们可以把库开发与寄存器开发的关系,理解为C语言与汇编的两种开发模式

一切计算机科学的问题都可以用分层来解决。”从汇编到C,从直接配置寄存器到使用库, 从裸机到系统,从操作系统到应用层软件,无不体现着这样的分层思想。开发的软件多了,跨越的软件层次多了,分层思想在软件开发上体现得淋漓尽致,分层使得
问题变得更简单,使得能够屏蔽底层实现方式的差异,使得软件开发变成简单的调用函数接口,而不用管它的实现,大大提高效率。

库的本质就是建立了一个新的软件抽象层,库的优点,其实就是分层的优点,库的缺点,也是软件分层带来的,而对于STM32 这样高性能的芯片,承受分层带来的痛苦相比获得的优势是值得的。







  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值