gpio控制实验实验报告11篇

发布时间:2022-12-25 17:36:02 来源:网友投稿

gpio控制实验实验报告11篇gpio控制实验实验报告  gpio口被用作第二功能时的配置情况即并非作为通用io口使用比如像片上外设的的iic模块对应的数据线和时钟线使用时候要外接上拉电阻 下面是小编为大家整理的gpio控制实验实验报告11篇,供大家参考。

gpio控制实验实验报告11篇

篇一:gpio控制实验实验报告

  gpio口被用作第二功能时的配置情况即并非作为通用io口使用比如像片上外设的的iic模块对应的数据线和时钟线使用时候要外接上拉电阻

  齐鲁理工学院实验报告课程名称:

  微型计算机控制技术时间:

  20XX年.10.22地点:

  D203班级:

  20XX年级机制3班姓名:

  杨帆学号:

  *****4实验项目名称:

  GPIO端口实验实验指导教师:

  赵保华实验成绩评定:

  一、实验目的ü通过实验掌握ARM芯片使用GPIO端口。

  ü掌握GPIO端口控制LED显示。

  ü掌握系统时钟的配置。

  ü掌握库开发原理及方法。

  二、实验设备ü通过实验掌握ARM芯片使用GPIO端口。

  ü掌握GPIO端口控制LED显示。

  ü掌握系统时钟的配置。

  ü掌握库开发原理及方法。

  三、实验内容控制信盈达Cotex-M3实验平台的发光二极管LED1、LED2、LED3、LED4,使它们有规律的点亮,具体顺序如下:LED1亮-LED2亮-LED3亮-LED4亮,如此反复。

  四、实验原理如图所示,LED1-4分别与PB5PE5PA5PA6相连,通过PB5PE5PA5PA6引脚的高低电平来控制发光二极管的亮与灭。当这几个管脚输出高电平的时候发光二极管熄灭,反之,发光二极管点亮。

  GPIO管脚的每个位可以由软件配置成如下几种模式:

  1.输入浮空:浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。做按键,是要读取电平状态,这种配置抗干扰性差,但是是处理信号方面一般是配置这个功能。如测试一个波形,这时候可以配置这个功能。

  2.输入上拉:经过电阻连接到VCC,能让IO口在没有连接信号时候有一个确定的高电平,并且也能从VCC处获得比较大的驱动电流。

  3.输入下拉:经过电阻连接到GND,能让IO口在没有连接信号时候有一个确定的低电平。

  4.模拟输入:芯片内部外设专用功能(ADC,DAC对应的IO口功能)5.开漏输出:IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。

  6.推挽式输出:IO输出0接GND,IO输出1接VCC,拥有比较强的驱动能力,如接led,或三极管。

  7.推挽式复用功能:GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用),比如像片上外设的的UART,SPI模块对应的输出数据线。UART发送线就是复用功能,并且是输出方向。

  8.开漏复用功能:GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用),比如像片上外设的的IIC模块对应的数据线和时钟线,使用时候要外接上拉电阻。如IIC总线的数据线和时钟线就要配置这种模式。

  我们使用IO口输出一个电压值来控制LED灯亮灭,因此选择推挽输出工作模式。

  五、软件程序设计1)配置系统时钟RCC,打开PB、PE、PA端时钟。

  2)配置GPIO口PB5、PE5、PA5、PA6为推挽输出工作模式。

  3)IO口输出低电平控制灯亮,输出高电平控制灯灭。

  参考程序:

  main.c参考程序:

  #include“stm32f10x.h“//芯片寄存器映射头文件#include“led.h“//自己写的led头文件staticvoidDelay(u32i);//延时函数的声明/*主函数*/intmain(void){GPIO_LED_Init();//LED灯初始化while(1){GPIO_ResetBits(GPIOB,GPIO_Pin_5);//PB5管脚置0,LED1亮Delay(*****);//延时GPIO_SetBits(GPIOB,GPIO_Pin_5);//PB5管脚置1,LED1灭Delay(*****);//延时GPIO_ResetBits(GPIOE,GPIO_Pin_5);//PE5管脚置0,LED2亮Delay(*****);//延时GPIO_SetBits(GPIOE,GPIO_Pin_5);//PE5管脚置1,LED2灭Delay(*****);GPIO_ResetBits(GPIOA,GPIO_Pin_5);Delay(*****);GPIO_SetBits(GPIOA,GPIO_Pin_5);Delay(*****);GPIO_ResetBits(GPIOA,GPIO_Pin_6);Delay(*****);GPIO_SetBits(GPIOA,GPIO_Pin_6);Delay(*****);}}/*延时函数*/staticvoidDelay(u32i){for(;ii--);}led.c参考程序:

  /****************************************************函数名:GPIO_LED_Init形参:无返回值:无函数功能:对4个LED灯进行初始化,并且关闭所有的led灯****************************************************/#include“stm32f10x_gpio.h“voidGPIO_LED_Init(void){GPIO_InitTypeDefGPIO_InitStructure;//对GPIOB口的时钟打开RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);//把IO口配置为输出模式,输出速度50MhzGPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//设置管脚GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5;GPIO_Init(GPIOB,GPIO_InitStructure);//根据以上配置初始化PB5GPIO_Init(GPIOE,GPIO_InitStructure);//根据以上配置初始化PE5GPIO_InitStructure.GPIO_Pin=GPIO_Pin_5|GPIO_Pin_6;GPIO_Init(GPIOA,GPIO_InitStructure);//根据以上配置初始化PA5和PA6//关闭四个led灯GPIO_SetBits(GPIOB,GPIO_Pin_5);//PB5管脚置1,LED1灭GPIO_SetBits(GPIOE,GPIO_Pin_5);//PE5管脚置1,LED2灭GPIO_SetBits(GPIOA,GPIO_Pin_5);GPIO_SetBits(GPIOA,GPIO_Pin_6);}led.h参考程序:

  #ifndef_LED_H_#define_LED_H_voidGPIO_LED_Init(void);//声明LED灯初始化函数#endif六、实验操作步骤1.准备实验环境使用STlink仿真器连接信盈达STM32实验平台的主板JTAG接口;

  使用实验平台附带的USB数据线,连接实验平台主板和PC。

  2.打开开发环境,新建工程1)新建工程,步骤参照附录1。

  2)新建两个文件led.c(写函数的定义)和led.h(写函数的声明),保存到工程目录user/API,并且把led.c添加到工程3)完成程序编写,编译链接工程。

  打开Flash菜单Download,将程序下载到开发板的Flash中,按RESET键复位,观察LED的情况。

  七、实验结果:

  八、心得体会通过本次实验,我学到了很多知识,通过实验掌握ARM芯片使用GPIO端口。掌握GPIO端口控制LED显示,掌握系统时钟的配置,掌握库开发原理及方法,感谢老师的指导和同学的帮助

