- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
自己写库—构建库函数雏形
零死角玩转STM32—M3 系列
第1章 自己写库—构建库函数雏形
本章参考资料: 《STM32 中文参考手册》GPIO 章节和RCC 章节。
虽然我们上面用寄存器点亮了LED ,乍看一下好像代码也很简单,但是我们别侥幸以
后就可以一直用寄存器开发。在用寄存器点亮LED 的时候,我们会发现STM32 的寄存器
都是32 位的,每次配置的时候都要对照着《STM32 中文参考手册》中寄存器的说明,然
后根据说明对每个控制的寄存器位写入特定参数,因此在配置的时候非常容易出错,而且
代码还很不好理解,不便于维护。所以学习STM32 最好的方法是用固件库,然后在固件
库的基础上了解底层,学习寄存器。
1.1 什么是STM32 函数库
以上所说的固件库是指“STM32 标准函数库”,它是由ST 公司针对STM32 提供的函
数接口,即API (Application Program Interface) ,开发者可调用这些函数接口来配置STM32
的寄存器,使开发人员得以脱离最底层的寄存器操作,有开发快速,易于阅读,维护成本
低等优点。
当我们调用库API 的时候不需要挖空心思去了解库底层的寄存器操作,就像当年我们
刚开始学习C 语言的时候,用prinft() 函数时只是学习它的使用格式,并没有去研究它的源
码实现,但需要深入研究的时候,经过千锤百炼的库源码就是最佳学习范例。
实际上,库是架设在寄存器与用户驱动层之间的代码,向下处理与寄存器直接相关的
配置,向上为用户提供配置寄存器的接口。库开发方式与直接配置寄存器方式的区别见图
1-1。
第1 页共18
零死角玩转STM32—M3 系列
驱动层
调用库接口
驱动层
库函数层
直接配置寄存器
以函数、宏封装配置
寄存器的操作
特殊寄存器层
特殊寄存器层
库开发方式 直接配置寄存器方式
图 1-1 开发方式对比图
1.2 为什么采用库来开发及学习?
在以前 8 位机时代的程序开发中,一般直接配置芯片的寄存器,控制芯片的工作方式,
如中断,定时器等。配置的时候,常常要查阅寄存器表,看用到哪些配置位,为了配置某
功能,该置1 还是置0 。这些都是很琐碎的、机械的工作,因为8 位机的软件相对来说较
简单,而且资源很有限,所以可以直接配置寄存器的方式来开发。
对于STM32,因为外设资源丰富,带来的必然是寄存器的数量和复杂度的增加,这时
直接配置寄存器方式的缺陷就突显出来了:
(1) 开发速度慢
(2) 程序可读性差
(3) 维护复杂
这些缺陷直接影响了开发效率,程序维护成本,交流成本。库开发方式则正好弥补了
这些缺陷。
而坚持采用直接配置寄存器的方式开发的程序员,会列举以下原因:
(1) 具体参数更直观
(2) 程序运行占用资源少
相对于库开发的方式,直接配置寄存器方式生成的代码量的确会少一点,但因为
STM32 有充足的资源,权衡库的优势与不足,绝大部分时候,我们愿意牺牲一点CPU 资
源,选择库开发。一般只有在对代码运行时间要求极苛刻的地方,才用直接配置寄存器的
方式代替,如频繁调用的中断服务函数。
对于库开发与直接配置寄存器的方式,就好比编程是用汇编好还是用C 好一样。在
STM32F1 系列刚推出函数库时引起程序员的激烈争论,但是,随着ST 库的完善与大家对
库的了解,更多的程序员选择了库开发。现在STM32F1 系列和STM32F4 系列各有一套自
您可能关注的文档
- 股权集中与第二类代理问题研究述评.pdf
- 股权质押与大股东双重择时动机.pdf
- 股票质押回购及其他融资方式介绍.pdf
- 股票投资报告,北师大.pdf
- 股票期权独孤九剑:一、拔剑式.pdf
- 股票业务基础知识.pdf
- 股市复杂性研究若干题.pdf
- 肥料重金属含量状况及施肥对土壤和作物重金属富集的影响.pdf
- 肥料产业发展与展望.pdf
- 肺病科中医诊疗方案(三批合辑).pdf
- 人教版九年级英语全一册单元速记•巧练Unit13【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit9【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit11【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit14【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit8【速记清单】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit4【单元测试·提升卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit13【单元测试·基础卷】(原卷版+解析).docx
- 人教版九年级英语全一册单元速记•巧练Unit7【速记清单】(原卷版+解析).docx
- 苏教版五年级上册数学分层作业设计 2.2 三角形的面积(附答案).docx
- 人教版九年级英语全一册单元速记•巧练Unit12【单元测试·基础卷】(原卷版+解析).docx
文档评论(0)