基于STM32标准库函数的LED流水灯实验

基于STM32标准库函数的LED流水灯实验

一、STM32标准库函数简要介绍及与寄存器编程的区别

STM32标准库是一套由STMicroelectronics提供的软件库,用于简化在STM32微控制器上开发应用程序的过程。它包含了许多常用的函数和驱动程序,可用于配置和操作STM32微控制器的各种硬件资源。

STM32标准库函数可以分为几个主要类别:

系统初始化函数:用于初始化系统时钟、中断向量表和其他系统设置。

GPIO函数:用于配置和操作通用输入/输出端口,包括设置引脚方向、读取和写入引脚状态等。

外设驱动函数:用于配置和操作各种外设,如串口、SPI、I2C等。这些函数包括初始化外设、发送和接收数据等。

中断处理函数:用于配置和处理中断。它们允许您定义中断服务函数,并将其与特定的中断源关联起来。

与寄存器编程相比,STM32标准库函数的主要优势在于简化了开发过程。使用标准库函数,您可以通过调用封装好的函数来配置和操作硬件资源,而无需直接访问寄存器。这样可以减少编写大量底层代码的工作量,并提高开发效率。

二、STM32标准库函数工程模板的建立

2.1 新建工程

我们首先打开keil MDK,点击“NEW PROJECT"

图

命名好工程名字,文件路径。(建议工程名字使用英语)。完成后,选择STM32F103C8T6。
在这里插入图片描述

随后弹出来的这个界面不用管,直接取消掉。这个是用它自带的library添加所需库函数。但是我试了很多次发现文件总是缺少一些,所以就自己手动添加了。

在这里插入图片描述

2.2 新建组与库函数文件的添加

进入工程界面,点击魔术棒右边的三个箱子的图案。这是用来管理分组的。

在这里插入图片描述

进入管理界面,在中间添加四个组,名字命名为Start,Library,User,System。

在这里插入图片描述

同时,我们在工程对应文件夹中也新建同名的这些文件。

所有配置函数需要在ST官网进行下载:https://www.st.com/zh/embedded-software/stm32-standard-peripheral-libraries.html

在Start本地文件夹中,我们存放STM32编程所需的启动库函数,所需列表如下。(Startup函数只需选用.md那一项即可,但全部添加也没有什么问题,只是我们只用那个文件而已)

图

在Library本地文件夹中,我们存放STM32编程所需的应用库函数,包括GPIO,中断,定时,看门狗等等源函数。我们如果想要使用这些功能,直接找到里面对应的函数,根据函数的定义进行规范调用即可。

图

在User本地文件夹中,我们存放STM32内核函数以及我们的主函数。

图

在System本地文件夹中中,我们存放我们自己想定义和配置的函数。这也是满足模块化编程的需要。如果所有函数都挤在main函数中,就会显得很乱没有逻辑性。所以我们把一些函数单独分组放在一起,写上头文件,在使用时在主函数中单独调用即可。在这里我们需要配置一个延时函数Delay。

图

我们还需要修改一下头文件路径,这样编译器才能找到我们所添加的函数

点击魔术棒,选择C/C++,在“Define”栏中写上如下字符

随后点开“Include Paths”右边的三个点,在窗口中将我们的Start,Library,System,User文件都添加进去。

在这里插入图片描述

如果没有添加,编译器会报错找不到文件,所以这一步非常重要!!

然后我们在keil中点击每个组,将本地文件夹里对应的文件添加到组里面,添加结果如下所示
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

我们最后在主函数中写上头文件,写上主函数和while循环。进行编译。如果没有错,说明工程建立成功了。

**常见问题(猜测):**有很多的报错有可能是编译器版本不对。我们这里使用的是V5编译器,在魔术棒中,选择"Target",进行设置

在这里插入图片描述

三、LED流水灯实验

3.1 配置GPIO口点灯基本步骤

跟寄存器方式配置GPIO口类似,标准库函数配置GPIO口也分为以下三个步骤:

1. 设置GPIO口时钟,处于使能状态

首先我们需要开启GPIO的时钟,这样GPIO才能被打开并被正常使用。在寄存器方式编程中,我们需要找得到APB2使能寄存器的地址,查找手册才能知道端口的地址,十分的繁琐很麻烦。而在标准库函数中,我们只需要调用开启时钟的函数即可。在STM32中,调用APB2使能配置的函数为

void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState)

我们可以右键查找函数的定义

在这里插入图片描述

根据注释可知,第一个参数 uint32_t RCC_APB2Periph,是指定的端口,我们这里使用GPIOA,故在主函数中写 RCC_APB2Periph_GPIOA。第二个参数是指定端口使能还是失能,我们选择使能,填上 ENABLE。完整调用如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值