001_STM的GPIO端口操作实验

合集下载

GPIO实验报告(Word最新版)

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实验报告总结

GPIO实验报告总结一、实验目的与背景本次GPIO实验的主要目的是深入了解GPIO(General Purpose Input/Output)接口的工作原理和应用,通过实际操作和数据分析,提高对嵌入式系统硬件接口的理解和掌握。

实验背景是基于当前嵌入式系统在各种应用中的普及,GPIO 接口作为其中重要的硬件接口,对于理解嵌入式系统的运作方式具有重要意义。

二、GPIO基础知识GPIO接口是一种通用输入输出接口,它允许CPU与外部设备或传感器进行通信。

通过设置GPIO引脚的电平状态,CPU可以向外部设备发送数据,同时也可以接收外部设备发送的数据。

在嵌入式系统中,GPIO接口被广泛应用于各种硬件设备的控制和数据采集。

三、实验设备与工具本次实验使用的设备包括开发板、杜邦线、电源适配器、串口调试工具等。

其中,开发板提供了丰富的GPIO接口和外设接口,方便我们进行实验操作。

串口调试工具用于实时监控和调试实验过程。

四、实验步骤与操作连接实验设备:将开发板与电源适配器连接,为开发板提供稳定的电源。

使用杜邦线连接开发板的GPIO接口和外设接口,确保连接可靠。

编写程序:根据实验要求,编写相应的程序代码。

在程序中,我们需要配置GPIO引脚的工作模式(输入或输出),并控制引脚的电平状态进行数据传输。

下载程序:将程序代码下载到开发板中,启动程序。

实验操作:通过串口调试工具观察程序的运行状态和GPIO引脚的电平变化。

根据实验要求,进行相应的操作,如读取传感器数据、控制外部设备等。

记录数据:在实验过程中,记录关键步骤的实验数据和结果,以便后续分析和解释。

五、实验数据与结果通过实验操作,我们获得了以下数据和结果:GPIO引脚配置成功,可以正常工作在输入或输出模式。

通过GPIO接口成功读取了传感器数据,数据准确无误。

通过GPIO接口成功控制了外部设备,实现了预期的功能。

在实验过程中,记录了详细的实验数据和结果,包括GPIO引脚的电平状态、传感器数据、外部设备控制状态等。

实验01-STM32F103-GPIO输入输出实验

实验01-STM32F103-GPIO输入输出实验

最大输出速度为 10MHz
10
最大输出速度为 2MHz
11
最大输出速度为 50MHz
六、实验现象
把程序下载到神州Ⅱ号 STM32 开发板后,可以根据实验设计看到四个 LED(LD1-4) 单独或者轮流闪亮,实现流水灯的效果。
七、实验报告书写要求
说明:实验报告均按以下格式书写
1) 绘制程序流程图。 2) 写出程序清单。 3) 给出实验中用到的数据和实验结果。 4) 通过实验,分析你的收获、不足、问题。
三、实验电路原理图及其说明
在神州Ⅱ号 STM32 开发板中,一共有 5 个 LED 指示灯,其中一个是电源指示灯 LD5,其他的 4 个 LED (LD1、LD2、LD3 和 LD4)由 GPIO-PD 控制,4 个 LED 分别串了 470K Ω的电阻,起限流作用防止电流过大损坏 LED 和 GPIO 口。电路原理图如图 1 所示。
口可以自由编程,单 IO 口寄存器必须要按 32 位字被访问。STM32 的很多 IO 口都是 5V
兼容的,这些 IO 口在与 5V 电平的外设连接的时候很有优势。
STM32 的每个 IO 端口都有 7 个寄存器来控制:配置模式的 2 个 32 位的端口配置寄
存器 CRL 和 CRH、2 个 32 位的数据寄存器 IDR 和 ODR、1 个 32 位的置位/复位寄存器 BSRR、
五、实验原理
流水灯的关键实际上就是如何控制 STM32 处理器的 GPIO 接口,作为 IO 口,输出指 定的电平信号。
STM32 的 IO 口可以由软件配置成 8 种模式:模拟输入、输入悬空、输入下拉、输入
2
山东科技大学《微控制器原理》实验指导书
STM32F103-GPIO 基本输入输出实验

GPIO的使用实验报告

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实验总结嵌入式系统是指将计算机硬件系统集成在其他电子设备中的计算机系统。

