历史上的今天
返回首页

历史上的今天

今天是:2024年12月27日(星期五)

正在发生

2021年12月27日 | 单片机快速将库函数版代码移植为寄存器代码方法

2021-12-27 来源:eefocus

  现在单片机开发越来越多用的是库函数版本的,寄存器版本使用越来越少了。但是在有些项目中使用库函数会导致程序运行速度比较慢,没有直接操作寄存器运行起来速度快。所以在对时间要求比较严格的项目中,还是需要使用寄存器来开发。如果不能够找到寄存器相关示例代码的时候,开发起来还是比较困难的。今天就来总结一个快速将库函数移植为寄存器的方法,这个方式为通用方法,在任何单片机上都可以使用。


  现在就用一个STM8单片机库函数的工程来举例。

在这里插入图片描述
在这里插入图片描述

  这个代码的主要功能就是使用定时器1的捕获功能来计算输入波形的频率。对于定时器的初始化使用的都是库函数,现在要将定时器初始化部分的库函数修改为寄存器。


  首先单步调试,进入初始化函数中。

在这里插入图片描述

  单步进步到这个函数内部。

在这里插入图片描述

  可以看到在这个函数中初始化了6个寄存器,将这6个寄存器分别添加到观察窗口中。

在这里插入图片描述

  在代码中是通过指针的方式去操作寄存器的,所以在将寄存器添加到观察窗口时要注意名字格式,需要将 TIM1->ARRH 修改为 TIM1_ARRH 格式。添加寄存器的时候,可以直接在观察窗口表达式的位置处单击鼠标,直接将寄存器的名字输入进去。

在这里插入图片描述

  然后将寄存器值显示的方式修改为 16进制显示。在观察窗口中寄存器上单击鼠标右键,选择16进制显示。

在这里插入图片描述

  按照同样的方法将其他寄存器全部添加进去。

在这里插入图片描述

  此时寄存器的值都为默认值,然后单步执行程序。观察寄存器值的变化。

在这里插入图片描述

  当前函数执行完成之后,所有的寄存器值就是库函数设置之后的值。将这些寄存器的值记录下来。

在这里插入图片描述

  相当于TIM1_TimeBaseInit()函数设置的就是这几个寄存器,然后设置后的寄存器值就是变量观察窗口中的值。按照同样的方法,依次单步调试,记录下所有初始化寄存器的值。

在这里插入图片描述

  当初始化代码中的寄存器值全部记录完成之后,这时候就可以用寄存器直接替换库函数了。

在这里插入图片描述

  替换完成后运行程序,观察程序运行结果是否争正确。通过观察串口输出的结果证明程序执行是正确的。

在这里插入图片描述

  这样通过单步调试的方法,直接观察寄存器的值,就能快速的搞清楚库函数代码到底是设置了哪些寄存器,设置后的值是多少。当设置的寄存器值知道之后,然后通过查阅单片机资料,对比寄存器中的各个位的含义,就明白了使用哪些功能要设置哪些寄存器对应的哪些位。

在这里插入图片描述

  当看完寄存器资料后,明白了每个寄存器的作用,这时候就可以将寄存器的初始化优化一下,让代码看起来更清晰明了。

在这里插入图片描述

  将寄存器的设置修改为位操作模式,这样直接通过代码就可以很方法的看出来操作的是哪个寄存器的哪些位。 修改完成后重新编译下载,验证一下修改之后的代码功能是否正常。


  通过这种方法就能快速的了解到寄存器的使用,否则只是看单片机寄存器的相关手册的话,没有重点,而且有些手册非常大,看了后面忘了前面,效率非常低。同时在看的过程中也搞不清楚,有些寄存器到底要在哪个功能中去设置。而通过单步调试的方法,直接观察库函数中设置的寄存器,就能快速的了解寄存器的作用,可以做到用什么功能时再去看对应寄存器的资料,避免了单纯看资料浪费时间过程,还提高了学习效率。

推荐阅读

史海拾趣

ABOV(现代单片机)公司的发展小趣事

ABOV(现代单片机)是一家韩国的半导体公司,以下是该公司发展的五个相关故事:

  1. 公司成立和初期发展: ABOV公司成立于1997年,总部位于韩国首尔。公司专注于设计、制造和销售嵌入式系统解决方案,主要产品包括微控制器(MCU)和嵌入式闪存等。成立初期,ABOV致力于技术创新和产品研发,建立起一支技术精湛的研发团队。

  2. 技术创新和产品推出: ABOV在技术创新方面投入了大量资源,不断推出新产品和解决方案。公司的现代单片机产品以其高性能、低功耗和丰富的功能而闻名。ABOV还在嵌入式闪存技术方面取得了重大突破,推动了嵌入式系统的发展和普及。

  3. 市场拓展和国际合作: 随着产品技术的不断成熟和市场需求的增长,ABOV积极拓展国际市场,并与全球各地的客户建立了合作关系。公司的现代单片机产品被广泛应用于消费电子、汽车电子、工业控制等领域,赢得了客户的信赖和认可。

  4. 持续投入研发和创新: ABOV持续投入研发,并不断提升产品性能和功能。公司注重与客户的密切合作,根据客户需求进行定制化开发,为客户提供个性化的解决方案。ABOV还与学术机构和合作伙伴合作,共同推动技术创新和产业发展。

  5. 未来展望和发展方向: ABOV将继续致力于技术创新和产品升级,加强在嵌入式系统领域的研发和应用。公司将继续拓展国际市场,加强与客户和合作伙伴的合作,推动现代单片机技术的发展和普及,为全球的电子行业做出更大的贡献。