篇二:gpio控制实验实验报告

  实验一GPIO输入输出控制实验

  GPIO输入输出控制实验1

  1.

  实验目的

  (1)进一步掌握ADS1.2集成开发环境的使用方法。(2)掌握LPC2200专用工程模板的添加和使用。(3)掌握EasyJTAG仿真器的安装和使用。(4)能够在MagicARM2200教学实验开发平台上运行第一个程序(无操作系统)。(5)熟悉LPC2000系列ARM7微控制器的GPIO控制。(6)了解应用程序的固化方法。

  2.

  实验设备

  硬件:PC机

  一台

  MagicARM2200教学实验开发平台一套

  软件:Windows98/XP/2000系统,ADS1.2集成开发环境

  3.

  实验内容

  控制MagicARM2200教学实验开发平台上的蜂鸣器报警。先使用片外RAM(MT45W4MW16芯片)进行调试,调试通过后将程序固化到片外FLASH(SST39VF160芯片),然后脱机运行。

  4.

  实验预习要求

  (1)认真复习LPC2000系列ARM7微控制器的GPIO控制机制以及LPC2000管脚连接模块等内容。

  (2)了解MagicARM2200教学实验开发平台的硬件结构,注意蜂鸣器的相关控制电路。(3)了解MagicARM2200教学实验开发平台上的跳线。(4)仔细阅读附带文档《ADS集成开发环境及仿真器应用》或其它相关资料,了解ADS1.2集成开发环境、LPC2200专用工程模板、EasyJTAG仿真器的应用。

  5.

  实验原理

  如图1.1所示,MagicARM2200实验箱主板上蜂鸣器使用PNP三极管Q12进行驱动控制,当控制P0.7输出低电平时,Q12导通,蜂鸣器蜂鸣;当控制P0.7输出高电平时,Q12截止,蜂鸣器停止蜂鸣;若把JP22断开,Q12截止,蜂鸣器停止蜂鸣。

  由于P0.7口与(LPC2200的)SPI功能部件的SSEL0复用,所以此引脚上接一上拉电阻R86,防止在使用硬件SPI总线时由于SSEL0引脚悬空导致SPI操作出错。

  J1_Port

  VDD3.3

  R8610K

  P0_7

  JP22

  R871K

  VDD3.3R8818

  Q128550

  B1

  BUZZER

  图错误!文档中没有指定样式的文字。.1蜂鸣器控制电路

  6.

  实验步骤

  (1)连接EasyJTAG仿真器和MagicARM2200教学实验开发平台,然后安装EasyJTAG仿真器的驱动程序(若已经安装过,此步省略)。

  (2)为ADS1.2增加LPC2200专用工程模板(若已增加过,此步省略)。(3)启动ADS1.2,使用ARMExecutableImageforMaigcARM2200工程模板建立一个工程BeepCon_C。(4)在user组中的main.c中编写主程序代码。(5)选用DebugInExram生成目标,如图1.2所示,然后编译连接工程。

  图1.2选择生成目标

  (6)将MagicARM2200教学实验开发平台上的跳线器JP22短接,JP20断开,见图。

  VDD3.3

  VDD3.3

  LPC2290

  P0_7

  R8610K

  JP22

  R871K

  R8818

  Q128550

  B1

  BUZZER

  图1.3蜂鸣器连接电路

  (7)选择【Project】->【Debug】,启动AXD进行JTAG仿真调试(需要正确设置仿真器,参考产品光盘附带文档《ADS集成开发环境及仿真器应用》)。

  注意:使用DebugInExram生成目标时,使用片外RAM进行仿真调试,建议AXD设置HaltMode选择Haltprogram,AuxOption选择EraseFlashwhenneed。在AXD中设置仿真器参考如图所示。

  图1.4片外RAM调试的仿真器设置

  (8)若JTAG连接出错,或AXD主窗口没有显示Startup.S源程序,按文档《ADS集成开发环境及仿真器应用》介绍的方法进行处理。

  (9)全速运行程序,程序将会在main.c的主函数中停止(因为main函数起始处默认设置有断点)。

  (10)单击ContextVariable图标按钮(或者选择【ProcessorViews】->【Variables】)打开变量观察窗口,通过此窗口可以观察局部变量和全局变量。选择【SystemViews】->【DebuggerInternals】即可打开LPC2000系列ARM7微控制器的片内外设寄存器窗口。

  (11)可以单步运行程序,可以设置/取消断点,或者全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器控制是否正确。

  (12)当仿真调试通过后关闭AXD,在ADS1.2集成开发环境中选用RelOutChip生成目标,然后编译连接工程。

  (13)将MagicARM2200教学实验开发平台上的JP22跳线短接,JP20跳线断开。(14)选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。此时EasyJTAG仿真器将会把程序下载到片外FLASH上(需要正确设置仿真器,见图。具体参考文档《ADS集成开发环境及仿真器应用》)。

  图1.5片外FLASH调试的仿真器设置

  (15)按MagicARM2200教学实验开发平台上的RST复位键,观察程序是否能脱机运行。

  (16)实验结束后,在AXD中设置仿真器为片外RAM调试方式的设置,以便于后面实验的正确操作。

  7.

  实验参考程序

  GPIO输出控制实验1的参考程序见程序清单1.1。

  程序清单1.1GPIO输出控制实验1参考程序

  /*****************************************************************************文件名:main.c

  *功能:蜂鸣器控制。对蜂鸣器B1进行控制,采用软件延时方法。

  *

  使用I/O口直接控制,采用灌电流方式。

  *说明:将跳线器JP22短接,JP20断开。

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

  #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)

  {

  ;

  //设置管脚连接模块连接至GPIO

  ;

  //设置BEEPCONIO口为输出方式

  while(1){

  DelayNS(15);

  DelayNS(15);}

  ;//BEEPCON=0蜂鸣器发声//延时

  ;//BEEPCON=1蜂鸣器不发声//延时

  return(0);}

  8.

  思考

  (1)(基础实验)在实验参考程序中,如何控制蜂鸣器报警的速度?(2)(基础实验)如果把程序中的“#defineBEEPCON0x00000080”改成“#defineBEEPCON0x000000C0”,请问以下语句

  IO0DIR=BEEPCON;IO0CLR=BEEPCON;能否使蜂鸣器发声?为什么?

  GPIO输入输出控制实验2

  1.

  实验目的

  熟悉LPC2000系列ARM7微控制器的GPIO控制。

  2.

  实验设备

  硬件:PC机

  一台

  MagicARM2200教学实验开发平台一套

  软件:Windows98/XP/2000系统,ADS1.2集成开发环境

  3.

  实验内容

  使用GPIO口控制8个LED跑马灯显示。

  4.

  实验预习要求

  (1)认真复习GPIO控制机制以及LPC2000管脚连接模块内容。(2)了解MagicARM2200教学实验开发平台的硬件结构,注意键盘及LED显示电路。(3)仔细阅读文档《ADS集成开发环境及仿真器应用》或其它相关资料,了解ADS1.2集成开发环境、LPC2200专用工程模板、EasyJTAG仿真器的应用。

  5.

  实验原理

  如图1.6所示,MagicARM2200实验箱主板上还有8个独立的发光二极管LED1~LED8,分别由P2.16~P2.23输出控制,控制I/O输出高电平时对应的LED熄灭,输出低电平时对应的LED点亮,电路如图错误!文档中没有指定样式的文字。.所示。一般LED的压降约

  为1.7V,LED点亮时的电流ILED

  VDDVLEDR

  3.31.70.0034(A),即3.4mA,而LPC2290470

  的IOL(I/O低电平输出电流)最小值为4mA,可以使用I/O直接驱动。这部分电路可以通过JP23跳线断开与LPC2200的连接。

  VDD3.3

  LED1QA

  LED2QB

  LED3QC

  LED4QD

  VDD3.3

  LED5QE

  LED6QF

  LED7QG

  LED8QH

  QAR89QBR90QCR91QDR92QER93QFR94QGR95QHR96

  JP23

  470

  1

  470

  3

  470

  5

  470

  7

  470

  9

  470

  11

  470

  13

  470

  15

  2

  P2_16

  4

  P2_17

  6

  P2_18

  8

  P2_19

  10P2_20

  12P2_21

  14P2_22

  16P2_23

  J1_Port

  图错误!文档中没有指定样式的文字。.6独立LED控制电路

  6.

  实验步骤

  (1)启动ADS1.2,使用ARMExecutableImageforMaigcARM2200工程模板建立一个工程LEDCon_C。

  (2)在user组中的main.c中编写主程序代码。(3)选用DebugInExram生成目标,然后编译连接工程。

  (4)将MagicARM2200教学实验开发平台上跳线器JP23全部短接,JP15跳线全部断开,见图1.

  (5)选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。(6)单步运行程序,通过LED1~LED8的显示判断输出是否正确。全速运行程序,观察LED1~LED8的显示。

  VDD3.3

  LED1QA

  LED2QB

  LED3QC

  LED4QD

  VDD3.3

  LED5QE

  LED6QF

  LED7QG

  LED8QH

  QAR89QBR90QCR91QDR92QER93QFR94QGR95QHR96

  JP23

  4701

  2

  4703

  4

  4705

  6

  4707

  8

  4709

  10

  47011

  12

  47013

  14

  47015

  16

  LPC2290

  P2_16P2_17P2_18P2_19P2_20P2_21P2_22P2_23

  图1.7LED连接电路

  7.

  实验参考程序

  GPIO输出控制实验2的参考程序见程序清单1.。

  程序清单1.2GPIO输出控制实验2参考程序

  /*****************************************************************************文件名:main.c

  *功能:LED显示控制。

  *

  通过GPIO直接控制8个LED产生跑马灯效果

  *说明:将跳线JP23全部短接,JP15跳线全部断开。

  *

  这个警告可忽略,C2892E:signedconstantoverflow

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

  #include"config.h"

  #define#define#define#define#define#define#define#define#define

  LED11<<16LED21<<17LED31<<18LED41<<19LED51<<20LED61<<21LED71<<22LED81<<23LEDCON0x00ff0000

  //P2.16//P2.17//P2.18//P2.19//P2.20//P2.21//P2.22//P2.23

  constuint32DISP_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;

  /*PINSEL2使用启动代码的默认配置,切勿任意配置PINSEL2,否则总线会受到干扰*/

  IO2DIR=LEDCON;

  //配置LED控制I/O方向

  while(1){

  for(i=0;i<8;i++){

  IO2CLR=DISP_TAB[i];DelayNS(10);IO2SET=0xffffffff;}}

  //输出LED显示数据//延时

  return(0);}

  8.

  思考

  (3)(基础实验)如何实现来回跑马灯?请给出实现代码。

  GPIO输入输出控制实验3

  9.实验目的

  能够使用GPIO的输入模式读取开关信号。

  10.实验设备

  硬件:PC机

  一台

  MagicARM2200教学实验开发平台一套

  软件:Windows98/XP/2000系统,ADS1.2集成开发环境

  11.实验内容

  读取P0.20口上的电平值,然后将读到的值输出控制蜂鸣器。

  12.实验预习要求

  (1)认真复习GPIO控制机制及LPC2000管脚连接模块内容。(2)了解MagicARM2200教学实验开发平台的硬件结构,注意蜂鸣器控制电路及JP22跳线器的说明,注意按键了解电路。(3)仔细文档《ADS集成开发环境及仿真器应用》或其它相关资料,了解ADS1.2集成开发环境、LPC2200专用工程模板、EasyJTAG仿真器的应用。

  13.实验原理

  P0.20口设置为输入模式时,口线内部无上拉电阻,当与按键或跳线器连接使用时需要外接上拉电阻,防止口线悬空。GPIO输入实验原理图如图错误!文档中没有指定样式的文字。.所示。

  VDD3.3

  LPC2290

  P0.20_EINT3

  R18TP2110KKEYIN

  JP9

  KEY1

  图错误!文档中没有指定样式的文字。.1按键连接电路

  14.实验步骤

  (1)启动ADS1.2,使用ARMExecutableImageforMaigcARM2200工程模板建立一个工程ReadPin_C。

  (2)在user组中的main.c中编写主程序代码。(3)选用DebugInExram生成目标,然后编译连接工程。(4)将MagicARM2200教学实验开发平台上的跳线器JP9、JP22短接,JP20断开,见图错误!文档中没有指定样式的文字。.。(5)选择【Project】->【Debug】,启动AXD进行JTAG仿真调试。(6)单步运行程序,先按下KEY1,观察IO0PIN寄存器的值,然后释放KEY1,观察IO0PIN寄存器的值。全速运行程序,按下按键,控制蜂鸣器的蜂鸣。说明:可以通过Watch窗口观察寄存器的值。选择【ProcessorViews】->【Watch】打开Watch窗口,在Watch窗口内点击鼠标右键,选择AddWatch…项添加变量,如图错误!

  文档中没有指定样式的文字。.1所示。

  图错误!文档中没有指定样式的文字。.1Watch窗口

  在AddWatch窗口中的Expression项输入*((unsignedlong*)0xE0028000),然后回车,如图错误!文档中没有指定样式的文字。.所示,然后选择AddToView按钮,即可在Watch窗口观察IO0PIN寄存器(IO0PIN寄存器的地址0xE0028000)。

  图错误!文档中没有指定样式的文字。.3AddWatch对话框

  在Watch窗口中选择一个观察变量,按Del键即可删除此观察变量。注意:有些寄存器不能读出显示或读操作会影响到其它寄存器的值。

  15.实验参考程序GPIO输入实验的参考程序见程序清单错误!文档中没有指定样式的文字。.2。

  程序清单错误!文档中没有指定样式的文字。.2GPIO输入实验参考程序

  /*****************************************************************************文件名:main.c

  *功能:读取I/O引脚值,并输出控制蜂鸣器。

  *

  使用I/O口输入方式对P0.20口进行扫描,对蜂鸣器控制。

  *说明:将跳线器JP9、JP22短接,JP20断开。按下KEY1观察BUZZER效果。

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

  #include"config.h"

  #defineBEEPCON#defineKEY

  1<<71<<20

  //P0.7引脚控制B1,低电平蜂鸣//定义按键

  /*****************************************************************************名称:main()*功能:读取P0.20口的值,并输出控制蜂鸣器B1。****************************************************************************/intmain(void){uint32i;

  PINSEL0=0x00000000;IO0DIR=BEEPCON;while(1){

  if((IO0PIN&KEY)!=0){

  IO0SET=BEEPCON;}else{

  IO0CLR=BEEPCON;}for(i=0;i<1000;i++);}return(0);}

  //设置管脚连接GPIO//设置B1控制口为输出,其它I/O为输入

  16.思考

  (4)请问在什么时候蜂鸣器会发声?

  (5)如果想做一个蜂鸣器的开关(即按下键蜂鸣器就一直响,再按下蜂鸣器就不响。。。。),程序又将如何设计?