在嵌入式系统中,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读写操作GPIO(General Purpose Input/Output)是一种通用输入输出接口,广泛应用于各种嵌入式系统,如微控制器、树莓派、Arduino等。

GPIO操作主要用于与外部硬件设备进行交互,包括读取传感器数据、控制执行器等。

本文将介绍GPIO的基本概念、读写操作方法以及应用实例。

一、GPIO基础GPIO通常通过特定的引脚与外部设备进行通信。

这些引脚可以设置为输入模式(从外部设备读取数据)或输出模式(向外部设备发送数据)。

GPIO通常被用来驱动LED灯、蜂鸣器、继电器等简单硬件设备。

此外,GPIO还常常用于控制微控制器或其他硬件的外设。

1. 初始化GPIO在进行GPIO读写操作前,需要先进行初始化。

具体来说,需要配置GPIO引脚的电气特性,如高低电平、上拉/下拉电阻等。

初始化通常在程序启动时进行。

2. 读取GPIO状态读取GPIO状态是指从GPIO引脚读取当前状态,即判断该引脚是高电平还是低电平。

可以通过查询引脚的值或者使用取反操作来获取状态。

3. 设置GPIO值设置GPIO值是指向GPIO引脚写入数据,以控制外部设备的动作。

通常使用输出操作来完成。

需要注意的是,不同的硬件平台可能具有不同的数据类型和寄存器,需要根据具体的硬件平台进行设置。

4. 配置GPIO为输入模式将GPIO配置为输入模式是指将该引脚设置为从外部设备读取数据。

当引脚接收到外部信号时,会自动将其状态存储起来,以便后续读取。

在输入模式下,通常需要配置适当的上拉或下拉电阻以避免悬空。

三、应用实例以下是一个简单的应用实例,演示如何使用树莓派和Python编程语言进行GPIO读写操作:1. 初始化GPIO在Python中,可以使用RPi.GPIO模块来操作树莓派的GPIO引脚。

首先,需要导入该模块并使用setup()函数初始化GPIO。

例如:RPi.GPIO.setmode(RPi.GPIO.BOARD) # 设置模式为板载模式RPi.GPIO.setup(12, RPi.GPIO.OUT) # 将引脚12设置为输出模式2. 读取GPIO状态可以使用input()函数来读取GPIO的状态。

GPIO的使用实验报告

GPIO的使用实验报告

实验二通用GPIO的使用(4学时)
一、实验目的
1、掌握C51芯片I/O接口的性能特点。

2、掌握STM32芯片I/O接口的性能特点。

3、对于C51芯片,使用P0、P1口做I/O接口,实现输入和
输出控制。

4、对于STM32芯片掌握GPIO的功能设定方法,使用
GPIO完成输入与输出的电路驱动
二、实验内容
1. P1口做为输出口控制“单只数码管循环显示0~9”。

2. 编写一段程序,并修改硬件电路,用P1.0-P1.6口控制
LED,P1.7控制LED的亮与灭(P1.7接按键,按下时LED 亮,不按时LED灭)。

3、用STM32芯片I/O接口实现流水灯的控制。

三、思考题
1、为什么P0作为I/O接口时,要接上拉电阻?
答:因为P0口作为I/O接口时内部是漏极开路型。

2、在实验内容2中,如果P0某个管脚接按键,该如何修改硬件和软件?
3、设计一单片机控制电路,用八只开关分别控制八只LED 的亮灭。

四、实验结果分析
对于问题2
四、结论
这次对单片机GPIO口的实验,我们分别做了51单片机和STM32f103r6对GPIO端口的应用,再通过protues的仿真验证,证明我们的思路是正确的。

由于在这次实验中没有吧protues8.6版本安装好,导致实验过程中出现了了一些延误,没能按照老师课堂的进度,但在实验课过后过后,及时复习和查资料,解决了这个问题。

实验过程中不足的有,对于实验仍处于生搬硬套的阶段,无法将老师理论课所讲与实验结合在一起,对于写代码的能力有待提高。

gpio的基本使用方法

gpio的基本使用方法

gpio的基本使用方法GPIO,即通用输入输出引脚,是一种通用的数字信号输入输出接口,它允许我们将数字信号发送到其他设备,或从其他设备接收数字信号,并使用它们进行控制和通信。

在树莓派等嵌入式设备的开发工作中,GPIO是非常重要的一个组成部分,使用方法也十分简单。

一、初始化GPIO要使用GPIO,我们首先需要将其初始化,以便我们可以开始使用其不同的引脚。

在初始化过程中,我们需要指定GPIO的模式,即输入或输出模式。

1.导入必要的库import RPi.GPIO as GPIO2.设置GPIO引脚模式:“输入/输出”GPIO.setmode(GPIO.BOARD)这将使我们根据引脚的物理编号而不是树莓派GPIO编号来标识GPIO引脚。

3.设置GPIO模式GPIO.setup(pin, mode)其中“pin”为GPIO引脚编号,“mode”可以是“IN”(输入模式)或“OUT”(输出模式)。

例如,要将GPIO引脚7设置为输出模式,代码如下:GPIO.setup(7, GPIO.OUT)二、读写GPIOGPIO只能够处理高低电平,因此我们需要了解如何使用Python将高电平和低电平发送到GPIO引脚,并从GPIO引脚读取高电平和低电平。

1.写GPIOGPIO.output(pin, value)其中,“pin”为GPIO引脚编号,“value”可以是HIGH(高电平)或LOW(低电平)。

例如,要将GPIO引脚7输出高电平,代码如下:GPIO.output(7, GPIO.HIGH)2.读GPIOGPIO.input(pin)其中,“pin”为GPIO引脚编号。

例如,要从GPIO引脚7读取电平,代码如下:input_value = GPIO.input(7)三、关闭GPIO当我们完成了对GPIO引脚的使用之后,需要将其关闭以防止出现不必要的错误并释放它们的状态。

我们可以使用GPIO.cleanup()函数将所有GPIO设置为默认状态。

实验01-STM32F103-GPIO输入输出实验

实验01-STM32F103-GPIO输入输出实验
山东科技大学《微控制器原理》实验指导书
STM32F103-GPIO 基本输入输出实验
实验 01 STM32F103-GPIO 基本输入输出实验
一、实验目的
学习 STM32F103VCT6 单片机的通用 GPIO 的基本输出输入功能,主要了解 STM32 的 GPIO 的原理和应用。
二、实验设备
1) 装有 RV MDK 仿真软件的 Pentium 以上的计算机一套; 2) J-Link-ARM V8 仿真器一套; 3) STM32F103VCT 的神舟 II 号开发板一套。
/* Private function prototypes -----------------------------------------------*/
void Delay(vu32 nCount);
void Turn_On_LED(u8 LED_NUM);
/* Private functions ---------------------------------------------------------*/
case 2: GPIO_SetBits(GPIO_LED,LD3_PIN); break; /*点亮 LD3 灯*/
4
山东科技大学《微控制器原理》实验指导书
STM32F103-GPIO 基本输入输出实验
case 3: GPIO_SetBits(GPIO_LED,LD4_PIN); break; /*点亮 LD4 灯*/
4 GPIOD GPIO_Pin_8
/*神舟 II 号 LED 数量*/ /*LED 使用的 GPIO 组*/ /*LD1 使用的 GPIO 管脚*/
#define LD2_PIN #define LD3_PIN #define LD4_PIN

实验六 GPIO接口实验

实验六 GPIO接口实验

二、实验设备
硬件: 实验平台, 标准/ 硬件:Embest EduKit-III实验平台,Embest ARM标准 实验平台 标准 增强型仿真器套件( 增强型仿真器套件(PowerICE),PC机。 ) 机
软 件 : Embest IDE 98/2000/NT/XP 98/2000/NT/XP 。
for ARM 集 成 开 发 环 境 , Windows
带触摸LCD 带触摸LCD 七段数码管
S3C44B0X
LED

键盘
JTAG调试 JTAG调试
三、实验内容
(1)熟悉ARM芯片I/O口的编程配置方法; 熟悉ARM芯片I/O口的编程配置方法; ARM芯片I/O口的编程配置方法 熟悉S 44B 芯片的I/O口配置寄存器。 I/O口配置寄存器 (2)熟悉S3C44B0X芯片的I/O口配置寄存器。 编写程序,控制实验平台的发光二极管LED ,LED2 LED1 编写程序,控制实验平台的发光二极管LED1,LED2,使它 们有规律的点亮和熄灭, 具体顺序如下: LED1 >LED2 们有规律的点亮和熄灭 , 具体顺序如下 : LED1 亮 ->LED2 >LED1 >LED2 全亮- 全灭,如此反复。 亮->LED1灭->LED2灭->全亮->全灭,如此反复。
练习题 编写程序,实现使用四个LED灯循环显示,即LED1204到 灯循环显示, 编写程序,实现使用四个 灯循环显示 到 LED1207状态组合循环显示 状态组合循环显示0000、0001、… 1111。 状态组合循环显示 、 、 。
LED 4 3 2 1
五、实验操作步骤
1.准备实验环境 使用Embest Embest仿真器连接目标板 1)使用Embest仿真器连接目标板 将并行口电缆连接到PC机后面的并行接口; PC机后面的并行接口 将并行口电缆连接到PC机后面的并行接口; 将另一端连接PowerICE PowerICE; 将另一端连接PowerICE; PowerICE仿真器的JTAG接口连接实验箱的JTAG调试口插座 仿真器的JTAG接口连接实验箱的JTAG调试口插座; 将PowerICE仿真器的JTAG接口连接实验箱的JTAG调试口插座; 使用Embest EduKit-III实验板附带的串口线 实验板附带的串口线, 2 ) 使用 Embest EduKit-III 实验板附带的串口线 , 连接实验板上的 UART0 PC机的串口 机的串口。 UART0和PC机的串口。 电源线电缆接到实验箱右侧的插座; 3)电源线电缆接到实验箱右侧的插座; 4) 串口接收设置 PC机上运行windows自带的超级终端串口通信程序 波特率115200 机上运行windows自带的超级终端串口通信程序( 115200、 在PC机上运行windows自带的超级终端串口通信程序(波特率115200、 位停止位、无校验位、无硬件流控制) 或者使用其它串口通信程序。 1位停止位、无校验位、无硬件流控制);或者使用其它串口通信程序。

gpio操作实验原理

gpio操作实验原理

gpio操作实验原理一、GPIO原理简介GPIO(General-Purpose Input/Output)是一种通用输入输出接口,常用于嵌入式系统中的外设控制。

通过GPIO,我们可以控制微处理器的引脚,实现数字信号的输入和输出。

GPIO具有灵活的配置能力,可以配置为输入模式或输出模式,以实现不同的功能。

二、GPIO引脚配置在微处理器中,每个GPIO引脚都有对应的寄存器进行配置。

通过配置寄存器,我们可以设置引脚的工作模式、输出类型、输出速度等参数。

根据具体需求,选择合适的引脚进行配置是实现GPIO操作的关键步骤。

三、GPIO寄存器配置GPIO寄存器通常包括数据寄存器和控制寄存器。

数据寄存器用于存储当前引脚的电平状态,控制寄存器用于设置引脚的工作模式和其他相关参数。

通过向控制寄存器写入特定的值,可以实现对GPIO引脚的配置。

同时,读取数据寄存器的值可以获取当前引脚的电平状态。

四、GPIO输入模式在输入模式下,GPIO引脚用于接收外部信号。

通过配置控制寄存器,可以将引脚设置为上拉输入、下拉输入或开漏输入等模式。

不同的输入模式对应不同的电路结构,可以适应不同的外部设备接口标准。

在输入模式下,我们需要读取数据寄存器的值以获取引脚的电平状态。

五、GPIO输出模式在输出模式下,GPIO引脚用于输出数字信号。

通过配置控制寄存器,可以将引脚设置为推挽输出或开漏输出等模式。

推挽输出通常用于驱动低阻抗负载,而开漏输出则需外部上拉电阻才能正常工作。

在输出模式下,我们可以通过向数据寄存器写入特定的值来控制引脚的电平状态。

六、GPIO中断模式GPIO中断是微处理器的一种中断源,可以通过配置GPIO引脚的中断触发方式来实现。

常见的触发方式包括边沿触发和电平触发。

当GPIO 引脚的电平状态发生变化时,微处理器可以产生中断请求并执行相应的中断服务程序。

通过中断模式,可以实现实时响应和快速处理外部事件的功能。

七、GPIO定时器功能一些微处理器中的GPIO模块还集成了定时器功能。

实验一 GPIO 口控制实验

实验一  GPIO 口控制实验

图 1.8
(5)将开发板上左上角的SW1拨到中间eZ430位置;通过USB线将MSP430F6638开发板上 的J6 端与PC相连。 (6)连接成功后可以在电脑的设备管理器中看到如图 1.9 所示的 MSP430 UART 端口。
(7)单击 Debug 按钮
图 1.9
烧写程序,出现如下调试界面。
(8)单击 Resume 按钮
实现直流电能和机械能互相转换的电机。当它作电动机运行时是直流电动机,将电能转换为 机械能。直流电机的结构应由定子和转子两大部分组成。直流电机运行时静止不动的部分称
为定子,定子的主要作用是产生磁场,由机座、主磁极、换向极、端盖、轴承和电刷装置等 组成。运行时转动的部分称为转子,其主要作用是产生电磁转矩和感应电动势,是直流电进 行能量转换的枢纽,所以通常又称为电枢,由转轴、电枢铁心、电枢绕组、换向器等组成。 z 直流电机控制原理:
(3)点击 File->New->CCS Project。
图 1.15
图 1.16
(4) 弹出如下对话框,键入项目名称(project name):DC motor,选择硬件类型(device): MSP430x6xx Family->MSP430F6638,在下列文件类型(Project templates and examples)中选择 Empty Project,最后点击 Finish。
图1.3 直流电机模块电路原理图
控制电路使用TI DRV8833 低电压电机驱动芯片,该芯片为玩具、打印机及其他机电一
体化应用提供了一款双通道桥式电机驱动器解决方案。它能驱动两个直流电机或一个步进电
机。nSLEEP引脚为高电平时表示使能设备,为低电平时表示进入低功耗睡眠模式。输入端控

gpio读写操作

gpio读写操作

gpio读写操作GPIO(General Purpose Input/Output)是嵌入式系统中常见的一种输入/输出接口。

它不仅可以用于与其他模块进行通信,还可以与外部设备连接,实现数据的输入和输出。

本文将介绍如何进行GPIO的读写操作。

首先,我们需要了解一些基本概念。

在嵌入式系统中,GPIO被视为一组寄存器或寄存器组,用于控制特定的硬件引脚。

每个引脚都有一个唯一的数字标识符,用于在软件中进行控制。

GPIO的读写操作可以分为以下步骤:1. 引入相关的库和头文件:在进行GPIO操作之前,需要引入相应的库和头文件。

一般来说,使用C或C++编程语言,可以引入相应的GPIO库和头文件,如wiringPi、bcm2835等。

2. 初始化GPIO:在进行GPIO操作之前,需要对GPIO进行初始化。

初始化过程中,需要设置GPIO的模式,即输入或输出。

可以使用相应的函数或语句进行初始化,如`pinMode()`函数。

3. 读取GPIO:读取GPIO引脚的状态是一个常见的操作。

可以使用相应的函数或语句来读取GPIO的状态,如`digitalRead()`函数。

函数的返回值通常是高电平(High)或低电平(Low),分别对应1和0。

4. 写入GPIO:写入GPIO引脚的状态是另一个常见的操作。

可以使用相应的函数或语句来写入GPIO的状态,如`digitalWrite()`函数。

函数的参数通常是高电平(High)或低电平(Low),分别对应1和0。

在进行GPIO读写操作时,需要注意以下几点:1. 引脚模式:在初始化GPIO时,需要设置引脚的模式。

一般来说,引脚可以设置为输入模式(Input)或输出模式(Output)。

不同的模式会对读写操作产生影响。

2. 引脚编号:每个GPIO引脚都有一个唯一的数字标识符,用于在软件中进行控制。

在进行读写操作时,需要指定相应的引脚编号。

3. 电平状态:GPIO的读写操作通常涉及引脚的电平状态。

嵌入式系统GPIO 输入输出实验报告

嵌入式系统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.。

GPIO实验报告

GPIO实验报告

GPIO实验报告一、实验步骤1、先把板子连到电脑上,然后打开设备管理器,查看EMULATOR是否连接完毕,若连接上了,设置仿真目标板。

2、打开CCS的软件,点击Debug中的connect,然后将点开菜单栏project的open,选择所要打开的工程文件,在.c格式的文档中修改程序,程序修改完毕后点击菜单栏的“编译文件”,在下边的方框里查看编译结果,若有错误,双击错误项,指针会自动跳回程序中的错误行进行修改。

若编译没有错误,再点击“增量构建”。

3、点击File中的“load programme”,跳出一个窗口,选择以.out结尾的文件,编辑的程序输出到板子上。

4、测“CLOCK OUT”输出波形。

先根据原理图找出CLOCK OUT的管脚,然后将示波器连到此管脚,同时另一个夹子接地。

观察示波器上的波形。

二、实验程序/* This is an example for gpio of C5509 *//*----------------------------------------------------------------------------*/#include <csl.h>#include <csl_pll.h>#include <csl_chip.h>#include <csl_gpio.h>void delay();/*锁相环的设置*/PLL_Config myConfig = {0, //IAI: the PLL locks using the same process that was underway//before the idle mode was entered1, //IOB: If the PLL indicates a break in the phase lock,//it switches to its bypass mode and restarts the PLL phase-locking//sequence1, //PLL multiply value; multiply 24 times倍频数,用于设置仿真器CPU的工作频率。

GPIO实验报告

GPIO实验报告

GPIO实验报告一、实验目的1.了解GPIO(通用输入/输出)的基本概念和原理。

2.掌握GPIO的接口配置和使用方法。

3.学会使用GPIO控制外部设备。

二、实验器材1. Raspberry Pi开发板2.杜邦线3.LED灯4.电阻5.面包板三、实验原理GPIO(General Purpose Input/Output)即通用输入/输出,是Raspberry Pi开发板上常用的一种数字接口类型,用于与外部设备进行数据交互。

GPIO接口可以配置为输入或输出模式,通过读取或写入电平状态来完成与外部设备的通信。

四、实验内容1. 连接电路:首先将LED灯连接到Raspberry Pi开发板的GPIO引脚上。

使用杜邦线将LED的正极连接到GPIO引脚,负极连接到开发板的接地引脚。

添加适当的电阻来限制电流。

2. 配置GPIO引脚:在Raspberry Pi上通过编程配置相应的GPIO引脚。

选择要使用的引脚,并将其设置为输出模式。

3. 点亮LED灯:使用编程语言(例如Python)控制GPIO引脚的电平状态,将引脚设置为高电平(3.3V),以点亮LED灯。

4.熄灭LED灯:将GPIO引脚的电平状态设置为低电平(0V),以熄灭LED灯。

五、实验步骤1.使用杜邦线将LED的正极连接到任意一个GPIO引脚(例如GPIO18),将负极连接到开发板的接地引脚。

添加一个适当的电阻。

2. 在Raspberry Pi上打开终端,进入编程环境(例如Python)。

3. 配置GPIO引脚。

在Python环境中,可以使用RPi.GPIO库来配置GPIO引脚。

导入库并设置GPIO引脚为输出模式,代码示例如下:```import RPi.GPIO as GPIOGPIO.setmode(GPIO.BCM)GPIO.setup(18, GPIO.OUT)```4. 点亮LED灯。

