STM32库函数和寄存器的区别

库函数版和寄存器版的系统时钟设置的区别:
**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的固件库。STM32正点原子led等初始化程序
在这里插入图片描述
上图的stm32f4xx_gpio.h等头文件其实就是库函数的来源。正点原子的“库函数”是实际应用的函数,是放在HARDWARE文件夹里。

**b.**下面的图是寄存器板的led初始化函数,这些函数是正点原子写的,可谓是需要什么就写什么函数,大大的提高了程序的运行效率。(只引用stm32f4xx_.h)在这里插入图片描述在这里插入图片描述

  • 20
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值