LED跑马灯实验库函数Word文档格式.docx

上传人:b****4 文档编号:17020205 上传时间:2022-11-27 格式:DOCX 页数:26 大小:853.09KB
下载 相关 举报
LED跑马灯实验库函数Word文档格式.docx_第1页
第1页 / 共26页
LED跑马灯实验库函数Word文档格式.docx_第2页
第2页 / 共26页
LED跑马灯实验库函数Word文档格式.docx_第3页
第3页 / 共26页
LED跑马灯实验库函数Word文档格式.docx_第4页
第4页 / 共26页
LED跑马灯实验库函数Word文档格式.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

LED跑马灯实验库函数Word文档格式.docx

《LED跑马灯实验库函数Word文档格式.docx》由会员分享,可在线阅读,更多相关《LED跑马灯实验库函数Word文档格式.docx(26页珍藏版)》请在冰豆网上搜索。

LED跑马灯实验库函数Word文档格式.docx

所有的GPIO操作都是以跑马灯为基础进行的。

1.2实验目标

1.理解固件库的结构

2.分析和学习固件库

3.灵活运用GPIO

1.3实验时间

60分钟

1.4预备知识

熟悉C语言知识,熟练MDK的使用

1.5实验步骤

1.解压stm32f10x_stdperiph_lib.zip可以从ST官方网站免费下载。

本教程使用的标准库版本为3.1.2

2.创建一个GPIO文件夹

2.1新建子文件夹User,用于存放用户源程序

2.2新建子文件夹Project,用户KEIL工程文件

2.3在Project下依次创建Obj和List子文件夹,存放编译过程中产生的中间文件。

3.复制源代码到GPIO文件夹

3.1将stm32f10x_stdperiph_lib\STM32F10x_StdPeriph_Lib_V3.1.2\Libraries文件夹和Utilities文件夹整体复制到GPIO文件夹下。

这就是ST的标准库,是以源代码形式提供的。

3.2将库中的演示代码\GPIO\labsolutions\4GPIO_fuction\User中的文件复制到GPIO\User文件夹.

4.新建KeilMDK工程

4.1启动KeilMDK,点击菜单NewuVisionProject,

新建一个工程,命名为GPIO

4.2选择CPU类型为STM32F107VC(这是MDV-STM32-107开发板采用的CPU类型)

4.3当提示是否复制启动代码时,请选择否。

(我们用最新的库中的启动代码,不用Keil软件自带的旧版本启动文件)

4.4根据自己的需要修改Target名字。

(名字任意)

4.5为了便于代码管理,在这个Project下创建几个Group(名字可以任意)

User:

存放用户自己写的源代码

RVMDK:

存放启动文件(汇编文件)

StdPeriph_Driver:

存放ST标准库外设驱动文件

CMSIS:

存放CMSIS接口文件(这也是库的一部分)

STM32_EVAL存放板集设备驱动文件

4.6创建好Group后,我们开始依次添加文件。

4.6.1给User文件夹添加文件路径:

User文件夹

4.6.2给RVMDK文件夹添加文件,路径:

\Libraries\CMSIS\Core\CM3\startup\arm

启动文件路径:

4.6.3给stdPeriph_Driver文件夹添加文件

设备驱动文件路径:

\GPIO\Libraries\STM32F10x_StdPeriph_Driver\src

4.6.4给CMSIS文件夹添加文件

CMSIS接口文件路径:

\GPIO\Libraries\CMSIS\Core\CM3

4.6.5给STM32_EVAL文件夹添加文件

STM32_EVAL接口文件路径:

\Utilities\STM32_EVAL

5.修改源代码。

我们将修改main.c文件,换成我们自己跑马灯程序。

/********************************************************

version:

v1.0

author:

sky

**********************************************************/

/*头文件------------------------------------------------------------------*/

#include"

stm32f10x.h"

stm32_eval.h"

/*Privatefunctionprototypes-----------------------------------------------*/

voidRCC_Configuration(void);

voidDelay(__IOuint32_tnCount);

intmain(void)//主函数