篇三:gpio控制实验实验报告

  DSP实验应用GPIO控制

  实验一gpio控制一、实验1程序功能的基本原理:通过对gpio的设置来实现对实验板上led(3d0)的亮灭的控制具体可分为对dpll和gpio的控制.(1)时钟电路a)c5509的时钟电路由一个DPLL和一个时钟模式寄存器clkmd组成b)在clkmd的控制下,dpll对外部输入时钟进行分频、倍频和锁相,为cpu及外设提供工作时钟clkinpindpllclkoutpinclkmdclkmdpin(2)时钟模式寄存器clkmd相关控制词的含义:iai:退出省电状态后如何进行跟踪,是继续省电状态之前的设定还是重新进行整个跟踪锁定IOB:失锁时时钟电路的动作,是继续输出时钟信号还是切换到旁路模式pllmult:锁定模式下的倍频次数plldiv:锁定模式下的分频次数(3)Gpio-c5509由八个独立的可编程Gpio引脚(IO0~io7)组成——每个Gpio引脚的方向控制(输入或输出)由方向寄存器IOIR设置-各个gpio管脚上的输入/输出电平由寄存器iodata控制2.芯片支持库(1)DSP芯片上外围设备的类型和应用越来越复杂(2)提供一组标准的方法(apis:函数、数据类型、宏)用于配置、控制和管理dsp片上外设(3)用户无需编写配置和控制芯片外围设备所需的定义和代码。(4)大多数CSL库函数都是用C语言编写的,代码的大小和速度都得到了优化(5)csl库是可裁剪的:即只有被使用的csl模块才会包含进应用程序中(6)CSL库是可扩展的:每个片上外围设备的API彼此独立。添加新的API对其他片上外围设备没有影响二.实验所用到的硬件资源和在片外围电路硬件资源

  CPU、led、蜂鸣器、电阻器、电容器等片上外围电路时钟发生器、通用输入/输出口等三.参数设置CPU时钟:pllmultiplyvalue=24;plldividevalue=1;clkout=pllmult/(plldiv+1)*clkin=24/2*12m=144mhz小灯亮或灭的时间:n*13*16*65536/(144*10^6)=1.1s(n为指令周期)四.实验流程图五、项目#包括#包括#includevoiddelay();/*锁相环的设置*/pll_uu配置MyConfig={

  0,//iai:theplllocksusingthesameprocessthatwasunderway//beforetheidlemodewasentered1,//iob:ifthepllindicatesabreakinthephaselock,

  //其开关关闭旁路模式并启动锁相//sequence24,//pllmultiplyvalue;24倍1//divideby2plldividevalue;itcanbeeitherplldividevalue//(当PLILISEnabled)或YPassModeDivideValue//(PLLINBYPASSMode,如果PLLmultiplyValuesSetTo1)};main(){/*初始化csl库*/csl_uinit();/*设置系统的运行速度为144mhz*/pll_uuConfig(&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);延迟();gpio_rset(iodata,0x000);delay();

  }}voiddelay(){uint32j=0,k=0;对于(j=0;j<0xc0;j++){for(k=0;k<0xffff;k++)}}{}

篇四:gpio控制实验实验报告

  DSP实验应用GPIO控制

  实验一GPIO控制一.实验基本原理1.程序功能:通过对GPIO的设置来实现对实验板上LED(3D0)的亮灭的控制具体可分为对DPLL和GPIO的控制.(1)时钟电路a)C5509的时钟电路由一个DPLL和一个时钟模式寄存器CLKMD组成b)在CLKMD的控制下,DPLL对外部输入时钟进行分频、倍频和锁相,为CPU及外设提供工作时钟CLKINpinDPLLCLKOUTpinCLKMDCLKMDpin(2)时钟模式寄存器CLKMD

  相关控制字含义:IAI:退出省电状态后如何进行跟踪,是继续省电状态之前的设定还是重新进行整个跟踪锁定IOB:发生失锁时时钟电路的动作,是继续输出时钟信号还是切换到旁路模式PLLMULT:锁定模式下的倍频次数PLLDIV:锁定模式下的分频次数(3)GPIO-C5509有8个相互独立的可编程GPIO管脚(IO0~IO7)构成-各个GPIO管脚的方向控制(输入或输出)由方向寄存器IODIR设定-各个GPIO管脚上的输入/输出电平由寄存器IODATA控制2.芯片支持库(1)DSP片上外设种类及其应用日趋复杂(2)提供一组标准的方法(APIs:函数、数据类型、宏)用于配置、控制和管理DSP片上外设(3)免除用户编写配置和控制片上外设所必需的定义和代码(4)CSL库函数大多数是用C语言编写的,并已对代码的大小和速度进行了优化(5)CSL库是可裁剪的:即只有被使用的CSL模块才会包含进应用程序中(6)CSL库是可扩展的:每个片上外设的API相互独立,增加新的API,对其他片上外设没有影响

  二.实验所用到的硬件资源和在片外围电路

  硬件资源

  CPU、LED、蜂鸣器、电阻、电容等

  在片外围电路

  时钟发生器、通用输入/输出口等三.参数设置

  CPU时钟:PLLmultiplyvalue=24;PLLdividevalue=1;

  CLKOUT=PLLMULT/(PLLDIV+1)*CLKIN

  =24/2*12M=144MHZ

  小灯亮或灭的时间:N*13*16*65536/(144*10^6)=1.1s(N为指令周期)四.实验流程图

  五.程序#include#include

  #includevoiddelay();/*锁相环的设置*/

  PLL_ConfigmyConfig

  ={

  0,//IAI:thePLLlocksusingthesameprocessthatwasunderway//beforetheidlemodewasentered1,//IOB:IfthePLLindicatesabreakinthephaselock,

  //itswitchestoitsbypassmodeandrestartsthePLLphase-locking

  //sequence

  24,//PLLmultiplyvalue;multiply24times

  1value

  //Divideby2PLLdividevalue;itcanbeeitherPLLdivide

  //(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,0x000);delay();}}voiddelay(){Uint32j=0,k=0;for(j=0;j<0xc0;j++){for(k=0;k<0xffff;k++)}}{}

  感谢您的阅读,祝您生活愉快。

篇五:gpio控制实验实验报告

  计算机类课程实验报告(单片机(STM32F103)实验)

  课程名称:单片机实验

  班级:17计算机一班

  *名:**

  学号:*********

  实验二

  实验名称GPIO控制实验实验日期2019.11.18实验成绩

  实验目的、要求及原理(给出本次实验所涉及并要求掌握的知识点及实验内容具体描述)

  一、实验目的:

  1、学习STM32F1系列处理器GPIO口的使用方法。

  2、学习用Keil软件开发ARM程序方法和步骤。

  3、理解基于ARMCortex-M3内核的实验开发平台的管脚链接及原理。

  二、实验要求:

  1、了解STM32F1系列处理器GPIO口的功能原理;

  2、在Keil中设计ARM程序,实现对流水灯的控制;

  3、下载到实验平台,并成功运行。

  4、附加要求:实现LED的各种不同移动、闪烁效果

  三、实验原理

  1、STM32F1系列处理器GPIO口的原理

  GPIOx_CRL端口配置低寄存器

  GPIOx_CRH端口配置高寄存器

  GPIOx_IDR端口输入数据寄存器

  GPIOx_ODR端口输出数据寄存器

  GPIOx_BSRR端口位设置端口位设置/清除寄存器

  GPIOx_BRR端口位清除寄存器

  GPIOx_LCKR端口配置锁定寄存器

  2、实验电路原理图

  本章用到的硬件只有LED(LED0和LED1)。其电路在ALIENTEK精英版STM32F103上默认是已经连接好了的。LED0接PB5,LED1接PE5。

  四、操作步骤

  1、启动Keil新建工程。

  2、新建C源文件,添加到工程,编写C文件。

  3、配置生成目标。

  4、编译连接工程。

  5、FlyMcu烧录orJTAG调试。

  实验环境(列出本次实验所使用的平台和相关软件)

  地点:6211

  使用硬件:STM32F1精英版V3开发板

  使用软件:windows7/xp系统,KeilMDK集成开发环境

  调试过程及实验结果(程序源代码截图。详细记录在调试过程中出现的问题及解决方法,截图记录实验执行的结果。)

  1、创建新的工程,新建文件led.c、led.h保存在子文件夹BSP下。然后新建文件mian.c、includes.h和vartypes.h,保存在子文件夹下。然后将了led.c添加到工程管理器BSP分组下,将main.c添加到工程管理器的USER分组下,如下图所示。

  下面依次介绍上述工程中的各个文件,如程序段2-1~程序段2-9所示。:

  程序段2-1文件led.c

  文件led.c是LED灯的驱动文件,包含了两个函数,即LEDInit和LED。程序段2-1中,第3行包括了头文件includes.h;第5~14行为LED_Init函数;第7行分别是打开PB口的PE口的时钟源;第8~9行配置PA5为推免输出并默认输出1;同理,第11~13行配置PE5为推免输出,并使PE2默认输出高。

  第16~31行为LED函数,该函数有两个参数w和s,w取0表示LED0,取1表示LED1;s取值LED_ON,表示相应的灯亮,s取LED_OFF,表示相应的LED灯熄灭。

  程序段2-2文件led.h

  文件led.h是程序段2-1中文件led.c的头文件,本工程中每一个源文件都有一个对应的头文件,用与声明源文件中定义的函数。第3行包括了头文件vartypes.h,因为第9行的函数声明用到了自定义变量类型Int08U和LEDState;第8行声明了LEDInit函数;第9行声明了LED函数。

  程序2-3文件vartypes.h

  文件vartypes.h是用户自定义的变量类型文件。第3~4行和第17行构成预编译处理,由于头文件vartypes.h被工程中的多个源文件包括,使用预编译处理是指令可保证该头文件仅被包括一次。

  程序段2-4文件includes.h

  文件includes.h是工程中总的包括头文件,包括了工程中用到的其余全部头文件,该includes.h头文件被全部用户源文件所包括。第3行包括了系统头文件stm32f10x.h,该文件中宏定义了STM32F103ZET6芯片地全部片内外设地寄存器。第5行包括了头文件vartypes.h,该头文件为用户自定义的变量卷型头文件。第6行包括了扩大文件了led.h,该头文件声明了源文件中led.c中自定义的函数的原型。

  程序段2-5文件main.c

  文件main.c是工程的主程序文件,即包含了程序入口mian函数的文件。上述程序中,第3行包含了头文件includes.h;第5行声明了延时函数Delay;第7~17行为main函数。在main函数中,第9行调用LEDInit函数初始化LED灯的控制,该函数位于led.c中;第9~16行为无限循环体,依次执行LED1亮,LED0灭,延时1s、LED1灭,LED0亮、延时1s。第18~23行为延时函数Delay的函数体,通过for循环实现延时。

  2、文件写好后,尝试编译工程,得到结果如下如所示:

  可以看到没有错误也没有警告。接下来我们就通过FlyMcu软件将代码下载到精英版上看看实际运行的结果。

  运行结果:

  上述两幅图显示,最终程序运行结果为LED0与LED1交替闪烁。

  总结(对实验结果进行分析,问题回答,实验心得体会及改进方法。)

  1、通过本实验所得心得体会

  通过本次实验我进一步加深理解了GPIO口如何进行配置及使用,本在课堂上听的不是太明白的地方,也都通过本次实验,在同学们的帮助下大都能够明白其基本原理。另外,keilMDK软件也能够相对熟练的使用,学到很多,在调试代码中,遇到些许小问题,多半是对书上的内容理解的不够细致所致,结合书本慢慢调试,最后调试成功,运行成功,之前的碎片理解得到整合。

  2、对于老师提出希望改进的地方

  暂无。

篇六:gpio控制实验实验报告

  GPIO实验报告

  齐鲁理工学院实验报告课程名称:微型计算机控制技术时间:20XX年.10.22地点:D203班级:20XX年级机制3班姓名:杨帆学号:*****4实验项目名称:GPIO端口实验实验指导教师:赵保华实验成绩评定:一、实验目的ü通过实验掌握ARM芯片使用GPIO端口。ü掌握GPIO端口控制LED显示。ü掌握系统时钟的配置。ü掌握库开发原理及方法。二、实验设备ü通过实验掌握ARM芯片使用GPIO端口。ü掌握GPIO端口控制LED显示。ü掌握系统时钟的配置。ü掌握库开发原理及方法。三、实验内容控制信盈达Cotex-M3实验平台的发光二极

  1/6

  管LED1、LED2、LED3、LED4,使它们有规律的点亮,具体顺序如下:LED1亮-LED2亮-LED3亮-LED4亮,如此反复。

  四、实验原理如图所示,LED1-4分别与PB5PE5PA5PA6相连,通过PB5PE5PA5PA6引脚的高低电平来控制发光二极管的亮与灭。当这几个管脚输出高电平的时候发光二极管熄灭,反之,发光二极管点亮。

  GPIO管脚的每个位可以由软件配置成如下几种模式:1.输入浮空:浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。做按键,是要读取电平状态,这种配置抗干扰性差,但是是处理信号方面一般是配置这个功能。如测试一个波形,这时候可以配置这个功能。2.输入上拉:经过电阻连接到VCC,能让IO口在没有连接信号时候有一个确定的高电平,并且也能从VCC处获得比较大的驱动电流。3.输入下拉:经过电阻连接到GND,能让IO口在没有连接信号时候有一个确定的低电平。4.模拟输入:芯片内部外设专用功能(ADC,DAC对应的IO口功能)5.开漏输出:IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。6.推挽式输出:IO输出0接GND,IO输出1接VCC,

  2/6

  拥有比较强的驱动能力,如接led,或三极管。7.推挽式复用功能:GPIO口被用作第二功能时的配置情况

  (即并非作为通用IO口使用),比如像片上外设的的UART,SPI模块对应的输出数据线。UART发送线就是复用功能,并且是输出方向。

  8.开漏复用功能:GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用),比如像片上外设的的IIC模块对应的数据线和时钟线,使用时候要外接上拉电阻。如IIC总线的数据线和时钟线就要配置这种模式。

  我们使用IO口输出一个电压值来控制LED灯亮灭,因此选择推挽输出工作模式。

  五、软件程序设计1)配置系统时钟RCC,打开PB、PE、PA端时钟。

  2)配置GPIO口PB5、PE5、PA5、PA6为推挽输出工作模式。3)IO口输出低电平控制灯亮,输出高电平控制灯灭。参考程序:main.c参考程序:#include“stm32f10x.h“//芯片寄存器映射头文件#include“led.h“//自己写的led头文件staticvoidDelay(u32i);//延时函数的声明/*主函数*/intmain(void){GPIO_LED_Init();//LED灯初

  3/6

  始化while(1){GPIO_ResetBits(GPIOB,GPIO_Pin_5);//PB5管脚置

  0,LED1亮Delay(*****);//延时GPIO_SetBits(GPIOB,GPIO_Pin_5);

  //PB5管脚置1,LED1灭Delay(*****);//延时

  GPIO_ResetBits(GPIOE,GPIO_Pin_5);//PE5管脚置0,LED2亮

  Delay(*****);//延时GPIO_SetBits(GPIOE,GPIO_Pin_5);//PE5管脚

  置1,LED2灭Delay(*****);GPIO_ResetBits(GPIOA,GPIO_Pin_5);

  Delay(*****);GPIO_SetBits(GPIOA,GPIO_Pin_5);Delay(*****);

  GPIO_ResetBits(GPIOA,GPIO_Pin_6);

  Delay(*****);

  GPIO_SetBits(GPIOA,GPIO_Pin_6);Delay(*****);}}/*延时函数*/

  staticvoidDelay(u32i){for(;ii--);}led.c参考程序:

  /****************************************************函数名:

  GPIO_LED_Init形参:无返回值:无函数功能:对4个LED灯

  进行初始化,并且关闭所有的led灯

  ****************************************************/#include

  “stm32f10x_gpio.h“voidGPIO_LED_Init(void){GPIO_InitTypeDef

  GPIO_InitStructure;//对GPIOB口的时钟打开

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2P

  eriph_GPIOA|RCC_APB2Periph_GPIOE,ENABLE);//把IO口配置为

  输出模式,输出速度50MhzGPIO_InitStructure.GPIO_Mode=

