ARM学习资料 GPIO基本内容 LED跑马灯实验(1)
- 格式:doc
- 大小:606.50 KB
- 文档页数:16
LED跑马灯实验
修改记录
版本号. 作者描述修改日期
0.1 徐珊First Draft 2011-9-21
审核记录
姓名职务签字日期
标题文档编号版本页
文档名 1.0 2 of 16
LED跑马灯
1.1 实验介绍
GPIO即通用可编程输入输出口,在此我们通过GPIO编程实现一个跑马灯的实验。该跑马灯实验是最简单,也是一般最先开始的一个实验,它可以搭建一个最小的工程项目,之后,所有的实验都可以建立在该项目之上,从而节省了在搭建过程中所消耗的时间和精力。所有的 GPIO 操作都是以跑马灯为基础进行的。
1.2 实验目标
1. 理解GPIO寄存器配置的相关知识
2. 灵活运用 GPIO
1.3 实验时间
60分钟
1.4 预备知识
熟悉C语言知识,熟练MDK的使用
1.5 实验步骤
1.创建一个GPIO_1文件夹
2.1 新建子文件夹User,用于存放用户源程序
2.2 新建子文件夹RVMDK,用于存放去启动代码(STM32F10x.s)
2.3 新建子文件夹Project,用户KEIL工程文件
2.4 在Project下依次创建Obj和List子文件夹,存放编译过程中产生的中间文件。
标题文档编号版本页
文档名 1.0 3 of 16
具体如下图所示:
4. 新建Keil MDK工程
4.1 启动Keil uVision4,点击菜单 New uVision Project,
新建一个工程,命名为GPIO
标题文档编号版本页
文档名 1.0 4 of 16
4.2 选择CPU类型为 STM32F107VC (这是MDV-STM32-107开发板采用的CPU类型)
标题文档编号版本页
文档名 1.0 5 of 16
4.3 当提示是否复制启动代码时,请选择否。(为了工程目录标准化,稍后添加Keil软件自带的旧版本启动文件)
4.4 根据自己的需要修改Target名字。(名字任意)
4.5 为了便于代码管理,在这个Project下创建几个Group (名字可以任意)
User : 存放用户自己写的源代码
RVMDK : 存放启动文件(汇编文件)
标题文档编号版本页
文档名 1.0 6 of 16
标题
文档编号 版本 页
文档名
1.0 7 of 16
4.6 创建好Group 后,我们开始依次添加文件。
4.6.1给User 文件夹新建GPIO..c 文件,具体如下图所示:
新文件内没有任何代码:
保存新文件到User 目录下,命名为GPIO.c
4.6.2给User文件夹添加刚刚新建好的GPIO.c,该文件在\GPIO\User下,点击Add即可
标题文档编号版本页
文档名 1.0 8 of 16
标题 文档编号 版本
页
文档名
1.0 9 of 16
添加后可看到GPIO.c 文件在User 目录下
4.6.3给RVMDK 文件夹添加启动文件,该文件在keil_MDK 软件安装目录下的: \Keil\ARM\Startup\ST\ STM32F10x.s 文件,先把这个文件复制到GPIO 工程目录下面的 \GPIO_1\RVMDK 文件夹下,然后再吧这个文件添加到RVMDK 下,如下所示:
标题文档编号版本页
文档名 1.0 10 of 16
添加时注意,应该把文件类型选择为所有,或者有*s的扩展名的类型,否则看不到你所需要的文件(STM32F10x.s)
5.在main.c 文件,输入我们自己跑马灯程序。
/*配置寄存器法 */
#define GPIOD_CRL (*((unsigned int *)(0x40011400))) //0X40001 1400
#define GPIOD_CRH (*((unsigned int *)(0x40011404))) //基址+偏移量
#define GPIOD_ODR (*((unsigned int *)(0x4001140C))) //32位数据寄存器
#define RCC_APB2ENR (*((unsigned int *)(0x40021018))) //外设时钟使能寄存器
void Delay(void) //延时函数,流水灯显示用
标题文档编号版本页
文档名 1.0 11 of 16
{
unsigned int i;
for (i=0;i<0x9FFFF;i++);
}
int main(void)
{
// 开发板使用如下I/O口控制LED---PD3,PD4,PD7,PD13
RCC_APB2ENR |=(1<<5); // 使能PORTD口的时钟
GPIOD_CRL &= 0x00000000; // 配置寄存器,将GPIOD_CRL低16位都清0,这样
CNF为00,
GPIOD_CRL |= 0x33333333; // 配置寄存器,MODE选择为11,即50MHz输出模式,
选择为推挽输出模式
GPIOD_CRH &= 0x00000000; // 配置寄存器,将GPIOD_CRL高16位都清0,这样
CNF为00,
GPIOD_CRH |= 0x33333333; // 配置寄存器,MODE选择为11,即50MHz输出模式,
选择为推挽输出模式
while(1)
{
GPIOD_ODR=0xffff; //LED全亮
Delay();
GPIOD_ODR=0x0000; //LED全灭
Delay();
}
}
6. 配置工程, 点击“Options”按钮
6.1 切换到Output。
选择Object文件夹。
标题文档编号版本页
文档名 1.0 12 of 16