Harwin公司的发展小趣事

1994年,Harbour Industries成为Marmon集团的一员。Marmon集团是一个由多个业务部门组成的国际组织,涵盖了多个行业领域。加入Marmon后,Harbour获得了更多的资源和支持,加速了其全球化布局的步伐。公司不仅在北美和欧洲建立了多个生产基地和销售网络,还积极拓展亚洲市场。这一战略调整使得Harbour能够更好地服务全球客户,进一步提升其市场份额和品牌影响力。

Elekon Industries公司的发展小趣事

Elekon始终将品质放在首位。公司建立了完善的质量管理体系,从原材料采购到生产、检测、包装等各个环节都进行严格的质量控制。此外,Elekon还引进了先进的生产设备和技术,确保产品的质量和性能达到国际先进水平。这些举措使得Elekon的产品在市场上享有很高的声誉和口碑。

Burr-Brown公司的发展小趣事

2000年,Burr-Brown被著名的美国德州仪器公司(Texas Instruments)收购,成为其高性能模拟器件部门的一部分。这一收购为Burr-Brown提供了更强大的资源和支持,使其能够继续专注于模拟器件(如ADC、DAC等)的生产和创新。在德州仪器的引领下,Burr-Brown持续保持技术领先,为全球电子行业的发展做出了重要贡献。

这五个故事共同展现了Burr-Brown公司从创立到发展壮大的历程,以及其在电子行业中的卓越成就和持续创新的精神。通过不断适应市场变化和技术进步,Burr-Brown成功地在竞争激烈的电子行业中脱颖而出,成为一家备受尊敬的企业。

Fermionics Lasertech Inc公司的发展小趣事

随着公司规模的不断扩大,Fermionics Lasertech Inc公司开始寻求国际合作与全球布局。他们与国外的知名企业和研究机构建立了紧密的合作关系,共同开展技术研发和市场拓展。同时,公司还在海外设立了多个分支机构和办事处,以便更好地服务当地客户。这些举措不仅提升了公司的国际影响力,还为公司的长期发展提供了有力保障。

CYAN公司的发展小趣事

为了进一步拓展业务领域,CYAN在2015年收购了Polestar的量产车改装部门,获得了其在汽车电子领域的技术积累和市场资源。这次收购使CYAN能够更深入地了解汽车电子系统的需求,同时也为其带来了新的增长点。

问答坊 | AI 解惑

直 流 稳 压 电 源

  直 流 稳 压 电 源 …

查看全部问答>

出租车计价

本人要通过LPC935/936单片机做一个出租车计价器的设计,  主要有ISD1420语音芯片,AT24C64/128掉电存储,键盘显示等   现在基本的资料也不全    哪个有的帮下忙   谢谢…

查看全部问答>

PFC 电感是做什么用的?

PFC是功率因数校正的缩写,主要起到什么作用呢?…

查看全部问答>

usb驱动的问题!!!

我用的是xp系统,要装的vc++6.0和ntddk2000 能否在xp下开发usb驱动程序??????…

查看全部问答>

MSP430G2开发板学习(二):资料大发送

光找资料找了2天,初期因为网络问题不得力,因此资料没下载,现在网速好了,下载了很多资料,有一些指导文档和技术文档,都经过分类了。 这个是我初期下载的,可能对熟悉IAR的人有用。 原理的讲解 C语言运用讲解 G2231数据手册 白皮书1 白皮 ...…

查看全部问答>

【我给xilinx资源中心做贡献】三线SPI接口的VHDL源码

三线SPI接口的VHDL源码说明:该段代码为三线制SPI接口(CS,SDA,SCK)的源码,像一般的AD或者DA器件或者时钟芯片如DS1302采用的都是这种接口.本段代码是 我的的一个系统中的一个接口部分,功能比较简单,实现的功能是通过12个SCK完成一次数据的设定.经过 ...…

查看全部问答>

论坛管理员要求补充信息的邮件被QQ邮箱判为垃圾邮件啦

今天查看了一下QQ邮箱的垃圾邮件,发现了一个管理员要求补全信息的邮件,还好论坛的资料更新过已经收到板子啦,没收到的兄弟们注意查查垃圾邮件哦…

查看全部问答>

之前买了个beaglebone black,感觉有不少坑啊

XDS100仿真器去掉了,Jtag接口还要自己焊上去。习惯了裸板编程,这下可有点不知所措了。。。 听说c2000 launchpad 上的xds100 V2 可以仿真其他的器件,不知道各位有没有吃灰的,低价转让一个呗。。。。 [ 本帖最后由 airqj 于 2013-9-29 13:48 编 ...…

查看全部问答>