基于标准外设库的LED流水灯


一、STM32工程项目创建

1.打开STM32标准外设库官方下载地址:
https://www.st.com/zh/embedded-software/stm32-standard-peripheral-libraries.html;
在这里插入图片描述
选择“F1”,选择对应芯片与版本,点击“Get latest”:
在这里插入图片描述
接受协议,填写信息,进入邮箱,点击下载;
在这里插入图片描述
2.将下载的压缩包解压到新建的文件夹中
在这里插入图片描述
3.在建立的STM32文件夹中再次新建工程文件夹
在这里插入图片描述
4.打开新建的工程文件夹,在文件夹中再新建如下文件夹
在这里插入图片描述
5.其中CMSIS文件夹中存放从STM32官方固件库中拷贝来的文件如下
在这里插入图片描述
6.startup文件夹中存放启动文件
在这里插入图片描述
7.DOC文件夹用来存放客户说明文件
在这里插入图片描述
8.Librraries文件夹存放库文件
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
9.以上文件均从STM32官方固件库中拷贝得到。
Project文件夹用来存放我们自己建立的Kil5工程文件,该过程在第三步完成。
User文件夹用来存放我们自己建立的文件。还需要将STM32官方库的文件拷贝过来,如下图,其中main.c文件是我们自己建立的。
在这里插入图片描述

二、添加STM32标准外设库文件(.c,.h)

1.打开Kil5,点击Project,点击新建Kil工程,工程目录选择我们新建的Project文件夹
在这里插入图片描述
2.随后弹出固件选择框,选择我们用的那一款芯片型号STM32F103C8,点OK
在这里插入图片描述
3.工程建立后,在如下图中右击taget1,选择Add Group,添加和上文中建立的文件夹同名的文件夹
在这里插入图片描述
4.双击文件夹可添加文件,在STARTUP文件夹中添加启动文件夹
在这里插入图片描述
5.同理在相应文件夹中都将第一步中图中的文件添加到工程中。全部完成后如图
文件夹SYSTEM中放置时延函数
在这里插入图片描述
在这里插入图片描述
6.点击魔术棒:
在Define中添加宏定义USE_STDPERIPH_DRIVER目的是编译#include “stm32f10x.h”
点击C++ -> include path 添加文件路径

在这里插入图片描述
在这里插入图片描述

三、LED流水灯

1.首先我们需要开启GPIO的时钟,这样GPIO才能被打开并被正常使用;而在标准库函数中,我们只需要调用开启时钟的函数即可
主函数代码:

#include "stm32f10x.h"              
#include "Delay.h"

int main(void)
 {
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//控制GPIOA的时钟,使其处于使能状态
	
	//配置GPIOA
	GPIO_InitTypeDef GPIO_InitStructure;//定义结构体GPIO_InitStructure,GPIO_InitTypeDef是定义结构体声明,在Library中的gpio.h头文件中可以找到
	
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//设置为推挽输出模式
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_0;//打开GPIOA的01234引脚
	
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置输出速度为50MHZ
	
	GPIO_Init(GPIOA, &GPIO_InitStructure);//GPIO_Init是配置GPIO口函数,将结构体取地址输入到函数参数中,配置完成
	
	while (1)
	{
		
		GPIO_Write(GPIOA, ~0x0001);	//16进制转2进制为,0000 0000 0000 0001,按位取反,A0输出低电平
		Delay_ms(1000);//延时1000ms,也就是1秒
		GPIO_Write(GPIOA, ~0x0002);	//0000 0000 0000 0010,同上原理,A1输出低电平
		Delay_ms(1000);
		GPIO_Write(GPIOA, ~0x0004);	//0000 0000 0000 0100,同上原理,A2输出低电平
		Delay_ms(1000);
		GPIO_Write(GPIOA, ~0x0008);	//0000 0000 0000 1000,同上原理,A3输出低电平
		Delay_ms(1000);
        GPIO_Write(GPIOA, ~0x0010);	//0000 0000 0001 0000,同上原理,A4输出低电平
		Delay_ms(1000);
		
	}
}

在代码中,通过循环点亮GPIOA的各个引脚,并在点亮后延时。
2.进行编译,输出hex文件
在这里插入图片描述
编译成功,并且生成了hex文件。
3.实物芯片接好之后,在Keil种点击Download按钮,通过ST-LINK烧录进芯片
在这里插入图片描述
点击Download
在这里插入图片描述
烧录成功。
4.实物效果:
在这里插入图片描述

四、keil调试与端口电平波形显示

1.我们可以利用KEIL逻辑分析仪对端口的电平变化波形进行观察。首先点击魔术棒,点击Debug,修改为如下
在这里插入图片描述
2.修改完成后,点击打开调试界面,然后打开逻辑分析仪
在这里插入图片描述
3.点击逻辑分析仪的左上角的“Set Up”选项,在弹出的窗口中,我们新建观察引脚,如图,我选择观察0、1管脚(注意显示方法改为bit)
在这里插入图片描述
4.左上角点击全速运行程序
在这里插入图片描述

即可由图分析每一个管脚。


总结

与寄存器方式实现流水灯相比,标准库函数方式更加便捷。寄存器方式需要不断地寻址,步骤繁琐,相比之下,标准库函数只需要把标准库加入到工程之中,并加入每一个头文件路径即可。而通过本次实验,我也掌握了如何使用标准库函数来控制LED灯的亮灭。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值