北航17系微机原理实验报告三

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理实验报告实验三GPIO口的控制

一、实验目的

1.了解GPIO口有哪些工作模式,这些模式分别代表着的含义。

2.掌握ARM7TDMI的C语言编程的格式和用法,在原有的程序的基础上修改功能。

3.完成GPIO口控制实验。

二、实验设备

PC 计算机,Windows XP 操作系统和IAR 开发环境。

三、实验内容

1、实现开发板上三个LED灯的流水闪烁。

2、实现开发板上按键控制三个对应LED灯的亮灭。

四、实验步骤

1、运行IAR Embedded Workbench IDE并打开LED文件夹下的Project.eww的IAR工程。

2. 在左侧工程文件栏中最上方的Project-Debug处右键,对工程进行设置。

3. 在弹出相应的设置窗口中,进行如下选择。

①本实验是在基于STR710的环境下实现的,因此在General Options里应选择相应的设备名称②本实验是基于ARM7的STR710的开发板,程序编译完成后需要将生成的文件通过J-LINK下载去进一步调试,因此,Debugger-Setup处的Driver应该选择J-Link,并在Download选项卡进行配置。

4. 完成以上设置之后,就开始进行程序的编译并下载,首先仍在Project-Debug处右键,选择Rebuild All。

5. 编译完成后,依次点击Make和Download and debug键,将程序下载到开发板上。

6. 点击调试工具栏中的Go即可开始连续运行程序,在程序中间可设置断点或者使用观察窗口对变量进行观察。设置断点并点击连续运行,程序运行到断点处之后,将temp1变量

添加到变量观察窗口,点击Step Out键进行调试和观察。

五、实验程序及结果

1.LED实现流水灯

实验代码

#include "71x_gpio.h"

#include "71x_lib.h"

#include "LED.h"

#include "Key.h"

void delay(void)

{

inti,j;

for(i = 0;i<1000;i++)

{

for(j = 0;j <1000;j++);

}

} //循环延迟

int main()

{

int temp1;

RCCU_PCLK1Config (RCCU_DEFAULT); //设置低速APB1时钟,锁存时钟

不做分频

/* Configure PCLK2 = RCLK / 1 */

RCCU_PCLK2Config (RCCU_DEFAULT); //设置高速APB2时钟,锁存时钟不做分频

/* Configure MCLK clock for the CPU, RCCU_DEFAULT = RCLK /1 */

RCCU_MCLKConfig (RCCU_DEFAULT); //设置主系统时钟,不做分频/* Configure the PLL1 ( * 12 , / 4 ) */

RCCU_PLL1Config (RCCU_PLL1_Mul_12, RCCU_Div_4); //配置PLL的倍乘和分除因子

while(RCCU_FlagStatus(RCCU_PLL1_LOCK) == RESET)

{

/* Wait PLL to lock */

} //等待PLL启动完成

/* Select PLL1_Output as RCLK clock */

RCCU_RCLKSourceConfig (RCCU_PLL1_Output) ; //选择外部PLL1为时钟源APB_ClockConfig (APB2, ENABLE, GPIO2_Periph); //APB2使能并设置GPIO2口

LED_Init(); //LED初始化

/*while(1)//正向流水

{

for(temp1 = 0; temp1 <3; temp1++)

{

LED_Set(temp1, LED_ON);

delay();

LED_Set(temp1, LED_OFF);

delay();

}

}*/

while(1)//反向流水

{

for(temp1 = 2; temp1 >-1; temp1--)

{

LED_Set(temp1, LED_ON);

delay();

LED_Set(temp1, LED_OFF);

delay();

}

}

/*while(1)//全亮全灭

{

LED_Set(1, LED_ON);

LED_Set(2, LED_ON);

LED_Set(0, LED_ON);

delay();

LED_Set(0, LED_OFF);

LED_Set(1, LED_OFF);

LED_Set(2, LED_OFF);

delay();

}*/

}

运行结果

LED灯实现正向和反向流水灯。

2.按key键实验

实验代码

#include "71x_gpio.h"

#include "71x_lib.h"

#include "LED.h"

#include "Key.h"

void delay(void)

{

inti,j;

for(i = 0;i<1000;i++)

{

for(j = 0;j <1000;j++);

}

}//延迟循环

int main()

{

int temp1;

RCCU_PCLK1Config (RCCU_DEFAULT); //设置低速APB1时钟,锁存时钟不做分频

/* Configure PCLK2 = RCLK / 1 */

RCCU_PCLK2Config (RCCU_DEFAULT); //设置高速APB2时钟,锁存时钟不做分频

/* Configure MCLK clock for the CPU, RCCU_DEFAULT = RCLK /1 */

RCCU_MCLKConfig (RCCU_DEFAULT); //设置主系统时钟,不做分频

/* Configure the PLL1 ( * 12 , / 4 ) */

相关文档
最新文档