北航17系微机原理实验报告三
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 ) */