{

/*系统始终配置**********************************************/

RCC_Configuration();

/*初始化LED*/

STM_EVAL_LEDInit(LED1);

STM_EVAL_LEDInit(LED2);

STM_EVAL_LEDInit(LED3);

STM_EVAL_LEDInit(LED4);

while

(1)

{

STM_EVAL_LEDOn(LED1);

//点亮LED1

Delay(0x3FFFFF);

//延时,维持灯的点亮

STM_EVAL_LEDOn(LED2);

//点亮LED2

STM_EVAL_LEDOff(LED1);

//熄灭LED1

STM_EVAL_LEDOn(LED3);

//点亮LED3

STM_EVAL_LEDOff(LED2);

//熄灭LED2

STM_EVAL_LEDOn(LED4);

//点亮LED4

STM_EVAL_LEDOff(LED3);

//熄灭LED3

STM_EVAL_LEDOff(LED4);

//熄灭LED4

}

}

/*始终配置*/

voidRCC_Configuration(void)

{

/*Setupthemicrocontrollersystem.InitializetheEmbeddedFlashInterface,

initializethePLLandupdatetheSystemFrequencyvariable.*/

SystemInit();

/*延时函数*/

voidDelay(__IOuint32_tnCount)

for(;

nCount!

=0;

nCount--);

6.配置工程,点击“Options”按钮

6.1切换到Output。

选择Object文件夹。

在CreateHexFile前打钩。

6.2切换带Listing。

选择Listings文件夹

6.3切换到C/C++

Ø

添加两个预编译宏USE_STDPERIPH_DRIVER,STM32F10X_CL,USE_STM3210C_EVAL,LCD_Debug(这是ST库用到了这两个宏)

修改Includes路径

6.4切换到Debug

选择硬件调试器(缺省是软件仿真),我们选择Cortex-M/RJ-LINK/J-Trace调试器

在Runtomain前打钩

6.4切换到Utilities

选额调试器类型,我们选择Cortex-M/RJ-LINK/J-Trace

点settings按钮,添加Flash编程算法,我们选择STM32连接型器件,Flash容量256K字节

7.配置工程完毕。

下面开始编译。

8.编译OK,按开发板Reset键开始运行。

9.教程结束。

(注:

本GPIO应用还有一个小实验,请自己仿照以上方法完成)实验代码如下:

1、通过使用固件库配置GPIO引脚的模式控制法

/*Includes------------------------------------------------------------------*/

//#include"

/*Privatetypedef-----------------------------------------------------------*/

/*Privatedefine------------------------------------------------------------*/

/*Privatemacro-------------------------------------------------------------*/

/*Privatevariables---------------------------------------------------------*/

GPIO_InitTypeDefGPIO_InitStructure;

//定义GPIO初始化结构体

intmain(void)//主函数

/*SystemClocksConfiguration**********************************************/

RCC_Configuration();

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);

//外设时钟配置,开启GPIOB和GPIOD的时钟

//GPIO_InitTypeDefGPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_7|GPIO_Pin_13;

//管脚位置定义,标号可以是NONE、ALL、0至15。

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_2MHz;

//输出速度2MHz

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;

//推挽输出模式Out_PP

GPIO_Init(GPIOD,&

GPIO_InitStructure);

//E组GPIO初始化

//RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,DISABLE);

/*====LED1-ON=======*/

GPIO_ResetBits(GPIOD,GPIO_Pin_7);

GPIO_SetBits(GPIOD,GPIO_Pin_13);

GPIO_SetBits(GPIOD,GPIO_Pin_3);

GPIO_SetBits(GPIOD,GPIO_Pin_4);

Delay(0xfffff);

Delay(0x5ffff);

/*====LED12-ON=======*/

GPIO_ResetBits(GPIOD,GPIO_Pin_13);

/*====LED123-ON=======*/

GPIO_ResetBits(GPIOD,GPIO_Pin_13);

GPIO_ResetBits(GPIOD,GPIO_Pin_3);

/*====LED1234-ON=======*/

GPIO_ResetBits(GPIOD,GPIO_Pin_4);

/*====LED1234-OFF=======*/

GPIO_SetBits(GPIOD,GPIO_Pin_7);

}

/**

*@briefConfiguresthedifferentsystemclocks.

*@paramNone

*@retvalNone

*/

*@briefInsertsadelaytime.

*@paramnCount:

specifiesthedelaytimelength.

1.6结论

1.7问题

1、简述GPIO端口位的基本结构

2、简述怎么配置GPIO寄存器

3、简述GPIO的几种模式配置及其区别

4、目录\GPIO\labs下面test.zip压缩文件中的工程是基于STM32F103ZE芯片的

某一块开发板上的LED跑马灯,请根据前面做的GPIO实验修改本代码,使得该

LED跑马灯能够在基于STM32F107VC芯片的开发板上正常运行起来。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1