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

一、实验目的

基于寄存器的LED流水灯实验的基础上,改用标准外设库方式使用某个端口GPIOx端口管脚控制几个LED灯,轮流闪烁,间隔时长1秒。

任务
(1)写出工程项目创建文件夹、添加STM32标准外设库文件(.c,.h)的详细过程;
(2)LED灯的亮/灭周期是通过软件循环延时完成的,测量其准确周期大致是多少;
(3)在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。 请用此功能观察GPIO端口的输出波形,并分析时序状态正确与否、高低电平转换周期(LED闪烁周期)实际为多少。

二、创建基于标准外设库的keil工程

参考:
MDK5 Kil5中STM32工程的建立过程

1. 添加STM32标准外设库文件

下载标准库
下载地址:STM32F10x standard peripheral library
请添加图片描述

解压安装包,得到以下文件请添加图片描述

新建工程文件夹,在文件夹中再新建如下文件
请添加图片描述
将解压的标准库中的文件逐一添加到新建文件夹中

CMSIS:
请添加图片描述
请添加图片描述
DOC:
请添加图片描述
Libaries:
请添加图片描述
User:
请添加图片描述
(main.c文件是我们自己建立的)

打开Kil5,点击Project,点击新建Kil工程,工程目录选择我们新建的Project文件夹。然后在如下图中右击taget1,选择Add Group,添加和上文中建立的文件夹同名的文件夹
请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
工程如图:

请添加图片描述

2. 添加头文件

点击魔法棒,将包含头文件的文件夹添加进来,目的是让工程优先在添加进来的文件夹中搜索头文件
请添加图片描述
请添加图片描述
请添加图片描述

结果如图:

请添加图片描述

3. 添加宏定义

在Define中添加宏定义USE_STDPERIPH_DRIVER目的是编译#include “stm32f10x.h”请添加图片描述
至此,标准库的keil工程创建完成

三、基于标准外设库的程序编写

实验代码:

#include "stm32f10x.h"

void delay_s(void);

int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;              //定义一个GPIO_InitTypeDef类型的结构体
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //设置引脚模式为通用推挽输出
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All;       //选择要控制的GPIO引脚
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //设置引脚速率为50MHz
	GPIO_Init(GPIOA, &GPIO_InitStructure);            //调用库函数,初始化GPIO
	
	while (1)
	{
		GPIO_Write(GPIOA, ~0x0001);	//0000 0000 0000 0001
		delay_s();
		GPIO_Write(GPIOA, ~0x0002);	//0000 0000 0000 0010
		delay_s();
		GPIO_Write(GPIOA, ~0x0004);	//0000 0000 0000 0100
		delay_s();
	}
}
void delay_s(void)
{
	volatile int i=0,j=0,k=0;
	for(i=1000;i>0;i--)
	{
		for(j=1000;j>0;j--)
		{
			for(k=6;k>0;k--);
		}
	}
}

编译报错:

请添加图片描述

出错原因:
工程配置选项中的debug选项卡的dialog dll和对应的parameter配置出了问题。选中MCU后默认的配置如下图
请添加图片描述
dialog dll默认配置为DCM.DLL,而parameter默认配置为-pCM3,该种配置无法进行正常的仿真调试。
正确配置应该为dialog dll:DARMSTM.dll parameter:-pSTM32F103C8:
请添加图片描述
这两个参数是根据你使用的MCU不同而不同的,例如本工程使用的MCU为STM系列,那么在dialog DLL选项中就应该使用DARMSTM.dll,名字中的STM就是指厂商,参数则是具体的MCU芯片型号,本项目使用STM32F103C8T6,因此选择为STM32F103C8

参考:
DEBUG类:error 65: access violation at 0x40021000 : no ‘read‘ permission

重新编译,成功
请添加图片描述

四、程序仿真

1. 设置options for target:

①Target页的设置:

请添加图片描述

Target界面中,选择跟正确的晶振大小,我使用的是8MHz的外部晶振。这个选项在软件仿真中起到很 重要的作用,如果选择错误,那么波形一定是错误的,因为时间不准确。此前,我增加默认为72MHz, 结果波形与预料的不一致,原本是1s翻转一次的波形,显示出来的周期比预想的长得多。不过这个参数 只是在软件仿真中起作用,当程序在硬件中运行并没有影响。

②Debug页的设置:

请添加图片描述

首先应该选择Use Simulator,其次是Run to main()选项打钩,然后分别修改上图中的DDL按照以上步骤设置后点击OK,完成设置。

2. 调试:

点击debug进入调试页面
请添加图片描述
选择逻辑分析仪,选择要观察的引脚,点击Setup Logic Analyzer,添加要观察的引脚,结果如下
请添加图片描述
运行程序,观察波形,把光标移动到逻辑分析仪显示波形的区域,上下滚动滑轮,就可以放大和缩小波形.
请添加图片描述
运行结果:
请添加图片描述

五、程序烧录

面包板连接实物图请添加图片描述

运行,得到结果

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

基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip 【备注】 1、该资源内项目代码百分百可运行,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值