使用GPIO.output(函数将GPIO引脚设置为高电平,代码示例如下:```GPIO.output(18, GPIO.HIGH)```5. 熄灭LED灯。

说出GPIO的使用流程

说出GPIO的使用流程

GPIO的使用流程1. 简介GPIO(General Purpose Input/Output)即通用输入/输出引脚,是处理器上的一组引脚,用于与外部设备进行通信。

在嵌入式系统中,GPIO被广泛应用于控制各种外部设备,如LED灯、蜂鸣器、传感器等。

2. 硬件介绍在嵌入式系统中,GPIO通常是通过芯片内部的寄存器来进行控制的。

每个GPIO引脚都有一个相应的寄存器位,用于设置输入/输出模式、电压电平、中断等参数。

具体的GPIO硬件结构由芯片的厂商指定,因此在使用GPIO之前,需要查阅芯片的技术手册以获得详细的配置信息。

3. GPIO的使用步骤使用GPIO的流程通常包括以下几个步骤:步骤 1: 引入相关的库在开始使用GPIO之前,需要引入相应的库文件。

不同的开发平台和编程语言可能会有不同的库,因此需要根据所使用的平台进行相应的配置。

步骤 2: 设置引脚的模式GPIO引脚可以配置为输入模式或输出模式。

对于输入模式,引脚可以接收外部设备的信号;对于输出模式,引脚可以向外部设备发送信号。

设置引脚模式的方法可以通过设置寄存器位或调用相关的函数来实现。

步骤 3: 配置引脚的电压电平GPIO引脚的电压电平可以通过设置寄存器位或调用相关函数来配置。

通常情况下,可以配置引脚为高电平、低电平或者浮空状态。

步骤 4: 读取引脚的状态如果GPIO引脚配置为输入模式,可以通过读取相应的寄存器位或调用相关函数来获取引脚的状态。

获取的状态可以用于判断外部设备的状态。

步骤 5: 控制引脚的状态如果GPIO引脚配置为输出模式,可以通过设置相应的寄存器位或调用相关函数来控制引脚的状态。

控制的方式可以包括设定高低电平、开关状态等。

步骤 6: 处理中断在某些情况下,需要对GPIO的输入信号进行中断处理。

可以通过设置寄存器位或调用相关函数来配置中断的触发条件和处理函数。

步骤 7: 释放GPIO资源在使用完GPIO之后,应当及时释放相关的资源。

使用gpio的流程

使用gpio的流程

使用GPIO的流程1. 概述GPIO(General Purpose Input/Output)是一种用来连接外部设备的通用输入/输出引脚。

在嵌入式系统中,使用GPIO可以实现与外部设备的通信和控制。

本文将介绍使用GPIO的流程,包括准备工作、GPIO的初始化和配置、GPIO的输入输出控制等内容。

2. 准备工作在使用GPIO之前,需要确保相关硬件和软件环境的准备。

2.1 硬件准备首先,需要准备一块支持GPIO功能的开发板或单板计算机。

常见的硬件平台包括树莓派、Arduino等。

具体的硬件准备可以根据实际需求进行选择。

2.2 软件准备在开始使用GPIO之前,需要安装相应的软件库和开发工具。

以树莓派为例,可以通过以下步骤进行软件准备:•下载最新的树莓派操作系统镜像,并将其烧录到SD卡中。

•连接树莓派到显示器、键盘和鼠标,并启动系统。

•打开终端,执行以下命令安装GPIO相关的软件包:sudo apt-get updatesudo apt-get install gpio安装完成后,就可以开始使用GPIO了。

3. GPIO的初始化和配置在开始使用GPIO之前,需要进行GPIO的初始化和配置工作。

3.1 初始化GPIO库在使用GPIO之前,首先需要初始化GPIO库。

树莓派上的GPIO库可以通过以下命令进行初始化:gpio init3.2 配置GPIO引脚模式GPIO引脚有不同的模式,包括输入模式、输出模式和功能模式等。

通过以下命令可以配置GPIO引脚的模式:•配置为输入模式:gpio export GPIO_PIN input•配置为输出模式:gpio export GPIO_PIN output•配置为功能模式:gpio export GPIO_PIN function其中,GPIO_PIN表示GPIO引脚的编号,可以根据实际情况进行调整。

3.3 设置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实验

山交院实验二GPIO实验

实验二GPIO实验一、实验目的与要求1、熟悉Keil uVision5(MDK-ARM)软件2、熟悉GPIO的使用方法,熟悉HAL固件库中GPIO库函数的使用方法3、熟悉使用STM32CubeMX创建新项目二、实验设备SUN ESMC01实验仪(含STM32F103模块)一套、ARM仿真器一套、PC机一台三、实验内容1、熟悉Keil uVision5集成环境软件的使用方法。

2、熟悉使用STM32CubeMX创建新项目。

3、编写程序:控制实验箱F6区的指示灯DS1闪亮。

4、编写程序:控制实验箱F6区的8个指示灯DS1~DS8,循环点亮,瞬间只有一个灯亮。

5、观察实验结果,验证程序是否正确。

四、实验原理(一) LED原理图JP28:绿色发光管控制接口,0-灯亮,1-灯灭JP29:红色发光管控制接口,0-灯亮,1-灯灭(二) 实验箱跳线准备1、JP85:选择CPU2:2、JP6:选择E5V,使用实验仪给核心板供电STM32F103核心板供电方式有三种,由JP6选择:JP6选择U5V,使用USB MINI接口(CN4)供电;JP6选择C5V,使用B型USB接口(CN3)供电;JP6选择E5V,使用实验仪供电。

3、将STAR ARM_U仿真器的JTAG插头插入STM32F103核心板上的JTAG插座。

使用USB线将仿真器与微机相连。

4、打开实验仪电源。

五、使用STM32CubeMX请参阅实验箱随机“使用手册”3.5节使用STM32CubeMX六、实验说明1、源文件组成stm32f1xx_hal_conf.h 库配置文件、HSE值定义stm32f1xx_it.c 中断处理文件stm32f1xx_it.h 中断处理头文件gpio.c、gpio.h GPIO初始化(GPIOA(PA13:SWDIO、PA14:SWCLK))stm32f1xx_hal_msp.c提供MSP初始化、中断初始化函数system_stm32f1xx.c HAL库提供,一般不作改动。

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

//main()程序开始……//注释
//1.2.1 头文件:
#include "stm32f10x.h" //意思是,把文件stm32f10x_lib.h的内容放到此处
#include "main.h" //意思是,把文件main.h的内容放到此处
//#include "k_gpio.h" //注释
#define VECT_TAB_RAM //选择在RAM中调试;宏标识符宏体
1.2.2 系统初始化
SystemInit(); //选择系统运行时钟,默认是72MHz,可以调试跟踪进行修改;
#ifdef VECT_TAB_RAM //设置仿真调试区域,这里设置成在RAM中;
// Set the Vector Table base location at 0x20000000
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else /* VECT_TAB_FLASH */
// Set the Vector Table base location at 0x08000000
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
#endif
1.2.3 GPIO配置
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //首先使能B端口时钟才可以进行下面的配置
//扩展学习RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOA| RCC_APB2Periph_GPIOA, ENABLE); //使能B,A,C端口时钟GPIO_InitTypeDef gpio //第二步声明一个gpio结构体
gpio.GPIO_Pin = GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; //第三步选择待设置的GPIO管脚,这里是12,13,14,15
gpio.GPIO_Speed = GPIO_Speed_50MHz; //第四步设置最高输出速率50MHz
gpio.GPIO_Mode = GPIO_Mode_Out_PP; //第五步设置选中GPIO管脚的模式,推挽输出
GPIO_Init(GPIOB, &gpio); //第六步根据gpio中指定的参数初始化外设,这里是B端口(GPIOB)。

GPIO_SetBits(GPIOB, GPIO_Pin_12| GPIO_Pin_13| GPIO_Pin_14| GPIO_Pin_15); //置位B12,B12,B14,B15灭LED灯;
//GPIO_SetBits(GPIOB, GPIO_Pin_13); //置位B13//已经用上句代替
//GPIO_SetBits(GPIOB, GPIO_Pin_14); //置位B14//已经用上句代替
//GPIO_SetBits(GPIOB, GPIO_Pin_15); //置位B15//已经用上句代替
//如此,GPIOB连接LED的四个端口都配置好了;
1.2.4 GPIO操作
While(1)
{
GPIO_ResetBits(GPIOB, GPIO_Pin_12); //复位B12,灯亮
Delay(0xffffff); //延时,系统时钟16M时,示波器测得10.49s
GPIO_ResetBits(GPIOB, GPIO_Pin_13);
Delay(0xffffff);
GPIO_ResetBits(GPIOB, GPIO_Pin_14);
Delay(0xffffff);
GPIO_ResetBits(GPIOB, GPIO_Pin_15);
Delay(0xffffff);
Delay(0xffffff);
Delay(0xffffff);
GPIO_SetBits(GPIOB, GPIO_Pin_12); //置位,灭灯,功能等同速度更快的是GPIOB->BSRR=GPIO_Pin_12,BSRR寄存器置1
Delay(0xffffff);
GPIO_SetBits(GPIOB, GPIO_Pin_13); // GPIOE->BSRR = 0x00400080//低16位的某位为'1',则对应的I/O端口置'1';高16位的某位为'1',则对应的I/O端口置'0' Delay(0xffffff); //上行例子是0X0040=6位=0;0080=7位=1其他位不变
GPIO_SetBits(GPIOB, GPIO_Pin_14); // GPIOE->BRR = 0x00400080//低16位的某位为'1',则对应的I/O端口置'0';高16位的某位为'1',则对应的I/O端口置'1' Delay(0xffffff); //上行例子是0X0040=6位=1;0080=7位=0其他位不变
GPIO_SetBits(GPIOB, GPIO_Pin_15);
Delay(0xffffff);
//GPIO_ResetBits(GPIOB, GPIO_Pin_12); //先不用
//GPIO_ResetBits(GPIOB, GPIO_Pin_13); //先不用
//GPIO_ResetBits(GPIOB, GPIO_Pin_14); //先不用
//GPIO_ResetBits(GPIOB, GPIO_Pin_15); //先不用SysCtlDelay(SysCtlClockGet() / 3000); // 与系统时钟无关,精确延时1ms
}
如此而已;这是最简单的实验,可以为此建立一个拥有自己特色的工程模板;
1.3 Test注意
A、硬件必须首先确保正确;
B、开发环境搭建确保正确;
C、系统时钟的选择要清楚;仿真所处的区域要清楚;
D、外设时钟的配置是第一位的,其他配置都在其后。

相关文档
最新文档