基于标准外设库的LED流水灯&keil仿真实验

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

一.创建一个keil工程

下载stm32标准库
下载地址:
链接: https://www.st.com/en/embedded-software/stm32-standard-peripheral-libraries.html
打开keil 创建一个工程
请添加图片描述
选择stm32的具体型号

请添加图片描述

这一步直接点取消,我们要自己添加库文件
请添加图片描述
将下载好的标准库文件分类并添加到头文件

请添加图片描述
start

请添加图片描述

Library
请添加图片描述

请添加图片描述

User

请添加图片描述
点击魔方设置界面
请添加图片描述

添加刚刚三个组文件
请添加图片描述
请添加图片描述
随后点击“Target1”的options在c++选项设置如下
在include paths下将三个文件路径加上
请添加图片描述

二.程序编写

源代码

#include "stm32f10x.h"                  // Device header


void Delay_ms( volatile  unsigned  int  t)
{
     unsigned  int  i;
     while(t--)
         for (i=0;i<800;i++);
}

int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//开启时钟
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;//打开所有引脚
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;设置
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	while (1)
	{
		GPIO_Write(GPIOA, ~0x0001);	//0000 0000 0000 0001
		Delay_ms(1000);
		GPIO_Write(GPIOA, ~0x0002);	//0000 0000 0000 0010
		Delay_ms(1000);
		GPIO_Write(GPIOA, ~0x0004);	//0000 0000 0000 0100
		Delay_ms(1000);
  	    GPIO_Write(GPIOA, ~0x0008);	//0000 0000 0000 1000
		Delay_ms(1000);
		GPIO_Write(GPIOA, ~0x0010);	//0000 0000 0001 0000
		Delay_ms(1000);
		GPIO_Write(GPIOA, ~0x0020);	//0000 0000 0010 0000
		Delay_ms(1000);
		GPIO_Write(GPIOA, ~0x0040);	//0000 0000 0100 0000
		Delay_ms(1000);
		GPIO_Write(GPIOA, ~0x0080);	//0000 0000 1000 0000
		Delay_ms(1000);

	}
}

三.烧录展示

运行程序生成.hex文件
请添加图片描述
用转接口连接stm32
运行.hex文件进行烧录
请添加图片描述
结果展示

b

Keil5仿真流程

点击“Target1”的options
修改晶振频率为8MHZ请添加图片描述
再点击debug如下图修改
请添加图片描述
点击放大镜
请添加图片描述

再点击
请添加图片描述
点击setup
请添加图片描述
选择一条引脚查看
请添加图片描述
请添加图片描述

总结

LED流水灯实验是入门stm32的敲门砖,主要通过两种方式(寄存器和标准库),通过这两次实验的对比,我懂得了点亮LED寄存器和库函数两种方式点亮LED的主要区别在于使用的方法和代码复杂度。使用寄存器的方式需要直接访问硬件寄存器,通过设置或清除寄存器中的位来控制LED的亮灭。这种方式需要对硬件和寄存器的了解,代码相对较短,执行效率高,但可读性较差,不方便维护和修改。使用库函数的方式则是调用已经封装好的函数库,函数库中已经实现了控制LED的功能。这种方式代码相对较长,执行效率相对较低,但可读性好,易于维护和修改。最后也学习了如何用keil仿真观察输出波形。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值