历史上的今天
今天是:2025年06月06日(星期五)
2020年06月06日 | STM32库函数和寄存器的区别
2020-06-06 来源:eefocus
库函数版和寄存器版的系统时钟设置的区别:
**1.**库函数的目的是让用户应用的,而寄存器更加原始
库函数的系统时钟是默认设置的,且放在启动文件里。而寄存器版的系统时钟是Stm32_Clock_Init(336,8,2,7);.
**2.**库函数的快捷的,但不是每个芯片都有的;寄存器是复杂的,但是每个芯片厂商都有提供系统的寄存器设置信息。
分别打开库函数和寄存器版的I/O口设置:
库函数:
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);gotoh后先通过assert_param();函数检查格式是否正确同时只要是ENABLE,RCC->AHB1ENR |= RCC_AHB1Periph;接着给对应的寄存器赋值。
寄存器:
RCC->AHB1ENR|=1<<0; //使能PORTA口时钟 (就一句赋值语句就行了)。
从这里也可以看出寄存器的第二个区别是(打个比方,做为嵌入式开发我们经常会用到电子元器件,这是我们有两个选择一是在淘宝直接买一个模块,二是在在淘宝买这个模块的对应的元器件然后自己焊接)这个就可以看出通过寄存器的设置确实有利于理解对应的工作原理,而且对于简单的应用来说,确实很快捷。但是随着你做的东西越来越多,越来越复杂,就无暇顾及每一个功能模块的具体运行情况,这时一般的话会在网上直接买对应的模块,然后利用串口,iic,spi等通信方式进行获取对应的数据即可。这时,我在想学习寄存器目的就是为了更快理解一个新的芯片。
3.在程序上的区别(以正点原子的程序为分析对象)
a.下图是STM32正点原子的led的初始化程序,直到今天我才发现有中的是正点原子公司写的。里面的结构体,使能时钟函数,I/O设置位等函数都是ST公司写的。调用是st的固件库。


上图的stm32f4xx_gpio.h等头文件其实就是库函数的来源。正点原子的“库函数”是实际应用的函数,是放在HARDWARE文件夹里。
**b.**下面的图是寄存器板的led初始化函数,这些函数是正点原子写的,可谓是需要什么就写什么函数,大大的提高了程序的运行效率。(只引用stm32f4xx_.h)

上一篇:浅谈你不知道的STM32知识
下一篇:Stm32-输入捕获
史海拾趣
|
引言 设置复位标志位便于区分不同原因引发的复位,作为一种新技术被越来越多的新型单片机所采纳。例如Philips公司的P87LPC700和P89LPC900系列、Freescale公司(原Motorola半导体部)的MC68HC05系列和MC68HC08系 ...… 查看全部问答> |
|
各位高手, 我用SPI方式跟SD卡通信时,能正常初始化,往SD卡发送1个块的数据时,能正常返回0x05,但读数据时,就是无法返回0xFE,请问大概是什么问题? 谢谢!… 查看全部问答> |
|
在向Sql CE数据库插入数据时,插入到27万条时,就不行了,有哪位朋友做过这方面的测试或是应用,请告知一声。 现在怀疑有两个可能产生该问题的原因: 第一个:Sql CE数据库表的上限就是那么多(27万) ...… 查看全部问答> |
|
德州仪器(TI)宣布推出业界首款超低功耗铁电随机存取存储器(FRAM)16位微控制器,从而宣告可靠数据录入和射频(RF)通信能力进入了一个新时代。 新型 MSP430FR57xx FRAM 系列的面市进一步彰显了 TI 在嵌入式处理技术领域的领先地位,与基于闪存和 ...… 查看全部问答> |
|
嵌入式处理器的技术指标 (1)功能:处理器的种类、外部接口的种类和数量,集成的多需要外围扩展的就少,可靠性高成本低。根据系统的需要尽量选择集成所需接口种类和数量的处理器。 (2)字长:参与运算的数的基本位数,决定于寄存器、 ...… 查看全部问答> |
|
SMU、TSP™、TSPLink如何加速2600系列数字源表? 吉时利公司的最新高度源-测量单元(SMU)[1]、嵌入式测试脚本处理器(TSP™)以及TSPLink总线为2600系列数字源表提供满足最苛刻吞吐量要求所需的速度。 测试脚本处理器是一种可扩展的嵌入式计算机。TSP-Link是内部设备通信与触发同步总线—— ...… 查看全部问答> |




