STM32学习笔记(4)-点亮LED(标准库函数介绍)
仅供个人学习,记录学习STM32中的要点,加深对知识的巩固
前言
上一节我们通过指针访问结构体来达到寄存器控制LED灯。这节就使用库函数来完成对LED灯的控制。仍在上一节代码基础之上进行编写。
库函数介绍
在main.c文件中加入头文件
#inlcude <stm32f10x.h>
解释:这行代码包含了一个名为 stm32f10x.h 的头文件,该头文件包含了 STM32F10x 系列微控制器的基本配置和外设库函数的声明。
具体来说,stm32f10x.h 头文件包含了 STM32F10x 系列微控制器的内部寄存器定义、外设寄存器地址映射、中断向量表、外设库函数的声明等一系列内容,方便进行 STM32F10x 微控制器的编程和开发。
接下来,我们通过选择RCC,点击右键,选择“Go To Definition Of 'RCC'”。可以找到它的定义。
同样的,我们可以找到GPIOA的写法。
从上面两张图中可以看出,和之前的第三节我们用寄存器写的代码很相似。
笔者这里将他们放在一起对比如下图。
所以为了一探究竟,我们进行如下操作:
这里我们可以选择RCC_Typedef,点击右键,选择“Go To Definition Of 'RCC_Typedef'”。可以找到它的定义。
将他们和上一节内容放在一起对比
可以看到,除开一些宏定义的分支,红色大框所包含的内容也和上一节结构体的内容相似。
这就说明,在<stm32f10x.h>的头文件中,已经包含了对RCC和GPIO的封装。
再次回到RCC_Typedef,我们去找RCC_BASE的定义
我们看到它的地址位组成。
这里再次记录一下:
我们在去寻找AHBPERRIPH_BASE的定义。
再次记录:
我们找到PERIPH_BASE的地址:
记录:
可以看到,我们的RCC_BASE等与0x40021000。也就是说,官方提供了封装好了的结构体供我们使用。虽然和上一节代码没有本质变化,但是我们已经开始接触了官方所提供的库函数,并且知道该怎么使用他们了。下一节将介绍如何使用官方的库函数来进一步改写我们的代码。
本小节暂时记录到此。