您好!欢迎光临鹏海达官方网站!
新闻动态
产品展示
联系我们

深圳市鹏海达电子有限公司

地   址:深圳市福田区广博现代之窗A座10B办公、10C办公、10I仓库

联系人:刘淑桐

电   话:15173489011

微   信:lstjy123456

新闻详情 当前位置:首页 > 行业资讯 > 嵌入式27——库开发与寄存器开发的关系

嵌入式27——库开发与寄存器开发的关系
 日期:2022/3/2 4:56:00 

库开发与寄存器开发的关系

其实一句话就可以概括:固件库就是函数的,固件库函数的作用是向下负责与寄存器直接打道,向上提供用户函数调用的接口(API)。

在 51 的开发中常常的作法是直接操作寄存器,比如要控制某些 IO 口的状态,直接操作寄存器:

P0=0x11;

而在 STM32 的开发中,同样可以操作寄存器:

GPIOC->BSRR=0x00000001; //这里是针对 STM32L4 系列

这种方法当然可以,但是这种方法的劣势是需要去掌握每个寄存器的用法,才能正确使用 STM32,而对于 STM32 这种级别的 MCU,数百个寄存器记起来又是谈何容易。于是 ST(意法半导体)推出了官方固件库,固件库将这些寄存器底层操作 都封装起来,提供一整套接口(API)供开发者调用,大多数场合下,你不需要去知道操作的是哪个寄存器,你只需要知道调用哪些函数即可。

比如控制 BSRRL 寄存器实现电平控制,官方 HAL 库封装了一个函数:

void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState) { if(PinState != GPIO_PIN_RESET) { GPIOx->BSRR = GPIO_Pin; } else { GPIOx->BSRR = (uint32_t)GPIO_Pin << 16; } }

这个时候你不需要再直接去操作BSRRL寄存器了 , 只需要知道怎么使用HAL_GPIO_WritePin 这个函数就可以了。

在对外设的工作原理 有一定的了解之后,再去看固件库函数,基本上函数名字能告诉你这个函数的能是什么,该怎么使用,这样会使得开发方便很多。

任何处理器,不管它有多么的高级,归根结底都是要对处理器的寄存器进行操作。但是固件库不是万能的,您如果想要把 STM32 学透,光读 STM32 固件库是远远不够的。你还是要了解一下 STM32 的原理, 了解 STM32 各个外设的运行机制。只有了解了这些原理,你在进行固件库开发过程中才可能得心应手游刃有余。只有了解原理,才能做到“知其然知其所以然”,所以在学习库函数的同时,要了解一下寄存器大致配置过程。

相关标签: