嵌入式系统GPIO 输入输出实验报告
《嵌入式系统原理与应用》实验报告01-GPIO输出控制实验
硬件:PC机;
软件:PC机操作系统windows XP,ADS1.2集成开发环境,Proteus软件。
3、实验内容与步骤
实验内容:
LPC2138外接3个按键,4个LED灯,实现不同流水灯的效果。
4、实验结果与数据处理
1.实验连接图
图1 实验原理图
2.程序代码
#include "config.h"
图3.3:模式3下蓝灯亮起
图3.4:模式3下绿灯亮起
5、分析与讨论
在这一次实验中,我学会了通过教程下载并安装了ADS和Proteus软件,同时根据录播,一步一步地熟悉两个软件的时候,同时也完成了利用仿真实验模拟了GPIO输出控制。初步掌握并理解了Proteus仿真软件的使用,对ARM7有了进一步的了解,为之后的学习打下了基础。
}
void LED_3(void)
{
IO0SET = 0x0001;
delay(1000);
IO0CLR = 0x0001;
IO0SET = 0x0040;
delay(1000);
IO0CLR = 0x0040;
IO0SET = 0x0008;
delay(1000);
IO0CLR = 0x0008;
delay(1000);
IO0CLR = 0x0008;
IO0SET = 0x0040;
delay(1000);
IO0CLR = 0x0040;
IO0SET = 0x0200;
delay(1000);
IO0CLR = 0x0200;
}
void LED_2(void)
{
IO0SET = 0x0200;
嵌入式系统实验报告
嵌入式系统实验报告在本学期的嵌入式系统课程中,我与我的实验伙伴进行了多次实验。
在这篇报告中,我将分享我们实验的过程和结果。
实验一:GPIO控制LED灯在这个实验中,我们使用了Raspberry Pi 3B+开发板和一根杜邦线。
我们在电路板上将一盏LED灯与GPIO引脚连接起来,并编写了一个程序来控制这个引脚的电平状态。
在这个实验中,我们学习了GPIO的基本概念以及如何使用Python编程语言编写GPIO控制程序。
我们成功地让LED灯在不同的时间间隔内闪烁,并且了解了如何使用GPIO.setup()和GPIO.output()函数来控制GPIO引脚的输入和输出。
实验二:串口通信在第二个实验中,我们使用了两个Raspberry Pi 3B+开发板和两根串口线。
我们连接了两个板子的GPIO引脚,使得它们可以通过串口进行通信。
我们使用Python编写了两个程序来进行通信。
一个程序将发送一条消息,另一个程序将接收这个消息并将其打印出来。
通过使用串口通信,我们学会了如何使用Python编写程序来完成数据交换,并掌握了串口通信的基本概念。
实验三:Pi camera模块在第三个实验中,我们使用了Pi camera模块和一个Raspberry Pi 3B+开发板。
我们将摄像头连接到开发板上,并编写了一个程序来捕捉摄像头图像。
我们学习了如何使用Python编程语言来控制Pi camera模块,包括如何设置摄像头参数并如何捕捉静态图像。
我们还尝试了使用OpenCV库来处理图像。
实验四:蓝牙控制在最后一个实验中,我们使用了一个蓝牙透传模块、Raspberry Pi 3B+开发板和一些电路元件。
我们将蓝牙透传模块连接到GPIO引脚,并编写了一个程序来通过蓝牙信号控制电机。
在这个实验中,我们学习了如何使用蓝牙模块进行无线控制。
我们通过使用Python编写控制程序,成功地将蓝牙信号转换成GPIO引脚的电平信号来控制电机。
总结在这个嵌入式系统的实验中,我们学习了许多关于嵌入式系统的知识和技能。
GPIO实验报告(Word最新版)
GPIO实验报告(Word最新版)GPIO(General Purpose Input/Output)是指通用输入输出口,可以连接各种传感器、执行器以及外部设备等,用于实现与外部世界的交互。
GPIO在嵌入式系统中起到了非常重要的作用,本文将介绍基于树莓派的GPIO实验。
实验目的通过本次实验,了解如何在树莓派上使用GPIO控制LED灯的开关,同时熟悉GPIO编程接口的使用方法。
实验器材与环境1.树莓派4B开发板一块2.亮LED灯(红色)一盏3.电阻220欧姆两个4.面包板一个1.树莓派系统:Raspbian Buster with Desktop(full)2.编程语言:Python3.x实验步骤1.硬件连接首先需要将亮LED灯和220欧姆电阻连接到树莓派的GPIO口上。
因为树莓派的GPIO 输出电压是3.3V,而LED灯的电压是2.0V,因此需要使用电阻将电压控制在合适范围内,以免LED灯过亮或过暗。
连接的具体方式如下:将LED灯的正极连接到树莓派的GPIO17口(BCM编码方式下的编号),负极连接到220欧姆电阻上,再将电阻的另一端连接到树莓派的GND口(BCM编码方式下的编号)。
2.软件配置在树莓派的终端窗口中输入以下指令,安装GPIO库和Python语言的GPIO编程接口:```sudo apt-get updatesudo apt-get install python3-gpiozero```安装完成后,我们就可以通过Python代码来控制树莓派的GPIO口了。
打开新的终端窗口,输入以下命令:```sudo nano led.py```其中led.py是我们将要编写的Python程序的文件名,可以自行命名。
在终端窗口中会打开一个文本编辑器,在其中输入以下代码:led = LED(17)while True:led.on()sleep(1)led.off()sleep(1)```代码解释:1.首先从GPIO库中导入LED类和sleep函数;2.定义led变量,将它赋值为LED(17),代表树莓派的GPIO17口控制LED灯的开关;3.在无限循环中,通过led.on()和led.off()来控制LED灯的开和关,同时通过sleep 函数来产生延时效果。
嵌入式系统GPIO 输入输出实验报告
真验四GPIO 输进真验之阳早格格创做一、真验手段1、不妨使用GPIO的输进模式读与开闭旗号.2、掌握GPIO相闭寄存器的用法战树坐.3、掌握用C谈话编写步调统造GPIO.二、真验环境PC机一台ADS 1.2集成开垦环境一套EasyARM2131教教真验仄台一套三、真验真质1.真验通过跳线JP8 连交,步调检测按键KEY1 的状态,统造蜂鸣器BEEP 的鸣喊.按下KEY1,蜂鸣器鸣喊,紧开后停止蜂鸣.(调通真验后,改为KEY3键举止输进).2.当检测到KEY1有按键输进时面明收光二极管LED4并统造蜂鸣器响,硬件延时后闭掉收光管并停止蜂鸣,而后循环那一历程曲到检测按键不输进.(键输进改为键KEY4,收光管改为LED6).3.分离真验三,当按下按键Key1时,开用跑马灯步调并统造蜂鸣器响,硬件延时后闭掉收光管并停止蜂鸣,而后循环那一历程曲到检测按键再次按下.四、真验本理当P0 心用于GPIO输进时(如按键输进),里面无上推电阻,需要加上推电阻,电路图拜睹图 4.2.举止 GPIO 输进真验时,先要树坐IODIR 使交心线成为输进办法,而后读与IOPIN 的值即可.图 4.2按键电路本理图真验通过跳线 JP8 连交,步调检测按键KEY1 的状态,统造蜂鸣器BEEP 的鸣喊.按下KEY1,蜂鸣器鸣喊,紧开后停止蜂鸣.正在那个真验中,需要将按键KEY1 输出心P0.16 设为输出心而蜂鸣器统造心P0.7 树坐为输出心.蜂鸣器电路如图 4.3所示,当跳线JP6 连交蜂鸣器时,P0.7 统造蜂鸣器,矮电通常蜂鸣器鸣喊.LED灯电路如图4.4所示,矮电通常灯明.图 4.3蜂鸣器统造电路图 4.4 LED 统造电路步调最先树坐管足连交寄存器PINSEL0 战PINSEL1,树坐P0.16 为输进,树坐为输出.而后检测端心P0.16 的电仄,对于举止相映的统造,过程图如图 4.5所示,真止步调睹步调浑单 4.1.图 4.5按键输进真验过程图五、真验步调、源代码及调试截止真质1真验步调①开用ADS1.2IDE集成开垦环境,采用ARM ExecutableImage for lpc2131工程模板修坐一个工程BEEP_key.②正在user组里编写主步调代码main.c.③采用DebugInFLASH死成目标,而后编译链交工程.④将EasyARM教教真验开垦仄台上的相映管足跳线短交.⑤采用Project->Debug,开用AXD举止JLINK仿真调试.⑥齐速运止步调,步调将会正在main.c的主函数中停止.如下图所示:⑦单打Context Variable图标按钮(大概者采用ProcessorViews->Variables)挨开变量瞅察窗心,通过此窗心不妨瞅察局部变量战局部变量.采用System Views->Debugger Internals 即可挨开LPC2000系列ARM7微统造器的片内中寄存器窗心.通过变量窗心不妨瞅察变量BEEP、KEY1等的值战ARM7微统造器的片内中寄存器窗心.如下图所示:⑧不妨单步运止步调,先按下Key1,瞅察IO0PIN寄存器的值,而后断开Key1,瞅察IO0PIN寄存器的值.不妨树坐/与消断面;大概者齐速运止步调,停止步调运止,瞅察变量的值,推断蜂鸣器统造是可精确.如下图所示:图4.6 已按下Key1时IO0PIN 的值图4.7 按下Key1时IO0PIN的值由上二图可知,当按下Key1时,IO0PIN寄存器的第16位由1形成0(F形成E),key1与P,按下Key1时,1形成0,寄存器值变更,蜂鸣器响,证明统造是精确的.局面形貌:按下KEY1,蜂鸣器鸣喊,紧开后停止蜂鸣.源代码:#include "config.h"const uint32 BEEP = 1 << 7; // P0.7 统造蜂鸣器const uint32 KEY1 = 1 << 16; // P0.16 连交KEY1(改为KEY3时,只需“const uint32 KEY1 = 1 << 16”改为“const uint32 KEY3 = 1 << 18”,其余稳定.)/***************************************************** **************************************** 函数称呼:main()** 函数功能:GPIO 输进真验尝试.** 检测按键KEY1.KEY1 按下,蜂鸣器蜂鸣,紧开后停止蜂鸣.** 跳线证明:把 JP8 的KEY1 跳线短交,JP11 连交蜂鸣器.****************************************************** *************************************/int main (void){ PINSEL0 = 0x00000000; // 所有管足连交GPIOPINSEL1 = 0x00000000;IO0DIR = BEEP; // 蜂鸣器统造心输出,其余输进while (1){ if ((IO0PIN & KEY1) == 0) IO0CLR = BEEP; // 如果KEY1 按下,蜂鸣器鸣喊else IO0SET = BEEP; // 紧开则停止蜂鸣}return 0;}真质二真验步调①开用ADS1.2IDE集成开垦环境,采用ARM ExecutableImage for lpc2131工程模板修坐一个工程BEEP_key.②正在user组里编写主步调代码main.c.③采用DebugInFLASH死成目标,而后编译链交工程.④将EasyARM教教真验开垦仄台上的相映管足跳线短交.⑤采用Project->Debug,开用AXD举止JLINK仿真调试.⑥齐速运止步调,步调将会正在main.c的主函数中停止.如下图所示:⑦单打Context Variable图标按钮(大概者采用Processor Views->Variables)挨开变量瞅察窗心,通过此窗心不妨瞅察局部变量战局部变量.采用System Views->Debugger Internals 即可挨开LPC2000系列ARM7微统造器的片内中寄存器窗心.通过变量窗心不妨瞅察变量BEEP、KEY1等局部变量、i 等当天变量战ARM7微统造器的片内中寄存器窗心.如下图所示:左图所示为ARM7微统造器的片内寄存器窗心.图4.9 当天变量图4.8 局部变量⑧不妨单步运止步调,先按下Key1,瞅察IO0PIN寄存器的值,而后断开Key1,瞅察IO0PIN寄存器的值.不妨树坐/与消断面;大概者齐速运止步调,停止步调运止,瞅察变量的值,推断蜂鸣器统造是可精确.如下图所示:.图已按下KEY1时IO0PIN的值图 4.11 按下KEY1后IO0PIN的值对于比图 4.10战4.11,创造按下KEY1后,IO0PIN寄存器的第16位由1形成0;而KEY,当按下时输进矮电仄,那证明KEY1的统造是精确的.上图所示为运止“IO0CLR = BEEP”后IO0PIN寄存器的值,与图4.10对于比,创造第8位由1形成0,BEEP对于应P,那证明BEEP的统造是对于的.局面形貌:当按下KEY1时,蜂鸣器鸣响,LED4明;当紧开KEY1后,蜂鸣器静音,LED4灭.源代码如下:#include "config.h"const uint32 BEEP = 1 << 7; // P0.7 统造蜂鸣器const uint32 KEY1 = 1 << 16; // P0.16 连交KEY1(改为KEY4按键时,只需把上句代码改为“const uint32 KEY4=1<<19”,其余稳定)const uint32 LEDS4= 1 << 21; // P1[21]统造LED4,矮电仄面明(改为LED6时,只需把上句代码改为“const uint32 LED6=1<<23”,其余稳定.)/***************************************************** ************************ 函数称呼:main()** 函数功能:GPIO 输进真验尝试.** 检测按键KEY1.KEY1 按下,蜂鸣器蜂鸣,紧开后停止蜂鸣.** 跳线证明:把 JP8 的KEY1 跳线短交,JP11 连交蜂鸣器.****************************************************** *************************************/int main (void){Uint32 i;PINSEL0 = 0x00000000; // 所有管足连交GPIOPINSEL1 = 0x00000000;IO0DIR = BEEP; // 蜂鸣器统造心输出0IO1DIR = LEDS4; // 树坐LED4灯明while (1){ if ((IO0PIN & KEY1) == 0)for(i=0; i<1000; i++); // 硬件延时{IO0CLR = BEEP; // 如果KEY1 按下,蜂鸣器鸣喊IO1DCLR = LEDS4; // 树坐LED4灯明}else{IO0SET = BEEP; // 紧开则停止蜂鸣IO1SET= LEDS4; // 树坐LED4灯灭}for(i=0; i<1000; i++); // 硬件延时}return 0;}真质三真验步调①开用ADS1.2IDE集成开垦环境,采用ARM ExecutableImage for lpc2131工程模板修坐一个工程BEEP_key.②正在user组里编写主步调代码main.c.③采用DebugInFLASH死成目标,而后编译链交工程.④将EasyARM教教真验开垦仄台上的相映管足跳线短交.⑤采用Project->Debug,开用AXD举止JLINK仿真调试.⑥齐速运止步调,步调将会正在main.c的主函数中停止.如下图所示:⑦单打Context Variable图标按钮(大概者采用ProcessorViews->Variables)挨开变量瞅察窗心,通过此窗心不妨瞅察局部变量战局部变量.采用System Views->Debugger Internals 即可挨开LPC2000系列ARM7微统造器的片内中寄存器窗心.通过变量窗心不妨瞅察变量BEEP、KEY1等的值战ARM7微统造器的片内中寄存器窗心.如下图所示:⑧不妨单步运止步调,先按下Key1,瞅察IO0PIN寄存器的值,而后断开Key1,瞅察IO0PIN寄存器的值.不妨树坐/与消断面;大概者齐速运止步调,停止步调运止,瞅察变量的值,推断蜂鸣器统造是可精确.如下图所示:1时IO0PIN的值1时IO0PIN 的值由上二图可知,当按下Key1时,IO0PIN寄存器的第16位由1形成0(F形成E),key1与P,按下Key1时,1形成0,寄存器值变更,蜂鸣器响,流火灯明,证明统造是精确的.局面形貌:当按下按键KEY1时,蜂鸣器鸣响,流火灯明;紧开后,蜂鸣器静音,流火灯灭.源代码如下:#include "config.h"const uint32 BEEP = 1 << 7; // P0.7 统造蜂鸣器const uint32 KEY = 1 << 16; // P0.16 连交KEY1const uint32 LEDS8 = 0xFF << 18; // P1[25:18]统造LED8~LED1,矮电仄面明void DelayNS(uint32 dly){ uint32 i;for(; dly>0; dly--){for(i=0; i<50000; i++);}}/***************************************************** **************************************** 函数称呼:liushuideng()** 函数功能:流火灯隐现真验.** 调试证明:连交跳线 JP12 至LED8~LED1.****************************************************** *************************************//* 流火灯格式,矮电仄面明,注意调用时间用了与反支配 */ const uint32 LED_TBL[] ={0x00, 0xFF, // 局部燃烧后,再局部面明0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, // 依次逐个面明0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, // 依次逐个叠加0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, // 依次逐个递减0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, // 二个靠拢后合并0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81 // 从二边叠加后递减};int liushuideng(void){ uint8 i;PINSEL1 = 0x00000000; // 树坐管足连交GPIOIO1DIR = LEDS8; // 树坐LED 统造心为输出while (1){for (i=0; i<42; i++){ /* 流火灯格式隐现 */IO1SET = ~((LED_TBL[i]) << 18);DelayNS(20);IO1CLR = ((LED_TBL[i]) << 18);DelayNS(20);}}return 0;}//主函数int main(void){uint32 i;PINSEL0 = 0x00000000; // 所有管足连交GPIOPINSEL1 = 0x00000000;IO0DIR = BEEP; // 蜂鸣器统造心输出0while (1){ if ((IO0PIN & KEY) == 0){for(i=0; i<1000; i++); // 硬件延时{IO0CLR = BEEP; // 如果KEY 按下,蜂鸣器鸣喊liushuideng();}}else{IO0SET = BEEP; // 紧开则停止蜂鸣IO1SET= LEDS8;}for(i=0; i<100; i++); // 硬件延时}return 0;}六、思索题1、如果将P0.30树坐为GPIO输进模式,且管足悬空,那么读与P0.30得到的值是0仍旧1?大概者是不决定?当管足悬空时,该管足有大概是下电仄也有大概是矮电仄.读与IO0PIN的值本来不克不迭决定管教的值.偶尔管足是下电仄,读与到的纷歧定是下电仄.2、如果需要读与目前P0.7的输出值(不是管足上的电仄),怎么样真止?将该管足与一个LED连交,若LED明,则输出值为0,可则为1.。
gpio实验报告总结
GPIO实验报告总结一、实验目的与背景本次GPIO实验的主要目的是深入了解GPIO(General Purpose Input/Output)接口的工作原理和应用,通过实际操作和数据分析,提高对嵌入式系统硬件接口的理解和掌握。
实验背景是基于当前嵌入式系统在各种应用中的普及,GPIO 接口作为其中重要的硬件接口,对于理解嵌入式系统的运作方式具有重要意义。
二、GPIO基础知识GPIO接口是一种通用输入输出接口,它允许CPU与外部设备或传感器进行通信。
通过设置GPIO引脚的电平状态,CPU可以向外部设备发送数据,同时也可以接收外部设备发送的数据。
在嵌入式系统中,GPIO接口被广泛应用于各种硬件设备的控制和数据采集。
三、实验设备与工具本次实验使用的设备包括开发板、杜邦线、电源适配器、串口调试工具等。
其中,开发板提供了丰富的GPIO接口和外设接口,方便我们进行实验操作。
串口调试工具用于实时监控和调试实验过程。
四、实验步骤与操作连接实验设备:将开发板与电源适配器连接,为开发板提供稳定的电源。
使用杜邦线连接开发板的GPIO接口和外设接口,确保连接可靠。
编写程序:根据实验要求,编写相应的程序代码。
在程序中,我们需要配置GPIO引脚的工作模式(输入或输出),并控制引脚的电平状态进行数据传输。
下载程序:将程序代码下载到开发板中,启动程序。
实验操作:通过串口调试工具观察程序的运行状态和GPIO引脚的电平变化。
根据实验要求,进行相应的操作,如读取传感器数据、控制外部设备等。
记录数据:在实验过程中,记录关键步骤的实验数据和结果,以便后续分析和解释。
五、实验数据与结果通过实验操作,我们获得了以下数据和结果:GPIO引脚配置成功,可以正常工作在输入或输出模式。
通过GPIO接口成功读取了传感器数据,数据准确无误。
通过GPIO接口成功控制了外部设备,实现了预期的功能。
在实验过程中,记录了详细的实验数据和结果,包括GPIO引脚的电平状态、传感器数据、外部设备控制状态等。
gpio实验报告
gpio实验报告GPIO实验报告引言:GPIO(General Purpose Input/Output)是通用输入/输出引脚的简称,是一种常用的数字接口技术。
在嵌入式系统和电子设计中,GPIO被广泛应用于与外部设备进行数据交互的过程中。
本实验报告将介绍GPIO的原理、应用以及实验过程和结果。
一、GPIO的原理和应用1.1 GPIO的原理GPIO是一种数字接口技术,通过控制电压的高低来实现数据输入和输出。
在嵌入式系统中,GPIO通常由微控制器或单片机提供,可以通过编程来控制GPIO 的状态。
GPIO引脚通常具有输入和输出两种模式,可以根据需要进行配置。
1.2 GPIO的应用GPIO在嵌入式系统和电子设计中有广泛的应用。
例如,可以使用GPIO将传感器的数据输入到微控制器,实现数据采集和处理;同时,也可以使用GPIO将微控制器的计算结果输出到执行器,实现控制功能。
此外,GPIO还可以用于控制LED灯、蜂鸣器等外部设备,实现各种交互效果。
二、实验过程和结果2.1 实验准备在进行GPIO实验之前,我们需要准备以下材料:- 一块可编程的嵌入式开发板- 杜邦线- LED灯- 电阻2.2 实验步骤1. 将LED灯的长脚连接到开发板的GPIO引脚上,短脚连接到电阻上,再将电阻的另一端连接到开发板的地线上。
2. 打开开发板的开发环境,创建一个新的项目。
3. 在项目中编写代码,配置GPIO引脚为输出模式。
4. 在代码中控制GPIO引脚的电平,使LED灯点亮。
5. 将代码下载到开发板上,观察LED灯是否亮起。
2.3 实验结果经过实验,我们成功地控制了GPIO引脚,使LED灯点亮。
这验证了GPIO的工作原理和应用。
三、实验总结通过本次实验,我们了解了GPIO的原理和应用,并成功地进行了实验验证。
GPIO作为一种常用的数字接口技术,在嵌入式系统和电子设计中具有重要的作用。
掌握GPIO的使用方法,可以实现与外部设备的数据交互和控制功能。
嵌入式实验四实验报告
嵌入式实验四实验报告实验四:嵌入式编程设计
实验设计目的:
1. 学习使用嵌入式开发工具进行编程设计;
2. 学习使用C语言编写嵌入式程序;
3. 学习使用GPIO模块进行输入输出;
4. 学习使用中断处理函数。
实验器材:
1. 嵌入式开发板;
2. USB数据线;
3. 电脑;
4. LED灯;
5. 电阻;
6. 蜂鸣器;
7. 其他必要的电路元件。
实验步骤:
1. 连接开发板和计算机,安装开发板驱动程序;
2. 打开嵌入式开发工具,创建一个新的工程;
3. 在工程中添加一个C文件,编写程序;
4. 编写程序实现以下功能:
- 使用GPIO模块控制LED灯的亮、灭;
- 使用GPIO模块读取按键状态;
- 使用GPIO模块控制蜂鸣器的开、关;
- 使用Timer模块计时;
- 使用中断处理函数处理外部中断;
- 其他必要的功能;
5. 编译程序,下载到开发板;
6. 运行程序,测试功能是否正常。
实验结果与分析:
实验结果应当是LED灯、蜂鸣器、按键正常工作,可以通过按键控制LED灯的亮、灭、蜂鸣器的开、关。
实验总结:
通过本次实验,我学会了使用嵌入式开发工具进行编程设计,掌握了使用C语言编写
嵌入式程序的方法。
通过实验,我深入理解了嵌入式系统的原理和实现方法,对嵌入
式系统的应用有了更加深入的了解。
在今后的学习和工作中,我将能够更好地运用嵌
入式技术解决实际问题。
GPIO的使用实验报告
GPIO的使用实验报告本实验报告以“GPIO的使用”为主题,介绍了GPIO的基本概念、使用方法和在实际应用中的一些案例。
报告总共分为四个部分:介绍部分、实验原理、实验过程和实验结果分析。
一、介绍部分GPIO是General Purpose Input/Output的简称,中文名称为通用输入输出。
它是处理器芯片与外部电路之间的一个接口,可以通过编程来控制和读取电平状态。
通常情况下,GPIO的引脚既可以作为输入引脚,也可以作为输出引脚。
二、实验原理三、实验过程1. 设置GPIO引脚模式:在Python中,可以使用RPi.GPIO库来控制GPIO引脚。
首先需要导入RPi.GPIO库,然后使用GPIO.setmode(GPIO.BCM)来设置编码方式为BCM。
接着可以使用GPIO.setup(函数来设置引脚的输入/输出模式。
例如,GPIO.setup(17, GPIO.OUT)将引脚17设置为输出模式。
2. 控制输出引脚:使用GPIO.output(函数可以控制引脚的电平状态。
例如,GPIO.output(17, GPIO.HIGH)将引脚17设置为高电平,GPIO.output(17, GPIO.LOW)将引脚17设置为低电平。
3. 读取输入引脚:使用GPIO.input(函数可以读取引脚的电平状态。
例如,state = GPIO.input(17)将引脚17的电平状态赋值给变量state。
四、实验结果分析在实验中,我们先将引脚设置为输出模式,然后控制引脚输出高低电平,观察LED等外部设备的亮灭情况。
接着将引脚设置为输入模式,读取引脚的电平状态,判断外部设备的开关状态。
通过这些操作,我们可以了解到GPIO的基本使用方法和在实际应用中的一些场景。
总结:本次实验通过树莓派和GPIO库控制了GPIO引脚的输入和输出。
实验结果表明,我们可以通过编程实现对GPIO引脚的控制,进而控制外部设备的工作状态,实现了与外部电路的交互。
嵌入式gpio实验总结
嵌入式gpio实验总结嵌入式GPIO实验总结嵌入式系统是指将计算机硬件系统集成在其他电子设备中的计算机系统。
在嵌入式系统中,GPIO(General Purpose Input/Output)是一种通用输入输出接口,用于与外部设备进行数字信号的交互。
在本次实验中,我们通过使用嵌入式GPIO接口,控制外部设备的输入和输出,以实现特定功能。
在实验过程中,我们首先了解了GPIO的基本原理和使用方法。
GPIO接口通常由一组引脚组成,每个引脚可以配置为输入或输出模式。
通过配置引脚的模式和状态,我们可以向外部设备发送信号或接收外部设备发送的信号。
在配置GPIO引脚之前,我们需要确定引脚的编号和所属的GPIO 控制器。
不同的嵌入式平台或开发板可能具有不同的GPIO引脚编号和控制器。
因此,在实验开始之前,我们需要查阅相关文档或资料,以确定正确的引脚编号和控制器。
在配置GPIO引脚之后,我们可以使用相应的API函数来读取或写入引脚的状态。
对于输出模式的引脚,我们可以使用API函数将引脚状态设置为高电平或低电平,从而控制外部设备的行为。
对于输入模式的引脚,我们可以使用API函数读取引脚的状态,以获取外部设备发送的信号。
在实验过程中,我们使用了一些常见的外部设备,如LED灯、按钮和蜂鸣器,来演示GPIO的使用。
通过配置GPIO引脚,并使用相应的API函数,我们成功地控制了LED灯的亮灭、按钮的检测和蜂鸣器的鸣叫。
这些操作都是通过对GPIO引脚的状态进行读取或写入实现的。
通过本次实验,我们深入了解了嵌入式GPIO的原理和使用方法。
GPIO接口在嵌入式系统中具有广泛的应用,可以用于控制各种外部设备,实现各种功能。
掌握了GPIO的使用,我们可以根据实际需求,灵活地配置和控制嵌入式系统的输入输出,从而实现更多的功能和应用。
总结起来,嵌入式GPIO实验是学习嵌入式系统的重要一环。
通过实验,我们了解了GPIO的基本原理和使用方法,掌握了配置和控制GPIO引脚的技巧。
gpio实验心得
gpio实验心得一、引言GPIO(General Purpose Input/Output)是通用的输入输出引脚,广泛应用于各种嵌入式系统和电子设备中。
通过对GPIO的实验,我深入了解了它的原理和应用,并从中收获了一些心得体会。
二、GPIO的原理和基本概念2.1 GPIO的定义和功能GPIO是一种通用的数字输入输出引脚,它可以通过软件控制来实现输入和输出功能。
GPIO引脚可以作为输入引脚接收外部信号,也可以作为输出引脚发送信号给外部设备。
2.2 GPIO的工作原理GPIO是通过寄存器来控制的,通过对寄存器的读写操作,可以改变GPIO引脚的状态。
GPIO引脚可以配置为输入模式或输出模式,输入模式下可以读取外部信号的状态,输出模式下可以发送信号给外部设备。
2.3 GPIO的应用场景GPIO广泛应用于各种嵌入式系统和电子设备中,例如单片机开发、物联网设备、传感器和执行器的控制等。
通过GPIO可以与外部设备进行通信和控制,实现各种功能。
三、GPIO的实验步骤和实验结果3.1 实验准备在进行GPIO实验之前,我们需要准备一些硬件设备和软件工具。
硬件方面,我们需要一块开发板和相关的连接线;软件方面,我们需要一个GPIO编程的开发环境。
3.2 实验步骤1.连接硬件设备:将开发板和计算机通过USB线连接,并将其他需要的设备连接到GPIO引脚上。
2.配置开发环境:安装GPIO编程的开发环境,并进行相应的配置。
3.编写程序:使用GPIO编程的开发环境,编写程序来控制GPIO引脚的输入和输出。
4.编译和下载:将程序编译成可执行文件,并下载到开发板上。
5.运行实验:通过触发输入信号或发送输出信号,观察实验结果。
3.3 实验结果在进行GPIO实验的过程中,我成功地实现了一些功能,例如读取外部开关的状态、控制LED的亮灭等。
通过实验,我对GPIO的原理和应用有了更深入的理解,并且掌握了GPIO编程的基本技巧。
四、GPIO实验的心得体会4.1 学习了硬件和软件的结合GPIO实验需要将硬件设备和软件编程结合起来,通过编写程序来控制硬件设备的状态。
《嵌入式系统原理及应用》实验---通用目的输入输出口 GPIO 使用实验
1、熟悉 GPIO 内部结构和工作模式、2、掌握基于库函数的开发方法3、掌握 GPIO 输入输出控制STM32 固件库向下实现与寄存器的直接相关操作, 向上为用户提供配置寄存 器的标准接口。
Typedef struct {U16 GPIO_Pin;GPIOSpeed_TypeDef GPIOMode_TypeDef } GPIO_InitTypeDef; GPIO_SetBits GPIO_Speed; GPIO_Mode;1LCDGPIO_SetBits(GPIOA,GPIO_Pin_8); //PA8=1 ,背光灯亮;GPIO_ResetBits(GPIOA,GPIO_Pin_8); //PA8=0 ,背光灯灭。
(1)复制创建的工程模板文件夹到桌面,并将文件夹改名为“LCD 背光控制”。
将原工程模板编译一下,直到没有错误和警告为止。
(2)在main.c 文件中输入如下源程序,对GPIO 管脚进行初始化,给PA.8 引脚赋值控制LCD 背光亮灭。
编译工程,如没有错误,则会在output 文件夹中生成“工程模板.hex”文件,如有错误则修改源程序直至没有错误为止。
(3)将生成的目标文件通过ISP 软件下载到开发板微控制器的FLASH 存储器当中,复位运行,检查实验效果。
LED在STM32 的工程里添加用户自己的.c 和.h 文件,保存在外设文件夹内。
(1)新建led.c 和led.h 文件并将其保存在APP 文件夹led 目录中。
(2)编写led.c 源代码,保存。
(3)编写led.h 源代码,保存在MDK 中设置包含头文件路径。
(4)编写主函数,完成LCD 背光控制。
《嵌入式系统原理与应用》实验报告03-GPIO输出控制实验1
《嵌入式系统原理与应用》实验报告
实验序号:03 实验项目名称:GPIO 输入输出控制实验
学号姓名专业、班
实验地点实验楼1#318 指导教师黄鹏程实验时间
一、实验目的
1. 掌握LPC2200 专用工程模板的使用;
2. 掌握Proteus仿真软件的安装和使用;
3. 熟悉LPC2000 系列ARM7 微控制器的GPIO 控制。
二、实验设备(环境)及要求
硬件:PC机;
软件:PC机操作系统windows XP,ADS1.2集成开发环境,Proteus软件。
三、实验内容与步骤
实验内容:
编写程序配置LPC2138的P0.2,P0.5为GPIO功能,并P0.2驱动LED灯,P0.5外接按键,实现按下按键,使LED灯闪烁的效果。
四、实验结果与数据处理
#include "config.h"
#define PIN_P05 0x00000020
int main (void)
{
int i;
PINSEL0=PINSEL0 & 0xfffff3cf;
IO0DIR=IO0DIR|0x04 ;
while(1)
{
if((IO0PIN & PIN_P05)==0) IO0SET=0X04; else IO0CLR=0x04;
for(i=0;i<1000;i++);
}
return 0;
}
实验结果如图所示
五、分析与讨论
六、教师评语
成绩
签名:
日期:。
嵌入式实验-GPIO与系统状态
嵌入式系统实验报告实验名称:GPIO与系统状态实验目的●通过FSM4 实验板了解实验的软硬件环境,熟悉MDK 开发环境的使用。
●学习查阅文档和数据手册,获取需要的信息。
●学会使用C 语言直接控制IO 寄存器完成功能。
●掌握基本的软件编写与调试方式。
●学会STM32 GPIO 的基本操作方式。
1实验环境●FS-STM32F407开发平台●ST-Link仿真器●RealView MDK5.23集成开发软件●PC及其Window7/8/10 (32/64bit)●串口调试工具2实验要求●基本要求:◆编写程序控制led 灯的亮灭(或者控制板上蜂鸣器的出声),输出以字母、数字、空格组成的字符串的摩斯码(以“Hello Cortex-M4”为测试用例)。
◆特殊要求:不能使用CMSIS 库函数操作led 灯(蜂鸣器),需用代码直接操作GPIO 的寄存器。
●拓展要求:◆使用按键控制系统状态,LED 灯显示系统状态:➢按键K3按下:待机,系统进入低功耗模拟➢按键K4长按:系统复位➢按键K5双击:led灯闪烁➢按键K6长按:随着按动时长,4个led灯依次点亮3实验原理STM32 GPIO的配置:LED 灯的亮灭、蜂鸣器的鸣响、按键电平的读入都需要使用STM32 芯片的I/O 引脚。
STM32 芯片上,I/O 引脚可以被软件设置成各种不同的功能,如输入或输出,所以被称为GPIO (General-purpose I/O)。
而GPIO 引脚又被分为GPIOA、GPIOB…GPIOG 不同的组,每组端口分为0~15,共16 个不同的引脚。
如何使用,需要参考板子原理图、芯片的datasheet和reference mannual。
具体首先需要从原理图找到板上LED、按键对应的GPIO。
在实验板使用D6 查找地底板原理图,可得:D6——PF7D7——PF8D8——PF9D9——PF10控制GPIO 的高低电平来控制LED 的状态。
《嵌入式系统》课程实验报告-stm32单片机gpio程序开发
实验概述
【实验目的及要求】 实验目的: 1. 掌握 STM32 单片机输入输出接口程序开发 2. 掌握用寄存器开发 STM32 单片机程序 3. 掌握用库函数开发 STM32 单片机程序 实验要求: 1. 完成实验要求中提到要完成的所有内容,完成代码并提交主要代码。 2. 分析寄存器和库函数编程的优势和劣势,你喜欢用哪种方式。 3. 对每行主要代码要进行注释,说明其功能。 实验内容:
1.熟悉 TEB-CM5000 嵌入式单片机实验系统上的 LED 灯电路和单独按钮电路。
2.学习并掌握寄存器版本、库函数版本相关的实例程序,主要学习实例 stm32referencesrcforch5 目录下的,LED、LEDLib、KEY_LED 和 KEY_LEDlib 四 个程序。
3.利用寄存器位操作模式、库函数分别开发出 USER2(PD3)按钮控制 LD5(PF7)亮灭。具体功能:USER2(PD3)按钮按下时,LD5 灯闪烁;当 USER2(PD3) 按钮弹开时,LD5 灯停止闪烁。 4.实现利用寄存器位操作模式、库函数分别开发出: 当每次 USER2(PD3)按钮 按下时,LD5 灯只闪烁一次。 【实验环境】 1. TEB-CM5000 嵌入式单片机实验系统 2. MDK4.12 嵌入式软件开发环境
2.当每次 USER2(PD3)按钮按下时,LD5 灯只闪烁一次。
(1)寄存器位操作模式 循环判断 PD3 的状态,并执行对应操作(点亮或熄灭灯)
(3) 库函数
循环判断 PD3 的状态,并执行对应操作(点亮或熄灭灯)
小结
1. 只闪烁一次跟一直闪烁的区别主要在于 Flag 值。 在只闪烁一次的程序中, 设置 flag 值作为标志,灯亮以后改变 flag 值的状态,flag 的状态改变灯的 状态就不再继续。
嵌入式gpio实验报告
嵌入式gpio实验报告3.4基于UART的加法器的实现一、实验目的自学lm3s9b92的串口通信学习应用超级终端调试串口学会应用领域UART有关的库函数二、实验设备计算机、LM3S9B92开发板、USB A型公口转回 Mini B型 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、连接实验设备:使用USB mini B线缆的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"void uartInit(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端口void uartPuts(const char *s){while (*s != ''){UARTCharPut(UART0_BASE, *(s++));}}main(void){char c,a[12];int sum=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'; //将收到的字符转换为整形储存 } else if(c=='+'){ //发送第二个数 sum=sum+num;num=0;}else if(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口试验
GPIO输出控制实验11 、实验目的(1)掌握LPC2200专用工程模块的使用(2)掌握EASYJTAG仿真器的安装与使用(3)在开发平台上运行第一个程序(4)熟悉ARM7的GPIO控制2 、实验设备硬件:PC机一台MAGICARM2200-S教学实验开发平台一套软件:Windows98/XP/2000系统,ADS1.2集成开发环境3 、实验内容控制开发平台的蜂鸣器报警。
4、原理图:5、源代码:/**************************************************************************** * 文件名:main.c* 功能:蜂鸣器控制。
对蜂鸣器B1进行控制,采用软件延时方法。
* 使用I/O口直接控制,采用灌电流方式。
* 说明:短接蜂鸣器跳线JP7。
断开CF卡跳线JP13、GPIO接口J17。
****************************************************************************/ #include "config.h"#define BEEPCON 0x00000080 // P0.7引脚控制B1,低电平蜂鸣/***************************************************************************** 名称:DelayNS()* 功能:长软件延时。
* 入口参数:dly 延时参数,值越大,延时越久* 出口参数:无****************************************************************************/ void DelayNS(uint32 dly){ uint32 i;for(; dly>0; dly--){for(i=0; i<5000; i++);}}/**************************************************************************** * 名称:main()* 功能:控制蜂鸣器蜂鸣。
嵌入式系统gpio输入输出实验报告
嵌入式系统gpio-输入输出实验报告嵌入式系统GPIO输入输出实验报告一、实验目的本实验旨在深入理解嵌入式系统中GPIO(General Purpose Input/Output)输入输出模块的功能及操作方法,通过实际操作学习GPIO的寄存器配置和使用方法,提高对嵌入式系统硬件的控制能力。
二、实验原理GPIO是一种通用输入输出接口,可以用于连接和控制外部设备。
它通常具有多个引脚,每个引脚都可以独立地配置为输入或输出模式,并可以通过软件控制实现高低电平的输入输出操作。
GPIO模块的主要功能包括:输入输出电平控制、输入输出方向控制、输出数据寄存器、输入数据寄存器等。
三、实验步骤1.硬件连接:连接开发板与PC,通过USB接口进行通信。
确保开发板的电源已经接通,并连接GPIO引脚与PC的串口。
2.开发环境搭建:安装开发板的驱动程序和开发工具,如Keil、JLink等。
3.编程语言选择:本实验采用C语言进行编程操作。
4.GPIO初始化和配置:根据实验要求,使用Keil软件编写代码,对GPIO进行初始化和配置。
具体步骤包括:定义GPIO引脚、设置引脚方向、配置输出数据寄存器等。
5.GPIO输入输出操作:通过Keil软件编写代码,实现GPIO的输入输出操作。
具体步骤包括:读取输入数据、写入输出数据等。
6.程序调试和测试:使用JLink工具对编写的程序进行调试和测试,确保程序的正确性和稳定性。
7.数据记录和分析:记录实验过程中的数据,包括输入输出的电平、时间等,进行分析和处理。
四、实验结果与分析通过本实验的操作,我们成功地实现了GPIO的输入输出操作。
在实验过程中,我们发现GPIO的配置和使用需要注意以下几点:1.GPIO引脚的编号和物理位置无关,因此需要根据实际需求进行选择和配置。
2.GPIO的输入输出方向可以独立设置,输入输出电平也可以通过软件进行控制。
3.在进行GPIO输入输出操作时,需要先对相应的寄存器进行配置,才能实现正确的输入输出。
嵌入式技术及应用实验GPIO实验报告
院系:计算机科学学院专业:自动化年级: 11级学号: 11064029 姓名:杨胜提指导教师:刘科2013年 5 月 8 日实验步骤与结果分析运行过程(1) 使用Keil uVision3 通过ULINK 2仿真器连接EduKit-M3实验平台,打开实验例程目录GPIO_TEST子目录下的GPIO.Uv2例程,编译链接工程;(2) 选择软件调试模式,点击MDK 的Debug菜单,选择Start/Stop Debug Session 项或Ctrl+F5键,在逻辑分析仪中添加GPIOC_ODR.6、GPIOC_ODR.7、GPIOC_ODR.8、GPIOC_ODR.9,点击Run按钮即可在逻辑分析仪中看到如图7-11;(3) 选择硬件调试模式,选择Start/Stop Debug Session项或Ctrl+F5键,下载程序并运行,观察LED灯的变化情况;当程序运行在while循环体内时,按Key键,程序进入中断服务子程序EXTI9_5_IRQHandler(),单步运行,观察LED的变化情况。
(4) 退出Debug模式,打开Flash菜单>Download,将程序下载到EduKit-M3实验平台的Flash中,按RESET键复位,观察LED灯的情况,正常情况应如下。
LED灯状态1 说明LED1 LED2 LED3 LED4亮灭灭灭程序正常运行,发光二极管依次点亮灭亮灭灭灭灭亮灭灭灭灭亮灭灭灭灭外部信号输入,发生中断,执行中断处理程序亮亮亮亮LED灯状态2 说明LED1 LED2 LED3 LED4亮灭灭灭程序正常运行,发光二极管依次点亮亮亮灭灭亮亮亮灭亮亮亮亮灭灭灭灭外部信号输入,发生中断,执行中断处理程序亮亮亮亮3、初始化时,LED依次点亮,当按下Key键时产生中断;使用这两个函数对引脚进行配置。
嵌入式系统GPIO 输入输出实验报告
试验四【1 】GPIO 输入试验一.试验目标1.可以或许应用GPIO的输入模式读取开关旌旗灯号.2.控制GPIO相干存放器的用法和设置.3.控制用C说话编写程序控制GPIO.二.试验情况PC机一台ADS 1.2集成开辟情况一套EasyARM2131教授教养试验平台一套三.试验内容1.试验经由过程跳线JP8 衔接,程序检测按键KEY1 的状况,控制蜂鸣器BEEP的鸣叫.按下KEY1,蜂鸣器鸣叫,松开后停滞蜂鸣.(调通试验后,改为KEY3键进行输入).2.当检测到KEY1有按键输入时点亮发光二极管LED4并控制蜂鸣器响,软件延时后关失落发光管并停滞蜂鸣,然后轮回这一进程直到检测按键没有输入.(键输入改为键KEY4,发光管改为LED6).3.联合试验三,当按下按键Key1时,启动赛马灯程序并控制蜂鸣器响,软件延时后关失落发光管并停滞蜂鸣,然后轮回这一进程直到检测按键再次按下.四.试验道理当P0 口用于GPIO输入时(如按键输入),内部无上拉电阻,须要加上拉电阻,电路图拜见图 4.2.进行GPIO 输入试验时,先要设置IODIR 使接口线成为输入方法,然后读取IOPIN 的值即可.图 4.2按键电路道理图试验经由过程跳线JP8 衔接,程序检测按键KEY1 的状况,控制蜂鸣器BEEP 的鸣叫.按下KEY1,蜂鸣器鸣叫,松开后停滞蜂鸣.在这个试验中,须要将按键KEY1 输进口P0.16 设为输进口而蜂鸣器控制口P0.7 设置为输出口.蜂鸣器电路如图 4.3所示,当跳线JP6 衔接蜂鸣器时,P0.7 控制蜂鸣器,低电日常平凡蜂鸣器鸣叫.LED灯电路如图4.4所示,低电日常平凡灯亮.图 4.3蜂鸣器控制电路图 4.4 LED 控制电路程序起首设置管脚衔接存放器PINSEL0 和PINSEL1,设置P0.16 为输入,设置为输出.然后检测端口P0.16 的电平,对进行响应的控制,流程图如图 4.5所示,实现程序见程序清单4.1.图 4.5按键输入试验流程图五、试验步调.源代码及调试成果内容1试验步调① 启动ADS1.2IDE集成开辟情况,选择ARM Executable Image for lpc2131工程模板树立一个工程BEEP_key.② 在user组里编写主程序代码main.c.③ 选用DebugInFLASH生成目标,然后编译链接工程.④ 将EasyARM教授教养试验开辟平台上的响应管脚跳线短接.⑤ 选择Project->Debug,启动AXD进行JLINK仿真调试.⑥ 全速运行程序,程序将会在main.c的主函数中停滞.如下图所示:⑦ 单击Context Variable图标按钮(或者选择Processor Views->Variables)打开变量不雅察窗口,经由过程此窗口可以不雅察局部变量和全局变量.选择System Views->Debugger Internals 即可打开LPC2000系列ARM7微控制器的片表里存放器窗口.经由过程变量窗口可以不雅察变量BEEP.KEY1等的值和ARM7微控制器的片表里存放器窗口.如下图所示:⑧ 可以单步运行程序,先按下Key1,不雅察IO0PIN存放器的值,然后断开Key1,不雅察IO0PIN存放器的值.可以设置/撤消断点;或者全速运行程序,停滞程序运行,不雅察变量的值,断定蜂鸣器控制是否准确.如下图所示:图4.6未按下Key1时IO0PIN的值图4.7 按下Key1时IO0PIN的值由上两图可知,当按下Key1时,IO0PIN存放器的第16位由1变成0(F变成E),key1与P,按下Key1时,1变成0,存放器值变更,蜂鸣器响,解释控制是准确的. 现象描写:按下KEY1,蜂鸣器鸣叫,松开后停滞蜂鸣.源代码:#include "config.h"const uint32 BEEP = 1 << 7; // P0.7 控制蜂鸣器const uint32 KEY1 = 1 << 16; // P0.16 衔接KEY1(改为KEY3时,只需“const uint32 KEY1 = 1 << 16”改为“const uint32 KEY3 = 1 << 18”,其余不变.)/********************************************************************************************* 函数名称:main()** 函数功效:GPIO 输入试验测试.** 检测按键KEY1.KEY1 按下,蜂鸣器蜂鸣,松开后停滞蜂鸣.** 跳线解释:把 JP8 的KEY1 跳线短接,JP11 衔接蜂鸣器.*******************************************************************************************/int main (void){ PINSEL0 = 0x00000000; // 所有管脚衔接GPIOPINSEL1 = 0x00000000;IO0DIR = BEEP; // 蜂鸣器控制口输出,其余输入while (1){ if ((IO0PIN & KEY1) == 0) IO0CLR = BEEP; // 假如KEY1 按下,蜂鸣器鸣叫else IO0SET = BEEP; // 松开则停滞蜂鸣}return 0;}内容二试验步调① 启动ADS1.2IDE集成开辟情况,选择ARM Executable Image for lpc2131工程模板树立一个工程BEEP_key.② 在user组里编写主程序代码main.c.③ 选用DebugInFLASH生成目标,然后编译链接工程.④ 将EasyARM教授教养试验开辟平台上的响应管脚跳线短接.⑤ 选择Project->Debug,启动AXD进行JLINK仿真调试.⑥ 全速运行程序,程序将会在main.c的主函数中停滞.如下图所示:⑦ 单击Context Variable图标按钮(或者选择Processor Views->Variables)打开变量不雅察窗口,经由过程此窗口可以不雅察局部变量和全局变量.选择System Views->Debugger Internals 即可打开LPC2000系列ARM7微控制器的片表里存放器窗口.经由过程变量窗口可以不雅察变量BEEP.KEY1等全局变量.i等当地变量和ARM7微控制器的片表里存放器窗口.如下图所示:左图所示为ARM7微控制器的片内存放器窗口.图4.9 当地变量图4.8 全局变量⑧ 可以单步运行程序,先按下Key1,不雅察IO0PIN存放器的值,然后断开Key1,不雅察IO0PIN存放器的值.可以设置/撤消断点;或者全速运行程序,停滞程序运行,不雅察变量的值,断定蜂鸣器控制是否准确.如下图所示:.图未按下KEY1时IO0PIN的值图4.11 按下KEY1后IO0PIN的值比较图4.10和4.11,发明按下KEY1后,IO0PIN存放器的第16位由1变成0;而KEY,当按下时输入低电平,这解释KEY1的控制是准确的.上图所示为运行“IO0CLR = BEEP”后IO0PIN存放器的值,与图4.10比较,发明第8位由1变成0,BEEP对应P,这解释BEEP的控制是对的.现象描写:当按下KEY1时,蜂鸣器鸣响,LED4亮;当松开KEY1后,蜂鸣器静音,LED4灭.源代码如下:#include "config.h"const uint32 BEEP = 1 << 7; // P0.7 控制蜂鸣器const uint32 KEY1 = 1 << 16; // P0.16 衔接KEY1(改为KEY4按键时,只需把上句代码改为“const uint32 KEY4=1<<19”,其余不变)const uint32 LEDS4= 1 << 21; // P1[21]控制LED4,低电平点亮(改为LED6时,只需把上句代码改为“const uint32 LED6=1<<23”,其余不变.)/***************************************************************************** 函数名称:main()** 函数功效:GPIO 输入试验测试.** 检测按键KEY1.KEY1 按下,蜂鸣器蜂鸣,松开后停滞蜂鸣.** 跳线解释:把 JP8 的KEY1 跳线短接,JP11 衔接蜂鸣器.********************************************************************************** *********/int main (void){Uint32 i;PINSEL0 = 0x00000000; // 所有管脚衔接GPIOPINSEL1 = 0x00000000;IO0DIR = BEEP; // 蜂鸣器控制口输出0IO1DIR = LEDS4; // 设置LED4灯亮while (1){ if ((IO0PIN & KEY1) == 0)for(i=0; i<1000; i++); // 软件延时{IO0CLR = BEEP; // 假如KEY1 按下,蜂鸣器鸣叫IO1DCLR = LEDS4; // 设置LED4灯亮}else{IO0SET = BEEP; // 松开则停滞蜂鸣IO1SET= LEDS4; // 设置LED4灯灭}for(i=0; i<1000; i++); // 软件延时}return 0;}内容三试验步调① 启动ADS1.2IDE集成开辟情况,选择ARM Executable Image for lpc2131工程模板树立一个工程BEEP_key.② 在user组里编写主程序代码main.c.③ 选用DebugInFLASH生成目标,然后编译链接工程.④ 将EasyARM教授教养试验开辟平台上的响应管脚跳线短接.⑤ 选择Project->Debug,启动AXD进行JLINK仿真调试.⑥ 全速运行程序,程序将会在main.c的主函数中停滞.如下图所示:⑦ 单击Context Variable图标按钮(或者选择Processor Views->Variables)打开变量不雅察窗口,经由过程此窗口可以不雅察局部变量和全局变量.选择System Views->Debugger Internals 即可打开LPC2000系列ARM7微控制器的片表里存放器窗口.经由过程变量窗口可以不雅察变量BEEP.KEY1等的值和ARM7微控制器的片表里存放器窗口.如下图所示:⑧ 可以单步运行程序,先按下Key1,不雅察IO0PIN存放器的值,然后断开Key1,不雅察IO0PIN存放器的值.可以设置/撤消断点;或者全速运行程序,停滞程序运行,不雅察变量的值,断定蜂鸣器控制是否准确.如下图所示:1时IO0PIN的值1时IO0PIN的值由上两图可知,当按下Key1时,IO0PIN存放器的第16位由1变成0(F变成E),key1与P,按下Key1时,1变成0,存放器值变更,蜂鸣器响,流水灯亮,解释控制是准确的.现象描写:当按下按键KEY1时,蜂鸣器鸣响,流水灯亮;松开后,蜂鸣器静音,流水灯灭.源代码如下:#include "config.h"const uint32 BEEP = 1 << 7; // P0.7 控制蜂鸣器const uint32 KEY = 1 << 16; // P0.16 衔接KEY1const uint32 LEDS8 = 0xFF << 18; // P1[25:18]控制LED8~LED1,低电平点亮void DelayNS(uint32 dly){ uint32 i;for(; dly>0; dly--){for(i=0; i<50000; i++);}}/*********************************************************************** ********************** 函数名称:liushuideng()** 函数功效:流水灯显示试验.** 调试解释:衔接跳线 JP12 至LED8~LED1.************************************************************************ *******************//* 流水灯名堂,低电平点亮,留意挪用时刻用了取反操纵 */const uint32 LED_TBL[] ={0x00, 0xFF, // 全体熄灭后,再全体点亮0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, // 依次逐个点亮0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, // 依次逐个叠加0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x01, // 依次逐个递减0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81, // 两个挨近后离开0x81, 0xC3, 0xE7, 0xFF, 0xFF, 0xE7, 0xC3, 0x81 // 从双方叠加后递减};int liushuideng(void){ uint8 i;PINSEL1 = 0x00000000; // 设置管脚衔接GPIOIO1DIR = LEDS8; // 设置LED 控制口为输出while (1){for (i=0; i<42; i++){ /* 流水灯名堂显示 */IO1SET = ~((LED_TBL[i]) << 18);DelayNS(20);IO1CLR = ((LED_TBL[i]) << 18);DelayNS(20);}}return 0;}//主函数int main(void){uint32 i;PINSEL0 = 0x00000000; // 所有管脚衔接GPIO PINSEL1 = 0x00000000;IO0DIR = BEEP; // 蜂鸣器控制口输出0while (1){ if ((IO0PIN & KEY) == 0){for(i=0; i<1000; i++); // 软件延时{IO0CLR = BEEP; // 假如KEY 按下,蜂鸣器鸣叫liushuideng();}}else{IO0SET = BEEP; // 松开则停滞蜂鸣IO1SET= LEDS8;}for(i=0; i<100; i++); // 软件延时}return 0;}六.思虑题1.假如将P0.30设置为GPIO输入模式,且管脚悬空,那么读取P0.30得到的值是0照样1?或者是不肯定?当管脚悬空时,该管脚有可能是高电平也有可能是低电平.读取IO0PIN 的值其实不克不及肯定管教的值.有时管脚是高电平,读取到的不一定是高电平.2.假如须要读取当前P0.7的输出值(不是管脚上的电平),若何实现?将该管脚与一个LED衔接,若LED亮,则输出值为0,不然为1.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四GPIO 输入实验一、实验目的1、能够使用GPIO的输入模式读取开关信号。
2、掌握GPIO相关寄存器的用法和设置。
3、掌握用C语言编写程序控制GPIO。
二、实验环境PC机一台ADS 1.2集成开发环境一套EasyARM2131教学实验平台一套三、实验内容1.实验通过跳线JP8 连接KEY1与P0.16,程序检测按键KEY1 的状态,控制蜂鸣器BEEP 的鸣叫。
按下KEY1,蜂鸣器鸣叫,松开后停止蜂鸣。
(调通实验后,改为KEY3键进行输入)。
2.当检测到KEY1有按键输入时点亮发光二极管LED4并控制蜂鸣器响,软件延时后关掉发光管并停止蜂鸣,然后循环这一过程直到检测按键没有输入。
(键输入改为键KEY4,发光管改为LED6)。
3.结合实验三,当按下按键Key1时,启动跑马灯程序并控制蜂鸣器响,软件延时后关掉发光管并停止蜂鸣,然后循环这一过程直到检测按键再次按下。
四、实验原理当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.4 LED 控制电路程序首先设置管脚连接寄存器PINSEL0 和PINSEL1,设置P0.16 为输入,设置P0.7,P1.21 为输出。
然后检测端口P0.16 的电平,对P0.7, P1.21进行相应的控制,流程图如图4.5 所示,实现程序见程序清单 4.1。
图 4.5 按键输入实验流程图五、实验步骤、源代码及调试结果内容1实验步骤① 启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131工程模板建立一个工程BEEP_key。
② 在user组里编写主程序代码main.c。
③ 选用DebugInFLASH生成目标,然后编译链接工程。
④ 将EasyARM教学实验开发平台上的相应管脚跳线短接。
⑤ 选择Project->Debug,启动AXD进行JLINK仿真调试。
⑥ 全速运行程序,程序将会在main.c的主函数中停止。
如下图所示:⑦ 单击Context Variable图标按钮(或者选择Processor Views->Variables)打开变量观察窗口,通过此窗口可以观察局部变量和全局变量。
选择System Views->Debugger Internals 即可打开LPC2000系列ARM7微控制器的片内外寄存器窗口。
通过变量窗口可以观察变量BEEP、KEY1等的值和ARM7微控制器的片内外寄存器窗口。
如下图所示:⑧ 可以单步运行程序,先按下Key1,观察IO0PIN寄存器的值,然后断开Key1,观察IO0PIN寄存器的值。
可以设置/取消断点;或者全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器控制是否正确。
如下图所示:图4.6 未按下Key1时IO0PIN的值图4.7 按下Key1时IO0PIN的值由上两图可知,当按下Key1时,IO0PIN寄存器的第16位由1变为0(F变为E),key1与P0.16相连,按下Key1时,P0.16管脚输出电平由1变为0,寄存器值变化,蜂鸣器响,说明控制是正确的。
现象描述:按下KEY1,蜂鸣器鸣叫,松开后停止蜂鸣。
源代码:#include "config.h"const uint32 BEEP = 1 << 7; // P0.7 控制蜂鸣器const uint32 KEY1 = 1 << 16; // P0.16 连接KEY1(改为KEY3时,只需“const uint32 KEY1 = 1 << 16”改为“const uint32 KEY3 = 1 << 18”,其余不变。
)/********************************************************************************************* 函数名称:main()** 函数功能:GPIO 输入实验测试。
** 检测按键KEY1。
KEY1 按下,蜂鸣器蜂鸣,松开后停止蜂鸣。
** 跳线说明:把JP8 的KEY1 跳线短接,JP11 连接蜂鸣器。
*******************************************************************************************/int main (void){ PINSEL0 = 0x00000000; // 所有管脚连接GPIOPINSEL1 = 0x00000000;IO0DIR = BEEP; // 蜂鸣器控制口输出,其余输入while (1){ if ((IO0PIN & KEY1) == 0) IO0CLR = BEEP; // 如果KEY1 按下,蜂鸣器鸣叫else IO0SET = BEEP; // 松开则停止蜂鸣}return 0;}内容二实验步骤① 启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131工程模板建立一个工程BEEP_key。
② 在user组里编写主程序代码main.c。
③ 选用DebugInFLASH生成目标,然后编译链接工程。
④ 将EasyARM教学实验开发平台上的相应管脚跳线短接。
⑤ 选择Project->Debug,启动AXD进行JLINK仿真调试。
⑥ 全速运行程序,程序将会在main.c的主函数中停止。
如下图所示:⑦ 单击Context Variable图标按钮(或者选择Processor Views->Variables)打开变量观察窗口,通过此窗口可以观察局部变量和全局变量。
选择System Views->Debugger Internals 即可打开LPC2000系列ARM7微控制器的片内外寄存器窗口。
通过变量窗口可以观察变量BEEP、KEY1等全局变量、i等本地变量和ARM7微控制器的片内外寄存器窗口。
如下图所示:左图所示为ARM7微控制器的片内寄存器窗口。
图4.9 本地变量图4.8 全局变量⑧ 可以单步运行程序,先按下Key1,观察IO0PIN寄存器的值,然后断开Key1,观察IO0PIN寄存器的值。
可以设置/取消断点;或者全速运行程序,停止程序运行,观察变量的值,判断蜂鸣器控制是否正确。
如下图所示:.图4.10 未按下KEY1时IO0PIN的值图4.11 按下KEY1后IO0PIN的值对比图4.10和4.11,发现按下KEY1后,IO0PIN寄存器的第16位由1变为0;而KEY1对应管脚P0.16,当按下时输入低电平,这说明KEY1的控制是正确的。
上图所示为运行“IO0CLR = BEEP”后IO0PIN寄存器的值,与图4.10对比,发现第8位由1变为0,BEEP对应P0.7管脚,这说明BEEP的控制是对的。
现象描述:当按下KEY1时,蜂鸣器鸣响,LED4亮;当松开KEY1后,蜂鸣器静音,LED4灭。
源代码如下:#include "config.h"const uint32 BEEP = 1 << 7; // P0.7 控制蜂鸣器const uint32 KEY1 = 1 << 16; // P0.16 连接KEY1(改为KEY4按键时,只需把上句代码改为“const uint32 KEY4=1<<19”,其余不变)const uint32 LEDS4= 1 << 21; // P1[21]控制LED4,低电平点亮(改为LED6时,只需把上句代码改为“const uint32 LED6=1<<23”,其余不变。
)/***************************************************************************** 函数名称:main()** 函数功能:GPIO 输入实验测试。
** 检测按键KEY1。
KEY1 按下,蜂鸣器蜂鸣,松开后停止蜂鸣。
** 跳线说明:把JP8 的KEY1 跳线短接,JP11 连接蜂鸣器。
********************************************************************************** *********/int main (void){Uint32 i;PINSEL0 = 0x00000000; // 所有管脚连接GPIOPINSEL1 = 0x00000000;IO0DIR = BEEP; // 蜂鸣器控制口输出0IO1DIR = LEDS4; // 设置LED4 灯亮while (1){ if ((IO0PIN & KEY1) == 0)for(i=0; i<1000; i++); // 软件延时{IO0CLR = BEEP; // 如果KEY1 按下,蜂鸣器鸣叫IO1DCLR = LEDS4; // 设置LED4 灯亮}else{IO0SET = BEEP; // 松开则停止蜂鸣IO1SET= LEDS4; // 设置LED4 灯灭}for(i=0; i<1000; i++); // 软件延时}return 0;}内容三实验步骤① 启动ADS1.2IDE集成开发环境,选择ARM Executable Image for lpc2131工程模板建立一个工程BEEP_key。
② 在user组里编写主程序代码main.c。
③ 选用DebugInFLASH生成目标,然后编译链接工程。
④ 将EasyARM教学实验开发平台上的相应管脚跳线短接。
⑤ 选择Project->Debug,启动AXD进行JLINK仿真调试。
⑥ 全速运行程序,程序将会在main.c的主函数中停止。
如下图所示:⑦ 单击Context Variable图标按钮(或者选择Processor Views->Variables)打开变量观察窗口,通过此窗口可以观察局部变量和全局变量。