历史上的今天
今天是:2024年08月26日(星期一)
2018年08月26日 | STM32库函数和寄存器操作的思考
2018-08-26 来源:eefocus
从开始接触51单片机,到现在开始转型学习功能更加强大的STM32f407系列,
学习过程中引入了库函数及相应操作,当时赶着进度做点东西出来,有点不求甚解。现在返回来求索:相比于原来51单片机的寄存器,32系列的寄存器无论是个数还是实现功能时多个寄存器之间的调用配合,使用难度都高了不少,所以有了库函数和相应的固件库来减少难度。
先说一下固件库(这个我们最开始安装完MDK缺了它总是各种报错的东西)和相应库函数:
固件库这边时首先将各个设备所有寄存器的配置字进行预定义,然后封装在结构体或者枚举变量中,等到用户调用相关库函数时,会根据用户传入的参数从这些已经封装好的结构体或者枚举变量中取出与之对应的配置字,最后写入相应寄存器中完成对底层寄存器的配置
其次对比一下库函数操作和寄存器操作:
从上面简单介绍的运作方式不难看出,STM32的固件库函数对于相关程序开发人员来说可以说时相当便利了。只需要填写或者替换相应的参数就可以在完全不关心底层寄存器的前提下完成相关寄存器的配置,通用性和易用性可以说很不错了。但与此同时我们也应该注意到库函数的通用易用以及安全时付出了加大代码量的代价,而且这个过程所增加的逻辑判断代码也会造成一定的额外时间消耗,所以在对时间要求比较苛刻的应用场合需要评估库函数使用对程序运行时间造成的影响,或者说可以通过用寄存器操作替换相应的库函数操作来达到优化。
至于比较库函数和寄存器操作的代码部分,我就不贴了,网上蛮多的,分享也算是记录下这点库函数操作底层如何实现对寄存器操作或者说如何做寄存器封装的就好。
上一篇:STM32寄存器操作简单介绍
史海拾趣
|
本帖最后由 辛昕 于 2018-4-8 22:56 编辑 关于这个帖子,其实本来有挺多话说的。 不过,忽然想想,这个帖子最大的教训就是: “其实,错的事情就不用多解释了,多描述了,要不然,就会造成这种困扰”。 是的——错的方法有千千万,记住那么几 ...… 查看全部问答> |
|
请问WINCE下的摄像头驱动开发难吗?要用到什么知识?我目前只会C++,vc++只是有点了解而已,请问开发难度大吗? 如果开发的话用什么牌的摄像头比较好?或者网上有相关的程序更好。谢谢… 查看全部问答> |
|
本人做了块小板子,很细腻的乳白色塑料外壳,外观和DSP仿真器差不多。 有12个I/O口(DB25),可配置成8个I/O(TTL) + 4个A/D转换。 另外有两个3线串口(一个DB9),一个10M网口(RJ45),9-24V直流供电。 用料讲究,板上保险丝、整流二级管、I/O限流滤波等细 ...… 查看全部问答> |
|
boa服务器今天搞了,运行的时候老是提示unable to dup2 the error log: Bad file descriptor 尝试了更改文件权限,更改html文件名,虚拟机上/etc下的那个文件说是要复制开发板的/etc下面,但是复制过去的时候说什么只读文件不能更改啥 ...… 查看全部问答> |




