gpio实验报告(9篇)gpio实验报告 Cortex-M4原理与实践实验报告 实验一GPIO接口实验 一.实验目的 1.掌握CodeComposerStudio6.0下面是小编为大家整理的gpio实验报告(9篇),供大家参考。
篇一:gpio实验报告
Cortex-M4原理与实践实验报告
实验一GPIO接口实验
一.实验目的
1.掌握CodeComposerStudio6.0(以下简称CCS)的安装和配置步骤过程。2.了解Cortex-M4开发系统和计算机与目标系统的连接方法。3.了解CCS软件的操作环境和基本功能,了解TM4C1294软件开发过程。1)学习创建工程和管理工程的方法;2)了解基本的编译和调试功能;3)学会设置断点,注入和提取数据文件;4)学习使用观察窗口;5)了解图形功能的使用方法。
二.实验程序流程图
本实验通过多种方法来控制GPIO端口的读写,通过GPIO端口的读写来控制主板上两个独立的LED灯,D1、D2的点亮和熄灭。主板上D1、D2、D3对应的GPIO口分别为PF1、PF2、PF3。
三.实验代码、注释及现象
#include<stdint.h>#include<stdbool.h>#include"inc/hw_memmap.h"#include"inc/hw_types.h"#include"driverlib/pin_map.h"#include"driverlib/sysctl.h"#include"driverlib/gpio.h"
intmain(void){
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);//使能GPIOF口GPIODirModeSet(GPIO_PORTF_BASE,GPIO_PIN_1,GPIO_DIR_MODE_OUT);//设置为输出模式
GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_1,GPIO_STRENGTH_8MA_SC,GPIO_PIN_TYPE_STD);//进一步设置为8mA、带转换速率控制的推挽输出GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,0xff);//PF1输出高电平while(1){};//LED_D1on简单LE
}
现象:LED1被点亮
四.思考题
1.代码
#include<stdint.h>#include<stdbool.h>#include"inc/hw_memmap.h"#include"inc/hw_types.h"#include"driverlib/pin_map.h"#include"driverlib/sysctl.h"#include"driverlib/gpio.h"
intmain(void){
SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ|SYSCTL_OSC_MAIN|SYSCTL_USE_PLL|SYSCTL_CFG_VCO_480),10000000);
//设置系统时间为10MHZ
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);//使能GPIOF口
GPIODirModeSet(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,GPIO_DIR_MODE_OUT);//设置为输出模式
GPIOPadConfigSet(GPIO_PORTF_BASE,GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3,GPIO_STRENGTH_8MA_SC,GPIO_PIN_TYPE_STD);//进一步设置为8mA、带转换速率控制的推挽输出
while(1)
{
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,0xff);//PF1输出高,点亮LED0
SysCtlDelay(100*(10000000/3000));
//延时n*1ms100ms
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_1,0);//PF1输出低,关闭LED0
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_2,0xff);//PF2输出高,点亮LED2
SysCtlDelay(100*(10000000/3000));
//延时n*1ms
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_2,0);//PF2输出低,点亮LED2
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_3,0xff);//PF2输出高,点亮LED2
SysCtlDelay(100*(10000000/3000));
//延时n*1ms
GPIOPinWrite(GPIO_PORTF_BASE,GPIO_PIN_3,0);//PF2输出低,点亮LED2
};
}
2.实验现象:主板上LED0,LED1,LED2按照间隔时间顺序依次点亮
实验原理解读:主要利用延迟函数,按顺序点亮和关断LED1,LED2,LED3。
五.实验中遇到的问题及其解决方法
首先是没有按默认路径安装,然后配置一直不对,缺少文件,后来把软件卸载之后再重新安装在默认路径,问题就解决了。
实验二矩阵按键操作实验
一、实验目的
1.熟悉和掌握矩阵式键盘的工作原理、电路设计和软件编程方法。2.熟悉和掌握矩阵式键盘的行列扫描法。3.掌握键盘延时消抖的软件方法。
二、实验过程(包括流程图)
图2-1实验程序流程图
三、实验代码、注释(最好每条注释)及现象
volatileuint32_tui32Loop;//定义变量
volatileuint32_tkey;
//定义变量
voiddelay()
{
intui32Loop0;
for(ui32Loop0=0;ui32Loop0<1000;ui32Loop0++)//delay
{;}
}//通过循环跑空函数延迟
intidentify_key()
篇二:gpio实验报告
入实验
实验四GPIO输
欧阳光明(2021.03.07)实验目的1、能够使用GPIO的输入模式读取幵关信号。2、掌握GPIO相关寄存器的用法和设置。3、掌握用C语言编写程序控制GPIOo二.实验环境PC机一台
ADS1.2集成开发环境一套EasyARM2131教学实验平台一套三.实验内容1•实验通过跳线JP8连接KEY1与P0.16,程序检测按键KEY1的状态,控制蜂鸣器BEEP的鸣叫。按下KEY1,蜂鸣器鸣叫,松开后停止蜂鸣。(调通实验后,改为KEY3键进行输入)。2.当检测到KEY1有按键输入时点亮发光二极管LED4并控制蜂鸣器响,软件延时后关掉发光管并停止蜂鸣,然后循环这一过程直到检测按键没有输入。(键输入改为键KEY4,发光管改为LED6)o
3.结合实验三,当按下按键Keyl时,启动跑马灯程序并控制蜂鸣器
响,软件延时后关掉发光管并停止蜂鸣,然后循环这一过程直到检测按键再次按下。四.实验原理
当P0□用于GPIO输入时(如按键输入),内部无上拉电阻,需要加上拉电阻,电路图参见图4.2。
进行GPIO输入实验时,先要设置IODIR使接□线成为输入方式,然后读取IOPIN的值即可。
图4.2按键电路原理图实验通过跳线JP8连接KEY1.P0.16,程序检测按键KEY1的状态,控制蜂鸣器BEEP的鸣叫。按下KEY1,蜂鸣器鸣叫,松幵后停止蜂鸣。在这个实验中,需要将按键KEY1输入口P0.16设为输入□而蜂鸣器控制口P0.7设置为输出口。蜂鸣器电路如图4.3所示,当跳线JP6连接蜂鸣器时,P0.7控制蜂鸣器,低电平时蜂鸣器鸣叫。LED灯电路如图4.4所示,低电平时灯亮。
图4.3蜂鸣器控制电路图4.4LED控制电路程序首先设置管脚连接寄存器PINSEL0和PINSEL1,设置P0.16为输入设置P0.7,P1.21为输出。然后检测端口卩0.16的电平,对P0.7,P1.21进行相应的控制,流程图如图4.5所示,实现程序见程序清单4.1。
图4.5按键输入实验流程图五、实验步骤.源代码及调试结果
内容1实验步骤
①启动ADS1.2IDE集成开发环境,选择ARMExecutableImageforlpc2131工程模板建立一个工程BEEP_keyo
②在user组里编写主程序代码main.c。③选用DebuglnFLASH生成目标,然后编译链接工程。④将EasyARM教学实验开发平台上的相应管脚跳线短接。⑤选择Project->Debug,启动AXD进行JLINK仿真调试。⑥全速运行程序,程序将会在main.c的主函数中停止。如下图所加:⑦单击ContextVariable图标按钮(或者选择Processor
Views->Variables)打开变量观察窗口,通过此窗□可以观察局部变量和全局变量。选择SystemViews->DebuggerInternals即可打开LPC2000系列ARM7微控制器的片内外寄存器窗口。通过变量窗□可以观察变量BEEP、KEY1等的值和ARM7微控制
器的片内外寄存器窗口。如下图所示:⑧可以单步运行程序,先按下Keyl,观察IOOPIN寄存器的值,
然后断开Keyl,观察IOOPIN寄存器的值。可以设置/取消断点;或者
*欧阳光明*创编
全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器控制
是否正确。如下图所示:
图4.6未按下Keyl时IOOPIN的值的值
图4.7按下Keyl时IOOPIN
由上两图可知,当按下Keyl时,IOOPIN寄存器的第16位由1变为0(F变为E),keyl与P0.16相连,按下Keyl时,P0.16管脚输出电平由1变为0,寄存器值变化,蜂鸣器响,说明控制是正确的。现象描述:按下KEY1,蜂鸣器鸣叫,松幵后停止蜂鸣。
源代码:
#include"config.h"constuint32BEEP=1«7;//P0.7控制蜂鸣器
constuint32KEY1=1«16;//P0」6连接KEY1(改为KEY3时,只需“constuint32KEY1=1«16”改为“const
uint32KEY3=1«18w,其余不变。)
/
■士■士
%•丄■■士
■士
%J”•士■士
■丄"■士
J.■士■士
•土
f
彳・
彳、哼.
■士■土
*1*
•土%L*
*1*
#7^#1%#T*
#Tv
#Tv
**函数名称:main()
糾函数功能:GPIO输入实验测试。
糾检测按键KEY1OKEY1按下,蜂鸣器蜂鸣,松开后停止蜂鸣。糾跳线说明:把JP8的KEY1跳线短接,JP11连接蜂鸣器。
•士
•["■士■士■士•士■]"%■士■士
■["%•士•士■]"%■士■士
叫・
■]"■丄.•["■士■土
#r^彳.彳.
■]"•士
#Tv
■[“■]“•土•土%f>%■士■”•士■士
■”■士
#r%#r%
■]“•”•士■士!
V#v^>
intmain(void)
{PINSEL0=0x00000000;//所有管脚连接GPIOPINSEL1=0x00000000;IOODIR=BEEP;//蜂鸣器控制□输出,其余输入while(1){if((IOOPIN&KEY1)==0)IOOCLR=BEEP;//如果KEY1按下,蜂鸣器鸣叫elseIOOSET=BEEP;//松幵则停止蜂鸣
篇三:gpio实验报告
班级
学号
姓名
实验日期
室温
大气压
成绩
实验题目:GPIO输出实验——按键输入检测实验
一、实验目的:
1、通过本实验学会ARM7.0软件的安装及掌握对该软件和EasyJTAG仿真器的使用;2、了解EasyARM2131开发板硬件结构,掌握各引脚功能和接线;3、掌握相关实验的程序,并能作出简单的修改并实现其功能;4、掌握GPIO输出实验---按键输入的检测。二、实验仪器:EasyARM2131开发板一块及相关导线、计算机一台三、实验原理:下面是工程窗口中的图标介绍:
如图4.2所示,当P0口连接GPIO且用于输入时,如用于检测按键的时候,由于P0口作GPIO输入时,内部无上拉内阻,所以需要加10K左右的上拉电阻,把I/O口拉到高电平。
当P0口用于GPIO输入时(如按键输入),内部无上拉电阻,需要加上拉电阻,电路如图4.14
图4.14按键输入原理图实验通过跳线JP8连线KEY3_P0.18,程序检测按键KEY3的状态,控制蜂鸣器BEEP的蜂鸣。在实验中,需要将按键KEY3输入口P0.18设为输入口,而蜂鸣器控制口P0.7设为输出口。蜂鸣器电路如图1.11所示,当跳线JP6连线蜂鸣器时,P0.7控制蜂鸣器,低电平时蜂鸣器蜂鸣。
程序首先设置管脚连线寄存器PINSEL0和PINSEL1,设置P0.7为输出。然后检测端口P0.18的电平,对P0.7进行相应的控制,流程图如图4.15所示,实现程序见程序清单4.7。
四、实验步骤:1、接好开发板与计算机的相关接线2、打开已安装好的H-JTAG和H-Flasher软件,并在H-Flasher软件中选择FlasherSelation→PHILIPS→LPC2318;然后再选择Programming→check。
操作过程中出现的窗口如下图(1)、(2)所示:
图(1)
图(2)
3、MetrowerksCodeWarriorforARMDeveloperSuitev1.2软件,点击File选择Open打开GPIO输出实验——按键输入检测实验文件夹,选择GPIO_Leds8-2.mcp文件,双击main.c,打开主程序,并运行检查是否出现错误,无误后点击Dubeg按钮;
操作过程中的窗口如下图(3)、(4)所示:
图(3)
图(4)
4、出的AXD窗口中选择Options,点击configuretarget后,在跳出的choosetarget窗口中点击Ok,点击运行按钮(若点击运行按钮,开发板中的LED不会亮)则在PIO_Leds8-a.mcp窗口中点击Run按钮运行,并观察开发板上出现的现象是否符合实验要求
窗口如下图(5)所示:
图(5)
5、程序清单4.7:按键输入程序如下
#include"config.h"constuint32BEEP=1<<7;constuint32KEY1=1<<18;/*
//P0.7控制蜂鸣器//P0.18连接KEY3
***********************************************************
**********************************************
**函数名称:main()
**函数功能:GPIO输入实验测试。
**
检测按键KEY3。KEY3按下,蜂鸣器蜂鸣,松开后停
止蜂鸣。
**跳线说明:把JP8的KEY3跳线短接,JP11连接蜂鸣器。
***********************************************************
**********************************************
*/
intmain(void)
{
PINSEL0=0x00000000;
//所有管脚连接GPIO
PINSEL1=0x00000000;
IO0DIR=BEEP;
//蜂鸣器控制口输出,其余输入
while(1)
{
if((IO0PIN&KEY3)==0)IO0CLR=BEEP;//如果KEY3
按下,蜂鸣器鸣叫
elseIO0SET=BEEP;
//松开则停止蜂鸣
}
return0;
}
五、实验结果心得体会:
1、修改程序之后的实验现象是:如果KEY1按下,蜂鸣器蜂鸣;松开则停止蜂鸣。2、实验心得(1)本实验可通过改变不同的I/O接口时,其按下不同的按键,一
样来实现蜂鸣器的响与停。如本实验也口P0.17连接KEY2,以此类推。(2)通过本实验不仅懂得了对RAM7.0软件的安装和使用,并对EasyARM2131开发板的基本结构有了一定的认识,更重要的是对其实验程序如何实验其功能有了一定的认识,并能对其某一句程序作相应的修改,使其实现我们所需的功能。(3)通过此实验,我也初步了解了GPIO各寄存器的功能与应用,知道了GPIO的应用电路,此按键输入检测实验是需要上拉电阻的。另外,我们可由书本知识可知,也有无需上拉电阻的GPIO。
篇四:gpio实验报告
课程实验报告
学院:姓名班级
专业:学号指导老师
2018年10月18日
课程名称嵌入式系统原理与应用实验
成
实验名称GPIO输出-流水灯
绩
1.实验目的
通过一个经典的跑马灯程序,了解STM32F1的IO口作为输出使用的方
法。通过代码控制开发板上的4个LED灯交替闪烁,实现类似跑马灯的效果。
2.实验内容
工程文件建立、程序的调试,编译、jlink驱动的安装与配置、程序下载、实验结果验证。
4.实验方法和步骤(含设计)(1)实验硬件连接图
四个led灯如图连接到GPIO的6~9引脚上。
(2)软件分析使用到的GPIO端口需配置为输出模式,使用推挽(PP)模式输出,IO口
速度为50MHz。(3)实验步骤
①建立工程文件:导入程序运行需要的库,加入主程序,调试运行环境,使程序可以成功被编译和运行且没有错误和警告。
②安装JLINK驱动程序,点击下载按钮将程序烧写进开发板中。③检查led灯是否逐一顺序点亮,能够通过调整程序使点亮顺序改变。(4)原函数
3.实验环境Windouws10KeiluVision5
5.程序及测试结果
6.实验分析与体会
如果4个LED灯是与A口的PA1、PA2、PA3、PA4相连,将led.c文件中的“GPIOC”改为“GPIOA”,并将Pin_X改为对应的1~4脚。
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;GPIO_Init(GPIOC,&GPIO_InitStructure);GPIO_SetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9);改为RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4;GPIO_Init(GPIOA,&GPIO_InitStructure);GPIO_SetBits(GPIOA,GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4);
成绩评定
实验日期:2018年10月18日
教师签名:年月日
篇五:gpio实验报告
嵌入式系统实验报告嵌入式系统实验gpio输入输出实验嵌入式系统设计师嵌入式系统设计嵌入式系统嵌入式操作系统什么是嵌入式系统嵌入式系统概述嵌入式系统导论试题
GPIO输出控制实验1
1、实验目的掌握LPC2200专用工程模块的使用LPC2200(1)掌握LPC2200专用工程模块的使用掌握EASYJTAGEASYJTAG仿真器的安装与使用(2)掌握EASYJTAG仿真器的安装与使用(3)在开发平台上运行第一个程序熟悉ARMARM7GPIO控制(4)熟悉ARM7的GPIO控制2、实验设备硬件:硬件:PC机MAGICARM2200-S教学实验开发平台2200-SMAGICARM2200-S教学实验开发平台软件:系统,软件:Windows98/XP/2000系统,ADS1.2集成开发环境3、实验内容控制开发平台的蜂鸣器报警。控制开发平台的蜂鸣器报警。原理图:4、原理图:
一台一套
5、源代码:/*****************************************************************************文件名:main.c*功能:蜂鸣器控制。对蜂鸣器B1进行控制,采用软件延时方法。*使用I/O口直接控制,采用灌电流方式。*说明:短接蜂鸣器跳线JP7。断开CF卡跳线JP13、GPIO接口J17。****************************************************************************/#include"config.h"#defineBEEPCON0x00000080//P0.7引脚控制B1,低电平蜂鸣/****************************************************************************
*名称:DelayNS()*功能:长软件延时。*入口参数:dly延时参数,值越大,延时越久*出口参数:无****************************************************************************/voidDelayNS(uint32dly){uint32i;for(;dly>0;dly--){for(i=0;i<5000;i++);}}/*****************************************************************************名称:main()*功能:控制蜂鸣器蜂鸣。****************************************************************************/intmain(void){PINSEL0=0x00000000;//设置管脚连接GPIOIO0DIR=BEEPCON;//设置I/O为输入输出模式//设置P0.7为输出while(1){IO0SET=BEEPCON;DelayNS(15);IO0CLR=BEEPCON;DelayNS(15);}return(0);}/******************************************************************************
//BEEPCON=1//BEEPCON=0
GPIO输出控制实验2
1、实验目的熟悉ARM的GPIO控制
2、实验设备硬件:硬件:PC机MAGICARM2200-S教学实验开发平台2200-SMAGICARM2200-S教学实验开发平台软件:系统,软件:Windows98/XP/2000系统,ADS1.2集成开发环境3、实验内容控制LED显示4、原理图
一台一套
5、源代码:/*****************************************************************************文件名:main.c*功能:LED显示控制。*通过GPIO直接控制8个LED产生流水灯效果*说明:短接LED跳线JP5。*这个警告可忽略,C2892E:signedconstantoverflow****************************************************************************/#include"config.h"#defineLED11<<16//P1.16#defineLED21<<17//P1.17#defineLED31<<18//P1.18#defineLED41<<19//P1.19#defineLED51<<20//P1.20#defineLED61<<21//P1.21#defineLED71<<22//P1.22#defineLED81<<23//P1.23#defineLEDCON0x00ff0000constuint32DISP_TAB[8]={0xff01ffff,0xff02ffff,0xff04ffff,0xff08ffff,0xff10ffff,0xff20ffff,0xff40ffff,0xff80ffff};
/*****************************************************************************名称:DelayNS()*功能:长软件延时*入口参数:dly延时参数,值越大,延时越久*出口参数:无****************************************************************************/voidDelayNS(uint32dly){uint32i;for(;dly>0;dly--){for(i=0;i<5000;i++);}}/*****************************************************************************名称:main()*功能:根据表DISP_TAB来控制LED显示。****************************************************************************/intmain(void){uint8i;PINSEL1=0x00000000;IO1DIR=LEDCON;while(1){for(i=0;i<8;i++){IO1CLR=DISP_TAB[i];DelayNS(10);IO1SET=0xffffffff;}}return(0);//端口配置为GPIO//配置LED控制I/O方向为输出
//输出LED显示数据//延时//全部输出高电平
}/******************************************************************************
篇六:gpio实验报告
GPIO实验
------10903070313_某某
一、实验目的:
⑴:熟悉ARM开发板基本组成电路,并通过配套教材熟悉ARM芯片特性。了解ADS1.2软件使用,并会用该软件编译调试开发板。⑵:了解H—JTAG软件原理,利用教材中提供的LED测试程序,完成实验。⑶:进一步掌握ADS1.2集成开发环境的使用方法。⑷:掌握LPC2000专用工程模板的添加和使用。⑸:能够在EasyARM2100教学实验开发平台上运行第一个程序(无操作系统)。⑹:熟悉LPC2000系列ARM7微控制器的GPIO控制。⑺:了解应用程序的固化方法。
二、实验内容及原理:
⑴:单LED闪烁使用P0.25的输出功能,控制一个LED闪动。采用灌电流方式驱动LED,即输出地电平时LED点亮。程序首先设置PINSEL0,PINSEL1进行管教连线,然后由IO0DIR设置P0.25口为输出模式,即可通过对IO0SET和IO0CLR寄存器进行口线设置1或置0输出控制。
⑵:单键输入GPIO是一个双向的I/O口,内部无上拉电阻,所以作于键盘输入时,要上拉电阻。进行GPIO输入时,先要设置IODIR使口线为输入方式,然后读取IOPIN的值即可。使用P0016口作按键的输入,每一次有效按键即对LED4进行取反控制。
⑶:多键多LED(选作)KEY1按下LED1取反,......,KEY4按下LED4取反,KEY5按下LED全灭,KEY6按下LED全亮。⑷:模拟SPI数码显示EasyARM2100开发实验板提供了一位静态数码管,由74HC595直接驱动。74HC595是一个串入并出的一位寄存器,三态输出口,可以通过SQH进行级连,支持100MHz时钟频率。通过3个GPIO口模拟对74HC595进行控制,驱动数字数码管显示数字0~F。⑸:LED及数码编码显示
程序驱动数码管循环显示16进制数0~F,并使用LED1~LED4指示当前数值,LED4表示高位(d3),LED1指示低位(d0),点亮为1,熄灭为0。⑹多键及显示组合(选作)KEY1按下数码显示“1”,......,KEY6按下数码显示“6”,同时LED显示数据BCD编码。
三、实验器材
PC机一台,周立功开发板一块(EasyARM2100)
四、实验预习与要求:
(1)认真复习LPC2000系列ARM7微控制器的GPIO控制机制以及LPC2100管脚连接模块等内容。
(2)了解EasyARM2100教学实验开发平台的硬件结构,注意蜂鸣器的相关控制电路。(3)了解EasyARM2100教学实验开发平台上的跳线。(4)仔细阅读附带文档《ADS集成开发环境及仿真器应用》或其它相关资料,了解GPIO
的设置、74HC595时序、逻辑控制方法、LPC2000专用工程模板。
五、程序流程图
⑴:单LED闪烁
⑵:单键输入
⑶:模拟SPI数码显示⑷:LED及数码编码显示
六、实验源程序为(C语言):
⑴:单LED闪烁#include"config.h"#defineLEDCON0x00400000
voidDelayNS(uint32dly){
uint32i;for(;dly>0;dly--)
for(i=0;i<50000;i++);
}intmain(void){
PINSEL0=0x00000000;PINSEL1=0x00000000;
IO0DIR=LEDCON;while(1){
IO0SET=LEDCON;DelayNS(30);IO0CLR=LEDCON;DelayNS(30);}return(0);}⑵:单键输入#include"config.h"#defineLEDCON0x00400000#defineKEY0x00010000
voidWaitKey(void){
uint32i;
while(1){
while((IO0PIN&KEY)!=0);
for(i=0;i<50000;i++);if((IO0PIN&KEY)==0)break;
}while((IO0PIN&KEY)==0)
;}
intmain(void){
PINSEL0=0x00000000;PINSEL1=0x00000000;
IO0DIR=LEDCON;while(1){
IO0SET=LEDCON;WaitKey();IO0CLR=LEDCON;WaitKey();}return(0);}⑶:模拟SPI数码显示#include"config.h"#defineSPI_CS0X20000100
#defineSPI_DATA0x00000040#defineSPI_CLK0x00000010#defineSPI_IOCON(SPI_CS|SPI_DATA|SPI_CLK)
voidDelayNS(uint32dly){
uint32i;for(;dly>0;dly--)
for(i=0;i<50000;i++);}voidHC595_SendDat(uint8dat){
uint8i;IO0CLR=SPI_CS;for(i=0;i<8;i++){
IO0CLR=SPI_CLK;if((dat&0x80)!=0)
IO0SET=SPI_DATA;else
IO0CLR=SPI_DATA;dat<<=1;IO0SET=SPI_CLK;}IO0SET=SPI_CS;}
intmain(void){
Constuint8DISP_TAB[16]={0xC0,0xF9,0xA4,0xB0,0X99,0x82,0xF8,0x80,0x90,0x88,0x83,0x83,0xC6,0xA1,0x86,0x8E};
uint8i;PINSEL0=0x00000000;PINSEL1=0x00000000;IO0DIR=SPI_IOCON;while(1){
for(i=0;i<16;i++){
HC595_SendDat(DISP_TAB[i]);DelayNS(50);}}return(0);}⑷:LED及数码编码显示#include"config.h"
#defineSPI_CS(1<<29)#defineSPI_DATA(1<<6)#defineSPI_CLK(1<<4)#defineBEEP(1<<7)#defineSPI_IOCON(SPI_CS|SPI_DATA|SPI_CLK)#defineLED_IOCON(0x0F<<22)
voidDelayNS(uint32dly){
uint32i;for(;dly>0;dly--)for(i=0;i<50000;i++);}
voidHC595_SendDat(uint8dat){
uint8i;IO0CLR=SPI_CS;for(i=0;i<8;i++){
IO0CLR=SPI_CLK;if((dat&0x80)!=0)IO0SET=SPI_DATA;elseIO0CLR=SPI_DATA;dat<<=1;IO0SET=SPI_CLK;}IO0SET=SPI_CS;}
constuint8DISP_TAB[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
intmain(void){
uint8i;PINSEL0=0x00000000;PINSEL0=0x00000000;
IO0DIR=SPI_IOCON|LED_IOCON|BEEP;while(1){
for(i=0;i<16;i++){
HC595_SendDat(DISP_TAB[i]);IO0SET=0x0F<<22;IO0CLR=i<<22;
IO0CLR=BEEP;DelayNS(50);IO0SET=BEEP;DelayNS(50);}}return(0);}
七、实验步骤:
㈠、找到开发板的芯片及flash
1.计算机并口与开发板JTAG口相连接打开JTAG软件H-JTAGServer在Flasher里面选择autodownload。2.然后点击左上角的放大镜看是否可以找到开发板CPU。3.如果找到CPU,软件界面会出现ARM7字样以及芯片ID号。
4.如果找到CPU,在flashselection里选择LPC2114
5.configuration里设置晶振的频率为11.0592
打开H-Flasher点击check,会出现ARM7相关字样,证明可以找到flash
㈡、编写程序代码仿真并验证结果
打开CodeWarriorforARMDevelopersuite编写相应的代码,测试没有语法错误后仿真并查看运行结果,对比是否与预期的是否相同。如果与结果存在出入,检查源程序是否存在逻辑上的错误,修改并知道实验结果正确。
八、实验结果:
单LED闪烁实验结果:实验电路板上的LED按一定周期快速闪烁。单键输入实验结果:当按下EasyARM2100实验板的第一个按钮时对应的LED灯熄灭,再次按下时又点亮,实现按键取反的效果。模拟SPI数码显示实验结果:程序驱动数字数码管显示数字0~F。LED及数码编码显示实验结果:除了数字数码管显示数字0~F,四个LED灯显示对应的以点亮/熄灭分别代表1/0二进制数,并伴随蜂鸣。经过实验,实验结果与预期结果基本吻合,表示实验成功。
九、实验结论:
通过本次试验在一定程度上,了解H—JTAG软件原理,熟悉了ARM开发板基本组成电路,并通过配套教材熟悉ARM芯片特性以及ADS1.2软件使用,并会用该软件编译调试开发板掌握了LPC2000专用工程模板的添加和使用。在老师的讲解下以及帮助下,能够在EasyARM2100教学实验开发平台上运行第一个程序。并熟悉了LPC2000系列ARM7微控制器的GPIO控制。了解了简单的应用程序的固化方法,并能根据教材提示完成实验。掌握了LPC2000系列ARM7微控制器的GPIO控制机制以及LPC2100管脚连接和模块等内容,了解了EasyARM2100教学实验开发平台的硬件结构,以及教学实验开发平台上的跳线。老师的教学态度很认真,对于实验的的改进方面的建议是,教学时可以照顾下水平低的同学,适当的降慢课程的讲解速度。实验课程,必要时使用一下软件视频教学。
篇七:gpio实验报告
嵌入式gpio实验报告
3.4基于UART的加法器的实现
一、实验目的
自学lm3s9b92的串口通信
学习应用超级终端调试串口
学会应用领域UART有关的库函数
二、实验设备
计算机、LM3S9B92开发板、USBA型公口转回MiniB型5Pin数据线1条
三、实验原理
Stellaris系列ARM的UART具备全然可编程、16C550型串行接口的特性。Stellaris系列ARM所含2至3个UART模块。
该指导书在第一部分的1.2节中说明,该开发板使用了FT芯片实现usb到串口的转换。并设置在芯片的B通道上使用虚拟COM接口(VCP)。虚拟串行端口(VCP)与LM3s9b92上的UART0模块连接。在安装FTDI驱动程序后,windows会分配一个串行通信端口号到VCP通道,并允许windows应用程序(如超级终端)通过USB与LM3s9b92上的UART0进行通信。利用Windows超级终端调试UART的方法
对于该开发板,采用的就是USB交互式的COM端口,无须采用DB9连接器。因此下面传授一下如何利用Windows附带的超级终端去调试UARTUSB。
Windows附件里的“超级终端”是个非常实用的应用程序,可以用来调试电脑的COM串行口,也能很好地支持通过USB虚拟的COM口。以下是超级终端配置COM端口的过程:
四、实验建议
采用超级终端作为外部输入与输出的接口,实现多位数的.相加。即通过UART串口分别输入需要相加的多位数A与B,最后把A和B两个多位数相加的过程和结果,回显给用户。具体实现方法:既可以采用轮询的方式也可以应用中断。
五、实验步骤
1、连接实验设备:使用USBminiB线缆的mini端与开发板ICDI口相连,另一端接到PC机的USB插口上。
2、根据实验建议撰写、调试、运转程序。并建议在代码上附上有关的注解。
#include#include"inc/hw_ints.h"#include"inc/hw_memmap.h"#include"inc/hw_types.h"#include"driverlib/debug.h"#include"driverlib/gpio.h"#include"driverlib/interrupt.h"#include"driverlib/sysctl.h"#include"driverlib/uart.h"#include"grlib/grlib.h"#include"drivers/kitronix320x240x16_ssd_8bit.h"#include"drivers/set_pinout.h"#include"systemInit.h"voiduartInit(void){SysCtlPeriEnable(SYSCTL_PERIPH_UART0);//CX600XUART模块SysCtlPeriEnable(SYSCTL_PERIPH_GPIOA);//使能RX/TX所在的GPIO端口GPIOPinTypeUART(GPIO_PORTA_BASE,//配置RX/TX所在管脚为GPIO_PIN_0|GPIO_PIN_1);//UART通话功能UARTConfigSet(UART0_BASE,//配置UART端口,//波特率:UART_CONFIG_WLEN_8|//数据位:8UART_CONFIG_STOP_ONE|//暂停位:1UART_CONFIG_PAR_NONE);//校验位:无UARTEnable(UART0_BASE);//CX600XUART端口
}voiduartPuts(constchar*s){while(*s!=''){UARTCharPut(UART0_BASE,*(s++));}}main(void){charc,a[12];intsum=0,num=0,i;//jtagWait();//防止JTAG失效,重要!clockInit();//时钟初始化:晶振,6MHzuartInit();//UART初始化uartPuts("输出格式m+n=");for(;;){c=UARTCharGet(UART0_BASE);//等待接收字符if(c>='0'&&c<='9')//推论接到的与否为字符{num=num*10+c-'0';//将收到的字符转换为整形储存}elseif(c=='+'){//发送第二个数sum=sum+num;num=0;}elseif(c=='=')//输出
{sum=sum+num;num=0;for(i=0;sum!=0;i++){a[i]=sum%10;sum=(sum-a[i])/10;}for(i--;i>=0;i--){UARTCharPut(UART0_BASE,a[i]+'0');}UARTCharPut(UART0_BASE,'');}if(c=='')//如果遇到回车{UARTCharPut(UART0_BASE,'');//多回显一个换行}}}3、书写实验报告,建议附上程序流程图。六、实验心得比较轮询方式与中断方式
篇八:gpio实验报告
作为一名学生要想在学习的道路上一路高歌战胜各科学习困难在考试中脱颖而出就必须树立远大的理想制定明确的学习目标和切实可行的计划在日常学习中勤奋苦学孜孜不倦持之以恒面对学习中上的挫折百折不挠勇往直前并掌握一套正确的学习方法科学合理地安排好自己的时间只有这样才能到达成功的理想彼岸
实验二ARM体系结构及GPIO
一实验目的
了解并掌握ARM7芯片的体系结构,能熟练的对个端口进行操作,熟悉嵌入式系统设计和调试的基本技术。
二实验任务
1熟悉和掌握ADS1.2软件的使用。2利用ARM实验开发平台,了解系统启动流程,端口控制程序,并完成调试工作。
三实验设备
1PC机一台2ARM实验开发板及相关设备一套3ADS1.2开发软件一套
四实验原理ARM体系结构概述
从最初开发到现在,ARM指令集体系结构有了巨大的改进,并在不断完善和发展。为了清楚地表达每个ARM应用实例所使用的指令集,ARM公司定义了5种主要的ARM指令集体系结构版本,以版本号vl—v5表示。(1)版本1(v1)在ARM1中使用,由于只有26位的寻址空间(现已废弃不用)从为商业化,该版本包括;●基本的数据处理指令(不包括乘法);●字节、字和半字加载、存储指令;●分支指令(branch),包括在子程序调用中使用的分支和链接指令;●在操作系统调用中使用的软件中断指令;(2)版本2(v2)仍然只有26位寻址空间(现己废弃不用),但相对版本1增加了以下内容:●乘法和乘加指令;●协处理器支持;●快速中断模式中的两个以上的分组寄存器;●原子性加载存储指令SWP和SWPB(稍后版本中称作v2a);(3)版本3(v3)将寻址范围扩展到32位;先前存储于R15的程序状态信息存储在新的当前程序状态寄存器(CPSR)中,且增加了程序状态保存寄存器(SPSR),以便出现异常时保存CPSR中的内容。此外,版本3还增加了两种处理器模式,以便在操作系统代码中有效地使用数据中止(DataAbort)、取值中止(PrefetchAbort)和未定义指令异常(UndefinedInstructionException)。相应地,版本3指令集发生如下改变:●增加了两个指令MRS和MSR允许访问新的CPSR和SPSR寄存器;●修改过去用于异常返回指令的功能,以便继续使用。(4)版本4(v4)不再强制要求与以前的版本兼容以支持26位体系结构,清楚地指明哪个指令会引起未定义指令异常发生。版本4在版本3的基础上增加了如下内容:●半字加载/存储指令;
●字节和半字的加载和符号扩展(sign-extend)指令;●在T变量中,转换到Thumb状态的指令;●使用用户(User)模式寄存器的新的特权处理器模式。(5)版本5(v5)在版本4的基础上,对现有指令的定义进行了必要的修正,对版本4体系结构进行了扩展,并增加了指令,具体如下:●改进在T变量中ARM/Thumb状态之间的切换效率;●允许非T变量和T变量一样,使用相同的代码生成技术;●增加讨“数的导零指令,允许更有效的整数除法和中断优先程序;●增加软件断点指令;●增加更多可选择的指令以方便协处理器设计者:●对乘法指令如何设置标志进行了严格的定义。
数据类型
ARM处理器支持下列数据类型:●Byte字节,8位●Halfword半字,16位(半宁必须和2字节边界对准)●Word字,32位(字必须与4字节边界对准)
ARM微处理器的工作状态
ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:●ARM状态:此时处理器执行32位的字对齐的ARM指令;●Thumb状态,:此时处理器执行16位的、半字对齐的Thumb指令。THUMB指令是ARM指令的子集,它们之间可以相互调用,只要遵循一定的调用规则。当操作数寄存器的状态位(位0)为1时,可以采用执行BX指令的方法,使微处理器从ARM状态切换到Thumb状态。当处理器处于Thumb状态时发生异常(如IRQ、FIQ、Undef、Abort、SWI等),则异常处理返回时,自动切换到Thumb状态。当操作数寄存器的状态位为0时,执行BX指令时可以使微处理器从Thumb状态切换到ARM状态。在处理器进行异常处理时,把PC指针放入异常模式链接寄存器中,并从异常向量地址开始执行程序,也可以使处理器切换到ARM状态。
处理器模式
ARM体系结构支持7种处理器模式,软件控制、外部中断和异常处理都可以使模式发生改变。●用户模式(usr):ARM处理器正常的程序执行状态;●快速中断模式(fiq):用于高速数据传输或通道处理;●普通中断模式(irq):用于通用的中断处理;●服务模式(svc):操作系统使用的保护模式;●中止模式(abt):用于虚拟存储及存储保护;●未定义模式(und):当出现未定义指令终止时进入该模式;●系统模式(sys):运行具有特权的操作系统任务;除了用户模式之外的其他6种处理器模式称为特权模式。特权模式下,程序可以访问所有的系统资源,也可以任意地进行处理器模式的切换。特权模式中,除系统模式外,其他5种模式又称为异常模式。大多数的用户程序运行在用户模式下,此时,应用程序不能够访问一些受操作系统保护的系统资源,应用程序也不能直接进行处理器模式的切换。用户模式下,
当需要进行处理器模式切换时,应用程序可以产生异常处理,在异常处理中进行处理器模式的切换。处理器模式可以通过软件进行切换,也可以通过外部中断或者异常处理过程进行切换。当应用程序发生异常中断时,处理器进入相应的异常模式。在每一种异常模式下都有一组寄存器,供相应的异常处理程序使用,这样就可以保证在进入异常模式时,用户模式下的寄存器不被破坏。系统模式并不是通过异常进入的,它和用户模式具有完全一样的寄存器。但是系统模式属于特权模式,可以访问所有的系统资源,也可以直接进行处理器模式切换。它主要供操作系统任务使用。通常操作系统的任务需要访问所有的系统资源,同时该任务仍然使用用户模式的寄存器组,而不是使用异常模式下相应的寄存器组,这样可以保证当异常中断发生时任务状态不被破坏。
ARM微处理器的存储器格式
ARM体系结构所支持的最大寻址空间为4GB。将存储器看作是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字数据,从第四个字节到第七个字节放置第二个存储的字数据,依次排列。ARM体系结构可以用两种方法存储字数据,称之为大端格式和小端格式。大端格式:在这种格式中,字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中。小端格式:与大端存储格式相反,在小端存储格式中,低地址中存放的是字数据的低字节,高地址存放的是字数据的高字节。ARM微处理器的指令长度可以是32位(在ARM状态下)也可以为16位,(在Thumb状态下)。ARM微处理器中支持字节(8位)、半字(16位)、字(32位)三种数据类型,其中,字需要4字节对齐(地址的低两位为0)、半字需要2字节对齐(地址的最低位为0)
寄存器
ARM处理器共具有37个32位的寄存器:31个通用寄存器,6个状态寄存器,但并不是所有的寄存器都能总是被访问到。在某一时刻寄存器能否访问,由处理器的当前工作状态和操作模式决定。根据微处理器内核的当前工作状态,可分别访问ARM状态寄存器集和Thumb状态寄存器集。ARM状态寄存器集包含16个可以直接访问的寄存器:R0~R15。除R15以外,其余的寄存器为通用寄存器,可用于存放地址或数据值。R16寄存器是当前程序状态寄存器CPSR,用于保存状态信息。详细的说明如下:
ARM状态下的寄存器组织
通用寄存器:通用寄存器包括R0~R15,可分为三类●未分组寄存器R0~R7在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,他们未被系统用作特殊的用途,因此,在中断或异常处理进行运行模式转换时,由于不同的处理器运行模式均使用相同的物理寄存器,可能会造成寄存器中数据的破坏,这一点在进行程序设计时应引起注意。●分组寄存器R8~R14每次所访问的物理寄存器与处理器当前的运行模式有关。当使用fiq模式时,访问寄存器R8_fiq~R12_fiq;当使用除fiq模式以外的其他模式时,访问寄存器R8_usr~R12_usr。R13、R14:每个寄存器对应6个不同的物理寄存器。其中的一个是用户模式与系统模式共用,另外5个物理寄存器对应于其他5种不同的运行模式。采用以下的记号来区分不同的物
理寄存器:R13_<mode>R14_<mode>mode为以下几种之一:usr、fiq、irq、svc、abt、und。R13在ARM指令中常用作堆栈指针,但这只是一种习惯用法,用户也可使用其他的寄存器作为堆栈指针。在Thumb指令集中,某些指令强制性的要求使用R13作为堆栈指针。由于处理器的每种运行模式均有自己独立的物理寄存器R13,在初始化部分,都要初始化每种模式下的R13,这样,当程序的运行进入异常模式时,可以将需要保护的寄存器放入R13所指向的堆栈,而当程序从异常模式返回时,则从对应的堆栈中恢复。R14也称作子程序连接寄存器或连接寄存器LR。当执行BL子程序调用指令时,可以从R14中得到R15(程序计数器PC)的备份。其他情况下,R14用作通用寄存器。在每一种运行模式下,都可用R14保存子程序的返回地址,当用BL或BLX指令调用子程序时,将PC的当前值拷贝给R14,执行完子程序后,又将R14的值拷贝回PC,即可完成子程序的调用返回。●程序计数器PC(R15)R15虽然也可用作通用寄存器,但一般不这么使用,因为对R15的使用有一些特殊的限制,当违反了这些限制时,程序的执行结果是未知的。由于ARM体系结构采用了多级流水线技术,对于ARM指令集而言,PC总是指向当前指令的下两条指令的地址,即PC的值为当前指令的地址值加8个字节。程序状态寄存器(CPSR/SPSR)寄存器R16用作CPSR(当前程序状态寄存器),CPSR可在任何运行模式下被访问,它包括条件标志位、中断禁止位、当前处理器模式标志位,以及其他一些相关的控制和状态位。每一种运行模式下又都有一个专用的物理状态寄存器,称为SPSR(备份的程序状态寄存器),异常发生时,SPSR用于保存CPSR的值,从异常退出时则可由SPSR来恢复CPSR。由于用户模式和系统模式不属于异常模式,他们没有SPSR,当在这两种模式下访问SPSR,结果是未知的。程序状态寄存器的每一位的安排:
N、Z、C、V均为条件码标志位。它们的内容可被算术或逻辑运算的结果所改变,并且可以决定某条指令是否被执行。在ARM状态下,绝大多数的指令都是有条件执行的。在Thumb状态下,仅有分支指令是有条件执行的。标志位的含义如下:
程序状态寄存器的控制位:状态寄存器的低8位(I、F、T和M[4:0])称为控制位,发生异常时这些位可以被改变。如果处理器运行特权模式,这些位也可以由程序修改。中断禁止位I、F:●I=1禁止IRQ中断;●F=1禁止FIQ中断。T标志位:该位反映处理器的运行状态ARM体系结构v5及以上的版本的T系列处理器,当该位为1时,程序运行于Thumb状态,否则运行于ARM状态。ARM体系结构v5及以上的版本的非T系列处理器,当该位为1时,执行下一条指令以引起为定义的指令异常;当该位为0时,表示运行于ARM状态。运行模式位M[4:0]是模式位,决定处理器的运行模式
ARM状态下的寄存器组织如下图:
Thumb状态下的寄存器组织
Thumb状态下的寄存器集是ARM状态下寄存器集的一个子集,程序可以直接访问8个通用寄存器(R7~R0)、程序计数器(PC)、堆栈指针(SP)、连接寄存器(LR)和CPSR。同样,每一种特权模式下都有一组SP、LR和SPSR。Thumb状态下的寄存器如下图:
Thumb状态下的寄存器与ARM状态下的寄存器关系如下:●Thumb状态下和ARM状态下的R0~R7是相同的。●Thumb状态下和ARM状态下的CPSR和所有的SPSR是相同的。●Thumb状态下的SP对应于ARM状态下的R13。
●Thumb状态下的LR对应于ARM状态下的R14。●Thumb状态下的程序计数器对应于ARM状态下R15。
I/O端口
S3C44B0具有71个多功能输入/输出引脚,它们包含在7组端口中:●2个9位输入/输出端口(端口E和F);●2个8位输入/输出端口(端口D和G);●1个16位输入/输出端口(端口C);●1个10位输入/输出端口(端口A);●1个11位输入/输出端口(端口B);
端口配置寄存器(PCONA~PCONG)
由于多数端口都是多功能口,因此,需要用“端口配置寄存器PCONn”来设置每个引脚工作在哪一个功能模式下。
端口数据寄存器(PDATA~PDATG)
当端口被设置为输出脚时,输出数据的方法就是将数据写入到PDATAn的相应位中;当端口被设置为输入脚时,读入数据的方法就是将PDATAn中的相应位读出。
端口上拉设置寄存器(PUPC~PUPG)
端口上拉寄存器用来设定PC~PG这机组端口是否具有内部上拉。当PUPn的对应位为0时,该引脚上的上拉使能,当为1时,该引脚上的上拉禁能。关于端口的其它内容请查看芯片手册第八章。
五实验内容
1通过设置相应的端口寄存器来控制LED灯,相关资料请查阅芯片手册。
六实验报告
篇九:gpio实验报告
GPIO实验报告一、实验步骤1、先把板子连到电脑上,然后打开设备管理器,查看EMULATOR是否连接完毕,若连接上了,设置仿真目标板。2、打开CCS的软件,点击Debug中的connect,然后将点开菜单栏project的open,选择所要打开的工程文件,在.c格式的文档中修改程序,程序修改完毕后点击菜单栏的“编译文件”,在下边的方框里查看编译结果,若有错误,双击错误项,指针会自动跳回程序中的错误行进行修改。若编译没有错误,再点击“增量构建”。3、点击File中的“loadprogramme”,跳出一个窗口,选择以.out结尾的文件,编辑的程序输出到板子上。4、测“CLOCKOUT”输出波形。先根据原理图找出CLOCKOUT的管脚,然后将示波器连到此管脚,同时另一个夹子接地。观察示波器上的波形。二、实验程序/*ThisisanexampleforgpioofC5509/*----------------------------------------------------------------------------*/#include<csl.h>#include<csl_pll.h>#include<csl_chip.h>#include<csl_gpio.h>*/
voiddelay();/*锁相环的设置*/PLL_ConfigmyConfig={0,//IAI:thePLLlocksusingthesameprocessthatwasunderway//beforetheidlemodewasentered1,//IOB:IfthePLLindicatesabreakinthephaselock,//itswitchestoitsbypassmodeandrestartsthePLLphase-locking//sequence1,//PLLmultiplyvalue;multiply24times倍频数,用于设置仿真器CPU的工作频率。1//Divideby2PLLdividevalue;itcanbeeitherPLLdividevalue//(whenPLLisenabled),orBypass-modedividevalue//(PLLinbypassmode,ifPLLmultiplyvalueissetto1)};main(){/*初始化CSL库*/CSL_init();/*设置系统的运行速度为144MHz*///PLL_config(&myConfig);/*确定方向为输出*///ioportunsignedint*IODIR;//IODIR=(unsignedint*)0x3400;
//////
ioportunsignedint*IODATA;IODATA=(unsignedint*)0x3401;*clkmd=0x21f3;//晶振12Hz,9Hz=0x21f3;//144MHz=0x2613GPIO_RSET(IODIR,0xFF);while(1){GPIO_RSET(IODATA,0x0c0);delay();GPIO_RSET(IODATA,0x80);delay();}
}voiddelay()//设置延迟程序,修改j,k的循环次数,可改变延迟时间{Uint32j=0,k=0;for(j=0;j<0x30;j++){for(k=0;k<0xfff;k++){}}}/******************************************************************************\*Endofgpio.c\******************************************************************************/三、实验结果
四、实验收获在此次试验中,我学会了怎么设置CPU的工作频率以及修改延迟时间。但对老师后来讲得设置断点不是很清楚,老师也对我们组进行了批评。我们组在老师检查以后,重新认识并学习了断点的相关知识和如何设置断点,实现单步程序运行。断点设置步骤如下:断点设置要求:不要设在跳转语句上不要设在块重复语句的倒数1、2条语句上若断点设置在for循环语句上,双击语句左边灰色区域,出现一个红色圆圈,然后点击左边工具栏的第一个图标,实现单步执行。点击菜单栏View中的WatchWindow,可在下方的方框里查看变量变化。