学习Stm32使用固件库和写寄存器有什么区别

 我来答
惠企百科
2022-12-11 · 百度认证:北京惠企网络技术有限公司官方账号
惠企百科
惠企百科网是一家科普类综合网站,关注热门中文知识,集聚互联网精华中文知识,本着自由开放、分享价值的基本原则,向广大网友提供专业的中文知识平台。
向TA提问
展开全部

两个使用的角度不同

使用固件库,目前比较多的例程是使用固件库编写的。官方的例子也都采用固件库方式。特点就是简单,易于理解,资料多。如果你没有CortexM系列内核的开发基础,建议从固件库开始玩起。等有一定基础,或是特别需要时再用寄存器。

使用寄存器,想要深入理解CortexM3内核或是需要为了获得更好的可移植性,学习寄存器编程会比较有帮助。但是从专业的角度上看,寄存器更贴近底层,对外设的工作原理和运行机理会有更深的理解。

扩展资料:

STM32标准外设库之前的版本也称固件函数库或简称固件库,是一个固件函数包,它由程序、数据结构和宏组成,包括了微控制器所有外设的性能特征。

寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。

在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,寄存器有累加器(ACC)。

参考资料:百度百科-学习stm32使用固件库与写寄存器

星Lockyer
2023-03-27 · TA获得超过278个赞
知道答主
回答量:137
采纳率:77%
帮助的人:5.7万
展开全部
固件库其实是封装好寄存器操作的一系列函数的集合。
例如,串口由很多寄存器配置和启用。固件库把它封装成简单的函数调用,参数为一个c的结构,把你要初始化的波特率和其他属性填好,就可以了。你不用理会波特率如何计算和设置寄存器,不用理会要开启哪些中断寄存器和时钟。对你来说,硬件寄存器基本透明了,你只是高级层面操作串口的属性特征。这样,你的代码就基本在任何芯片上都一致了。而每一个MCU厂对自己寄存器操作进行函数封装。大大方便了在不同芯片中升级和移植。
所以,固件库其实就是最底层的寄存器操作的封装,你可以理解为硬件驱动库。让由几个甚至十几个寄存器操作的模块使用变得非常简单,也许两个函数调用就可以使用了,而不比阅读厚厚的寄存器手册。
所以固件库和寄存器最终操作是没有区别的,但固件库会加入一些逻辑,像为了在多任务系统中更好的防止模块访问的冲突的互锁变量,有时候使用不当或者没处理好会产生模块锁定无法使用,你调用不返回,表现为卡死或者没数据读出来。固件库复杂还扩展不少功能,像电机控制等等。当然,因为固件库封装,会加入很多函数调用和变量传递,速度要比直接寄存器满慢十几倍甚至几十倍。你可以试一下一个长的for循环,中间控制IO用寄存器和函数,你用示波器测试输出翻转的时间。就会看到效率不一样了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式