在野火视频教学中,作者指出:对库的理解要从stm32f10x.h入手,因为这个库包罗万象,我们能够通过阅读,从中体会到库的美妙。
首先指出几个点,帮助大家梳理一下思路:
1、条件编译的作用是避免重复包含
2、寄存器说白了就是内存,对寄存器的操作就是对内存的操作
3、51单片机对寄存器是直接操作的,而stm32则是间接操作,如下图
明白了以上三点,我们就可以来揭开库的那层神秘的面纱了
因为我们对寄存器的操作,即对内存的操作,是间接的。是通过库函数来实现的,也就是说,我们伟大的库函数才是直接操作内存的舵手。我们要做的只是调用库函数接口就ok了,是不是很简单。
但是,我们还要明白,库函数的这个接口是怎么给出来的,中间都有哪些主要的内容。
简单来说,就3个内容:
第一,声明外设寄存器的结构体。说明一个外设的内存安装逻辑划分是怎么划分的,比方说,你有一亩田,一亩田哪些地方种什么粮食你要定好,比如一亩田左右分两半,左边种花生,右边种玉米。以后你有三亩田,也是这样的逻辑划分。
第二,内存映射,说白了就是起名字。村里给你分5亩田地,你根据需求分成了两份,一份2亩,一份3亩。2亩的你起个名字,“种给大儿子的”;3亩的你也起个名字,“种给小儿子”的。这个起名字,就是内存映射了。
第三,类型强制转换成结构体指针,目的是以后通过指针去访问内存的某一部分更加简单快捷。你将“种给大儿子的”这块地的地址取出来,比如说(东经115度,北纬34度),并且这些田地都是安装第一步的规划,每一亩左边花生、右边玉米的结构种植。再将这个地址起个好听的名字,比如说:大儿子。以后要找大儿子的玉米,我们就很容易找到了:大儿子->玉米。
好了,库的知识大概就总结这么多,仅供参考。