篇七:gpio控制实验实验报告

  院专年学姓

  系:计算机科学学院业:级:号:名:自动化11级11064029杨胜提刘科

  指导教师:

  2013年

  5月

  8日

  1

  年级专业题目名称实验设计要求

  11级自动化

  班级

  11级自动化一班

  学号姓名

  11064029杨胜提

  实验一、GPIO实验

  控制EduKit-M3实验平台的发光二极管LED1、LED2、LED3、LED4,使它们有规律的点亮,具体顺序如下:LED1亮->LED2亮->LED3亮->LED4亮,如此反复,当按下EduKit-M3实验平台上的Key按钮时,灯全部熄灭,2秒钟后发光二极管全部点亮,再过一秒钟后返回被中断前的状态,有规律的依次点亮。

  1、硬件电路设计

  在EduKit-M3实验平台上,LED1、LED2、LED3、LED4分别与PC6、PC7、PC8、PC9相连,按键Key与PB9相连。

  2、软件程序设计

  (1)配置PB口第9个引脚作为外部中断,下降延触发;(2)读取端口数据输出寄存器GPIOC_ODR[15:0]的值,因为C口[9:6]位和四个LED灯连通。(3)初始化时,LED依次点亮,当按下Key键时产生中断;(4)中断服务子程序内容:灯全部熄灭,2秒钟后发光二极管全部点亮,再过1秒钟后中断返回。整个工程包含3个源文件:STM32F10x.s、stm32f10x_it.c和main.c,其中STM32F10x.s为启动代码,所有中断服务子程序均在stm32f10x_it.c中,其它函数则在main.c中。

  实验设计思路

  2

  实验步骤与结果分析

  运行过程(1)使用KeiluVision3通过ULINK2仿真器连接EduKit-M3实验平台,打开实验例程目录GPIO_TEST子目录下的GPIO.Uv2例程,编译链接工程;(2)选择软件调试模式,点击MDK的Debug菜单,选择Start/StopDebugSession项或Ctrl+F5键,在逻辑分析仪中添加GPIOC_ODR.6、GPIOC_ODR.7、GPIOC_ODR.8、GPIOC_ODR.9,点击Run按钮即可在逻辑分析仪中看到如图7-11;(3)选择硬件调试模式,选择Start/StopDebugSession项或Ctrl+F5键,下载程序并运行,观察LED灯的变化情况;当程序运行在while循环体内时,按Key键,程序进入中断服务子程序EXTI9_5_IRQHandler(),单步运行,观察LED的变化情况。(4)退出Debug模式,打开Flash菜单>Download,将程序下载到EduKit-M3实验平台的Flash中,按RESET键复位,观察LED灯的情况,正常情况应如下。LED灯状态1LED1LED2亮灭灭亮灭灭灭灭灭灭亮亮LED灯状态2LED1LED2亮灭亮亮亮亮亮亮灭灭亮亮说LED3灭灭亮灭灭亮LED4灭灭灭亮灭亮明

  程序正常运行,发光二极管依次点亮

  外部信号输入,发生中断,执行中断处理程序

  说LED3灭灭亮亮灭亮LED4灭灭灭亮灭亮

  明

  程序正常运行,发光二极管依次点亮

  外部信号输入,发生中断,执行中断处理程序

  3

  软件程序设计

  1、配置PB口第9个引脚作为外部中断,下降延触发;/*ConfigurePB9asinputfloating(EXTILine9)*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_9;//引脚选择GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;//输入模式选择GPIO_Init(GPIOB,&GPIO_InitStructure);2、读取端口数据输出寄存器GPIOC_ODR[15:0]的值,因为C口[9:6]位和四个LED灯连通。方法一:/*ConfigurePC.asOutputpush-pull*/GPIO_InitStructure.GPIO_Pin=GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9;//与LED灯连通的引脚选择GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;//设置输出引脚的速度GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//设置输出引脚的模式为推挽输出模式GPIO_Init(GPIOC,&GPIO_InitStructure);方法二:利用端口配置低寄存器(GPIOx-CRL)(x=A..E)和端口配置高寄存器(GPIOx-CRH)(x=A..E)GPIOC_CRL=0xcc444444;GPIOC_CRH=0x444444cc;

  主要程序代码分析

  3、初始化时,LED依次点亮,当按下Key键时产生中断;/*ConfigureEXTILine9togenerateaninterruptonfallingedge*/EXTI_InitStructure.EXTI_Line=EXTI_Line9;EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;

  4

  EXTI_InitStructure.EXTI_LineCmd=ENABLE;EXTI_Init(&EXTI_InitStructure);4、LED依次点亮的子程序for(;;){GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9);GPIO_SetBits(GPIOC,GPIO_Pin_6);算法1

  GPIOC->ODR&=0xfffffc4f;置底

  //1

  高16位保留,全为F,底16位相应置高或

  /*Delay(800);GPIOC->ODR&=0xfffffc0f;GPIOC->ODR|=0x00000cc0;//2Delay(800);GPIOC->ODR&=0xfffffc0f;GPIOC->ODR|=0x00000dc0;//3Delay(800);GPIOC->ODR&=0xfffffc0f;GPIOC->ODR|=0x00000fc0;//4Delay(800);算法2GPIO_ResetBits(GPIOC,GPIO_Pin_6);//使Pin_6置低Delay(800);GPIO_SetBits(GPIOC,GPIO_Pin_6);//使Pin_6置高Delay(100);GPIO_ResetBits(GPIOC,GPIO_Pin_7);Delay(800);GPIO_SetBits(GPIOC,GPIO_Pin_7);Delay(100);GPIO_ResetBits(GPIOC,GPIO_Pin_8);Delay(800);GPIO_SetBits(GPIOC,GPIO_Pin_8);Delay(100);GPIO_ResetBits(GPIOC,GPIO_Pin_9);Delay(800);

  5

  GPIO_SetBits(GPIOC,GPIO_Pin_9);Delay(100);}//

  使用这两个函数对引脚进行配置。

  (写不完时,可调整表结构。)

  6

  (这部分内容要手写)心得体会

  成绩评定

  教师签名:年月日

  7

篇八:gpio控制实验实验报告

  实验五GPIO输出控制实验

  1.实验目的:

  ①.掌握DeviceARM2410专用工程模板的使用;②.掌握WigglerJtag仿真器的安装和使用;③.能够在MagicARM2410实验箱上运行第一程序(无操作系统);④.熟悉S3C2410处理器的I/O配置及GPIO输出控制;⑤.熟悉嵌入式系统开发流程。

  2.实验设备

  ①.硬件:PC机一台(要求有并口)MagicARM2410教学实验开发平台②.软件:Window98/XP/2000系统ADS1.2集成开发环境H-JTAG一套

  3.实验内容

  控制MagicARM2410实验箱上的LED1~LED4显示及蜂鸣器报警。先使用片外SDRAM(HY57V561620芯片)进行调试,调试通过后将程序固化到片外NORFLASH(SST39VF1601芯片),脱机运行程序。4.

  实验预习要求

  (1)仔细阅读S3C2410A的GPIO模块说明。(2)了解MagicARM2410实验箱的硬件结构,注意独立LED及蜂鸣器控制电路。(3)了解ADS1.2集成开发环境、DeviceARM2410专用工程模板、EasyJTAG-H仿真器的应用。

  5.

  实验原理

  S3C2410A具有117个通用I/O口,分为A~H等8个端口,由于每个I/O都有第两个功能,甚至第三功能,所以需要通过设置GPxCON寄存器来选择GPx口I/O的功能,其中x可以为A、B、C、D、E、F、G、H,表示相应的I/O端口。当I/O设置为GPIO输出模式(Output模式)时,可以通过写GPxDAT控制相应I/O口输出高电平或低电平。GPxDAT为1的位对应I/O输出高电平,为0的位对应I/O输出低电平。

  ⊙如何在MagicARM2410实验箱上运行第一个程序?具体操作步骤如下:(1)添加DeviceARM2410专用工程模板。(2)连接EasyJTAG-H仿真器和MagicARM2410实验箱。将EasyJTAG-H仿真器的25针接口通过并口延长线与PC机的并口连接,将EasyJTAG-H仿真器的20针接口通

  过连接电缆接到MagicARM2410实验箱的J29上,打开实验箱电源。(3)EasyJTAG-H仿真器的安装与应用。请同学们自己修改JTAGPORT端日输入输出地址修改(地址可以从“我的电脑”——“管理”——“串口并口”——“LPT”属性获得),此处正确设置,必须保证执行程序全过程可以正确地检测到内核ARM920T。(4)用工程模板建立第一个工程。使用DeviceARM2410专用工程模板建立工程(比如ARMExecutableImageforDeviceARM2410工程模板),然后在src组中的main.c中编写程序代码。(5)编译链接工程,若有错误,则修改程序,然后再次编译。(6)仿真调试第一个工程正确设置MagicARM2410实验箱上的跳线。(7)启动AXD进行仿真调试。

  备注说明:(掌握★)(1)添加专用工程模板DeviceARM2410专用工程模板在前面介绍新建立工程时,我们已经接触了ADS1.2提供的几个标准工程模板,使用各个模板建立的工程,它们

  的各项设置均有不同之处,方便生成不同结构的代码,如ARM可执行映象(生成ARM指令的代码)或Thumb可执行映象(生成Thumb指令的代码),或Thumb、ARM交织映象(生成Thumb、ARM指令交织的代码)。针对MagicARM2410实验箱,我们定义了2个工程模板,由于这2个工程模板是以DeviceARM2410核心板为基础,所以称之为DeviceARM2410专用工程模板。模板中包含的设置信息有Flash起始地址0x00000000、SDRAM起始地址0x30000000(大小为64MB)、编译连接选项及编译优化级别等等;模板中包含了S3C2410A处理器的启动文件,包括StartUP.S、Target.c文件;模板中还包含了S3C2410A处理器的头文件S3C2410.h,串口软件包uart.c、LCD驱动软件包lcddrive.c等文件。为ADS1.2增加DeviceARM2410专用工程模板将“MagicARM2410Projectmodule”目录下的所有文件和目录拷贝到“<ADS1.2安装目录>\Stationery\”即可,操作如下图所示。这个步骤只需1次,以后就可以直接使用工程模板了。

  加载新的专业模板前:

  按照介绍的方法加载新的专业模板:

  DeviceARM2410专用工程模板说明如下:ARMExecutableImageforDeviceARM2410:无操作系统时所有C代码均编译成ARM指令的工程模板。ARMExecutableImageforDeviceARM2410(UCOSII):所有C代码均编译为ARM指令的µC/OS-II工程模板。用户选择相应的工程模板建立工程,工程有3个生成目标(targetsystem):DebugRel、Release、Debug,它们的配置如下表所示。工程模板已经将相应的编译参数设置好,用户直接选择使用即可。

  (2)连接EasyJTAG-H仿真器和MagicARM2410实验箱。将EasyJTAG-H仿真器的25针接口通过并口延长线与PC机的并口连接,将EasyJTAG-H仿真器的20针接口通过连接电缆接到MagicARM2410实验箱的J29上,打开实验箱电源。

  (3)EasyJTAG-H仿真器的安装与应用。MagicARM2410实验箱配套的EasyJTAG-H仿真器,支持ADS1.2集成开发环境,支持单步、全速及断点等调试功能。仿真器采用ARM公司提出的标准20脚JTAG仿真调试接口,与计算机连接采用标准25针并口(即打印机口),仿真器外观如下图所示。

  安装EasyJTAG-H仿真器

  要使用EasyJTAG-H仿真器来调试ARM处理器,除了ADS1.2集成开发环境外,还需要安装一个ARM调试代理,推荐使用H-JTAG软件,H-JTAG软件的特点如下:支持ARM7/ARM9,支持自动检测和手动指定内核;使用RDI接口,支持SDT2.51、ADS1.2、REALVIEW

  和IAR集成开发环境;支持2个硬件断点或数量不限的软件断点;支持ARM/Thumb模式;支持LittleEndian&BIGEndian模式;支持Semihosting调试;

  首先,用鼠标双击H-JTAG软件的安装文件H-JTAGV0.4.exe,如图所示,即可启动H-JTAG安装界面,如图所示,按照提示操作完成安装(与其他软件安装操作的方法基本一致)。安装完毕后,Windows的桌面将会有H-JTAG快捷方式图标。

  接着,将EasyJTAG-H仿真器的25针接口通过并口延长线与PC机的并口LPT1连接,先将EasyJTAG-H仿真器的20针接口通过连接电缆接到MagicARM2410实验箱主板的J29上,再给MagicARM2410实验箱供电。然后点击Windows操作系统的【开始】->【程序】->【H-JTAGV0.2】->【H-JTAG】启动H-JTAG,或双击桌面“H-JTAG”快捷方式启动。H-JTAG会自动检测ARM内核,如果JTAG连接正确将会在H-JTAG主窗口中显示S3C2410A处理器的内核ARM920T,如下图所示。

  因此实验采用JTAG仿真调试,所以必须正确连接并且可以探测到实验箱的内核,同时整个实验过程中,此软件必须全程打开并且能够连接或探测到内核。说明:在进行JTAG仿真调试时,不要关闭H-JTAG软件(可以关闭H-JTAG主窗口,但不能选择【File】->【Exit】菜单);用户可以在【Settings】菜单设置JTAG真器类型、使用的并口和指定ARM内核,通常使用默认设置即可;用户可以通过【Operations】->【DetectTarget】重新检测ARM内核。

  如果出现下面情况,说明硬件连接错误,或者实验箱没有打开电源,以及可能出现实验箱的并口出错问题无法连

  接。

  使用EasyJTAG-H仿真器将计算机并口与EasyJTAG-H仿真器连接,将仿真器JTAG口接头插入MagicARM2410实验箱主板的J29上,通过AXD软件的设置即可进行JTAG仿真调试,具体操作如下。首先,启动H-JTAG软件,检测到正确的ARM内核。接着,启动AXD调试环境,打开【Options】->【ConfigureTarget...】,弹出ChooseTarget窗口,如图所示。点击“ADD”添加仿真器的驱动程序,在添加文件窗口选择如C:\ProgramFiles\H-JTAGV0.2目录下的H-JTAG.dll,点击“打开”按钮。在ChooseTarget窗口中选择H-JTAG项,点击“OK”按钮即可。

  然后,将初始化文件ARM2410.txt(在MagicARM2410产品光盘中)复制到ADS1.2安装目录的bin目录下,在AXD中打开【Options】->【ConfigureInterface】菜单,在弹出的ConfigureInterface窗口中选择“Sessionfileoptions”页,选中“RunConfigurationScript”项,然后单击“Browse...”命令按钮去选择(ADS安装目录bin目录下的)ARM2410.txt文件,点击“确定”按钮,再关闭AXD。这样,每次启动AXD时,在加载调试程序到目标板之前,AXD会先执行ARM2410.txt文件中的初始化命令,对目标板进行初始化(如系统时钟、SDRAM控制器等)。

  最后,在ADS1.2的CodeWarriorIDE中建立用户的工程并编写代码,编译连接通过后,点击工程窗口中的“Debug”按钮(或按快捷键F5),即可启动AXD进行仿真调试。说明:点击Windows系统的【开始】->【程序】->【ARMDeveloperSuitev1.2】->【AXDDebugger】可以直接运行AXD软件。注意:若在添加仿真器驱动程序窗口中没有显示DLL

  文件,请设置Windows文件浏览窗口的“文件夹选项(O)...”,将查看页中的“隐藏文件”项选用“显示所有文件”。

  6.实验步骤:

  ①.为ADS1.2增加DeviceARM2410专用工程模板;②.连接WigglerJTAG仿真器和MagicARM2410实验箱,然后安装WigglerJTAG仿真器,并且打开H-JTAG,同时要求可以正确检测到嵌入式微处理器内核ARM920T;③.启动ADS1.2,使用ARMExecutableImageforDeviceARM2410工程模板建立一个工程LEDCON;④.在src组中main.c中编写实验代码;⑤.选用DebugRel生成目标,如下图所示,然后编译链接工程;

  设置输出文件相关参数:

  ⑥.将MagicARM2410实验箱上的蜂鸣器跳线JP9短

  接(带上帽子),将启动方式选择跳线JP8短接(NORFLASH启动),然后按RST键复位系统;⑦.选择[Project]_>[Debug],启动AXD调试器进行JTAG仿真调试(需要正确设置仿真器);⑧.如果JTAG连接出错,或AXD主窗口没有显示Startup.s源程序,需要解决此问题(可能的原因是实验箱是否上电、连接是否正确、再次设置程序调试方式等);⑨.全速运行程序,

  第一次全速运行,主要执行的工作是编译链接,同时将源代码下载到相应的SDRAM中;

  第二次全速运行,蜂鸣器会响一声,程序将在实验箱上执行,同时观测实验箱上方四盏LED灯的亮灭情况实验结果:(具体实验效果请参照实验指导中的视频资源)

  本次实验的开发过程正如下图所示:

  ⑩.要求同学们了解嵌入式开发的流程与方法,同时要求学生在熟悉源代码的基础之上,对其进行相应的修改,以达到不同的GPIO口输出控制实验效果(灯闪烁方式或闪烁周期或间隔)

篇九: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控制实验实验报告

  《嵌入式系统原理与应用》实验报告

  实验序号:01学号XXX姓实验项目名称:GPIO输入输出控制实验1名XXXXX专业、班实验时间

  11计算机科学与技术2013-3-22

  实验地点

  实验楼1#416指导教师

  一、实验目的1.掌握LPC2200专用工程模板的使用;2.掌握Proteus仿真软件的安装和使用;3.熟悉LPC2000系列ARM7微控制器的GPIO控制。二、实验设备(环境)及要求硬件:PC机;软件:PC机操作系统windowsXP,ADS1.2集成开发环境,Proteus软件。三、实验内容与步骤实验内容:编写程序配置LPC2138的P0.2,P0.5为GPIO功能,并P0.2驱动LED灯,P0.5外接按键,实现按下按键,使LED灯闪烁的效果。四、实验结果与数据处理1.实验效果图

  1

  2.关键代码展示

  #include"config.h"intmain(void){//addusersourcecodeuint32i;PINSEL0&=0xFFFFFFCF;//setpin0.2tobeGPIOPINSEL0&=0xFFFFF3FF;//setpin0.5tobeGPIOIO0DIR|=0x00000004;while(1){if((IO0PIN&0x00000020)==0)IO0SET=0x00000004;elseIO0CLR=0x00000004;for(i=0;i<10000;i++);}return0;}

  3.关键代码的说明

  程序开始

  2

  设置P0.2和P0.5为GPIO功能

  将P0.2设置为输出

  判断按钮(P0.5)是否按下

  否

  是

  led灯亮led灯不亮

  程序结束

  五、分析与讨论第一次接触这个画图,一不小心老师出现连线问题,只好重头来做,细心是很重要的。还有重要的一点就是要‘与’或者‘或’的时候没搞好。六、教师评语

  成绩

  签名:日期:

  3

篇十一:gpio控制实验实验报告

P>  每个片上外设的api相互独立增加新的api对其他片上外设没有影响实验所用到的硬件资源和在片外围电路硬件资源cpuled蜂鸣器电阻电容等在片外围电路时钟发生器通用输入输出口等参数设置cpu时钟

  实验一GPIO控制

  一.实验基本原理1.程序功能:通过对GPIO的设置来实现对实验板上LED(3D0)的亮灭的控制具体可分为对DPLL和GPIO的控制.

  (1)时钟电路

  a)C5509的时钟电路由一个DPLL和一个时钟模式寄存器CLKMD组成b)在CLKMD的控制下,DPLL对外部输入时钟进行分频、倍频和锁相,为CPU及外设提供工作时钟

  CLKINpin

  DPLLCLKOUTpin

  CLKMDCLKMDpin

  (2)时钟模式寄存器CLKMD

  相关控制字含义:IAI:退出省电状态后如何进行跟踪,是继续省电状态之前的设定还是重新进行整个跟踪锁定IOB:发生失锁时时钟电路的动作,是继续输出时钟信号还是切换到旁路模式

  PLLMULT:锁定模式下的倍频次数PLLDIV:锁定模式下的分频次数

  (3)GPIO

  -C5509有8个相互独立的可编程GPIO管脚(IO0~IO7)构成-各个GPIO管脚的方向控制(输入或输出)由方向寄存器IODIR设定-各个GPIO管脚上的输入/输出电平由寄存器IODATA控制2.芯片支持库(1)DSP片上外设种类及其应用日趋复杂(2)提供一组标准的方法(APIs:函数、数据类型、宏)用于配置、控制和管理DSP片上外设(3)免除用户编写配置和控制片上外设所必需的定义和代码(4)CSL库函数大多数是用C语言编写的,并已对代码的大小和速度进行了优化(5)CSL库是可裁剪的:即只有被使用的CSL模块才会包含进应用程序中(6)CSL库是可扩展的:每个片上外设的API相互独立,增加新的API,对其他片上外设没有影响二.实验所用到的硬件资源和在片外围电路硬件资源CPU、LED、蜂鸣器、电阻、电容等在片外围电路

  时钟发生器、通用输入/输出口等三.参数设置CPU时钟:PLLmultiplyvalue=24;PLLdividevalue=1;CLKOUT=PLLMULT/(PLLDIV+1)*CLKIN=24/2*12M=144MHZ小灯亮或灭的时间:N*13*16*65536/(144*10^6)=1.1s(N为指令周期)四.实验流程图

  五.程序#include<csl_pll.h>#include<csl_chip.h>

  #include<csl_gpio.h>voiddelay();/*锁相环的设置*/PLL_ConfigmyConfig0,={

  //IAI:thePLLlocksusingthesameprocessthatwasunderway//beforetheidlemodewasentered

  1,

  //IOB:IfthePLLindicatesabreakinthephaselock,//itswitchestoitsbypassmodeandrestartsthePLL

  phase-locking//sequence24,1dividevalue//(whenPLLisenabled),orBypass-modedividevalue//(PLLinbypassmode,ifPLLmultiplyvalueissetto1)};main(){/*初始化CSL库*/CSL_init();/*设置系统的运行速度为144MHz*///PLLmultiplyvalue;multiply24times//Divideby2PLLdividevalue;itcanbeeitherPLL

  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,0x000);delay();}}voiddelay(){Uint32j=0,k=0;for(j=0;j<0xc0;j++){for(k=0;k<0xffff;k++)

  {}}}

推荐访问:gpio控制实验实验报告 实验 控制 报告

版权所有:睿智文秘网 2009-2024 未经授权禁止复制或建立镜像[睿智文秘网]所有资源完全免费共享

Powered by 睿智文秘网 © All Rights Reserved.。备案号:辽ICP备09028679号-1