嵌入式GPIO学习笔记
- 格式:docx
- 大小:18.18 KB
- 文档页数:2
嵌入式最基础的GPIO接口操作了解一下!1、GPIOGPIO(General Purpose Input/Output Port),即通用输入输出端口,就是芯片的一些引脚。
作为输入端口时,我们可以通过它们读入引脚的状态--高电平或低电平,作为输出端口时,我们可以通过它们输出高电平或低电平来控制连接的外围设备。
S3C2440有130个GPIO引脚,分为A~J共9组:GPA、GPB、…、GPJ。
通过设置相应的寄存器来设置某个引脚的功能(输入或输出或是其他特殊功能)。
2、通过寄存器操作GPIO每个端口可以很容易的通过软件配置以满足各种系统配置和设计需求,在使用之前你必须定义每个引脚的功能,如果不是用于复用功能,则引脚可以配置为普通输入输出端口。
1)端口配置寄存器GPxCON(x为A~J)GPxCON是用于选择引脚功能。
PORT A的端口配置寄存器GPACON中每一位对应一个引脚(PORT A共23个引脚,bit0~bit22对应GPA0~GPA22)。
当某位被设为0时,相应的引脚被设置成输出引脚,此时可以在GPADAT中相应位写入0或1让此引脚输出低电平或高电平。
当某位被设为1时,相应的引脚被设为地址线或用于地址控制,此时GPADAT无用。
(GPACON通常被设为全1,以便访问外部存储器件)PORT B~PORT J的端口配置寄存器操作完全相同:GPxCON中每两位控制一个引脚,00为输入、01为输出、10为特殊功能、11保留。
2)端口数据寄存器GPxDAT(x为A~J)GPxDAT是用于读/写引脚数据。
当引脚被设为输入时,读此寄存器可得到相应引脚的电平状态是高还是低;当引脚被设为输出时,通过写此寄存器的相应位可设置相应引脚输出高电平或低电平。
3)端口上拉寄存器GPxUP(x为B~J,注意:PORT A端口没有这个寄存器)GPxUP是用于选择是否使用内部上拉电阻。
此寄存器的某位被设置为1时,相应引脚不使用内部上拉电阻;设置为0时,相应引脚使用内部上拉电阻。
嵌入式学习笔记之GPIO详解
一、什幺是GPIO:
GPIO,英文全称为General-Purpose IO ports,也就是通用IO口。
在嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号。
而且,许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了,比如灯亮与灭。
对这些设备/电路的控制,使用传统的串行口或并行口都不合适。
所以在微控制器芯片上一般都会提供一个通用可编程IO接口,即GPIO。
接口至少有两个寄存器,即通用IO控制寄存器与通用IO数据寄存器。
数据寄存器的各位都直接引到芯片外部,而对这种寄存器中每一位的作用,即每一位的信号流通方向,则可以通过控制寄存器中对应位独立的加以设置。
这样,有无GPIO接口也就成为微控制器区别于微处理器的一个特征。
二、GPIO之LCD控制编程:
S3C2440有130个I/O端口,分为A-J共9组:GPA、GPB、、、、GPJ,可以通过设置寄存器来确定某个引脚用于输入、输出还是特殊功能。
比如:可以设置GPH6作为输入、输出、或者用于串口。
1、通过寄存器来操作GPIO引脚。
《ARM嵌入式系统初级教程(基于Cortex-M0)》第一章GPIO1.1 GPIO本节以LPC1100系列Cortex-M0微控制器为例介绍了ARM微控制器的GPIO功能模块,包括如下内容:● GPIO的基本功能和扩展功能以及相关的基本概念、原理、结构;● GPIO功能的相关寄存器及其功能,以及寄存器的操作示例;● GPIO基本操作的部分重要知识点。
1.1.1 GPIO简介GPIO(General purpose Input/Output,通用输入/输出),顾名思义,它是一种用于完成(数字量)输入/输出的常规功能设备,广泛使用于从单片机到ARM 微控制器的各种微控制器。
表1.1给出了LPC1100系列Cortex-M0微控制器的GPIO资源。
表1.1 LPC1100系列Cortex-M0微控制器的GPIO资源1.1.2 寄存器汇总LPC1100系列Cortex-M0微控制器的GPIO相关寄存器见表1.2。
表1.2 寄存器汇总★ 请读者注意,在读写GPIO相关寄存器内的引脚功能位时,须确认该位对应的引脚是否存在。
例如,LPC1111的端口2只有一根引脚PIO2_0,那么读者在访问LPC1111内端口2对应的引脚方向寄存器GPIO2DIR时,只能访问GPIO2DIR的位0,访问其它位都是无效的,因为其它位没有对应的可配置引脚(GPIO2DIR寄存器的位功能描述见图1.1)。
1.1.3 输入/输出功能1.简介图1.1是ARM微控制器GPIO中和输入/输出功能相关部分的功能框图。
图1.1 GPIO输入/输出由图1.1可知,ARM微控制器通过输入/输出数据寄存器存储GPIO引脚上的数据;通过输入/输出接口电路,令输出的电平信号驱动外界设备并使输入的电平信号能够被ARM微控制器准确识别和处理。
从单片机到ARM微控制器,在输入/输出的功能上,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引脚的技巧。
今天主要讲述的内容:1.GPIO口的介绍2.Keil工程的建立3.相关工程文件的分析第一:GPIO口的介绍1.功能介绍教材的第五章:GPIO技术手册《STM32F10x-ref》的8 通用和复用功能I/O(GPIO和AFIO)开发板的原理图:《信盈达STM32F103开发板原理图》开发板上面的芯片是STM32F103ZET6,这个芯片是144引脚的。
咱们看一下原理图上面的芯片引脚图。
一共有7个IO口:PA—PG,每一个IO口有16个引脚,引脚名称为PX0—PX15。
在单片机里面,在单片机里面IO引脚的作用:·输出:·输入:·复用:在STM32里面,引脚的作用如下:─ 输入浮空─ 输入上拉─ 输入下拉─ 模拟输入─ 开漏输出─ 推挽式输出─ 推挽式复用功能─ 开漏复用功能单片机和STM32都是微控制器,只能够处理数字信号,也就是逻辑0和逻辑1.在单片机里面:逻辑0代表低电平0V,逻辑1代表高电平5V;在STM32里面:逻辑0代表低电平0V,逻辑1代表高电平3.3V;输出功能:就是芯片的引脚能够输出逻辑0或者逻辑1,进而控制外部电路某一点的电压情况。
例如:LED灯电路;输入功能:用来检测外部电路某一点的电势是否发送变化,当然检测到的情况只有逻辑0或者逻辑1,检测的结果保持到芯片内部。
例如:KEY上拉:初始化某一点的电压为高电平;下拉:初始化某一点的电压为低电平。
浮空:没有上下拉。
开漏输出:只能够输出0,不能够输出1,如果要想输出1,就必须外接上拉电阻;推挽输出:能够输出0或者1.复用:引脚配合芯片的其他功能。
模拟功能:处理模拟信号的。
你通过分析你的外部硬件电路,知道需要把相应的CPU引脚配置为那种工作模式。
2.引脚内部电路结构:CPU就是硬件电路,只是这个电路可以实现很多的功能,具体你需要那种功能就有你自己来配置。
3.寄存器介绍STM32的引脚有这么多功能,如何控制???通过配置相应的寄存器来实现相应的功能。
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实验需要将硬件设备和软件编程结合起来,通过编写程序来控制硬件设备的状态。
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 背光控制。
嵌入式系统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读写操作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的读写操作通常涉及引脚的电平状态。
STM32GPIO学习总结STM32GPIO是一种用于输入和输出的通用I/O端口,可以用于连接外部设备和传感器,在STM32微控制器的应用中具有重要的地位。
在这篇文章中,我将对STM32GPIO进行学习总结,并介绍其基本原理、配置方法和使用技巧等方面的知识。
首先,我们来了解一下STM32GPIO的基本原理。
STM32芯片的GPIO 引脚可以配置为输入或输出模式,并且每个引脚都可以配置为具有不同的功能。
GPIO引脚可以提供电平信号,可以用于控制外设或接收来自外部设备的输入信号。
在GPIO端口中,每个引脚都有一个相关的寄存器,用于控制引脚的状态和功能。
在STM32微控制器中,使用寄存器控制GPIO引脚的状态和功能。
通过操作这些寄存器,可以配置引脚的输入/输出模式、电平状态、上拉/下拉电阻等。
常见的寄存器包括GPIOx_MODER(配置引脚模式)、GPIOx_OTYPER(设置输出类型)、GPIOx_OSPEEDR(设置输出速度)、GPIOx_PUPDR(设置上拉/下拉电阻)等。
在配置STM32 GPIO引脚之前,需要首先初始化相关的引脚和对应的时钟。
可以使用RCC(Reset and Clock Control)寄存器来配置和控制外设的时钟。
通过设置相应的位可以启用或禁用时钟。
然后,可以根据需要设置引脚的初始化参数,包括引脚的模式、速度、上拉/下拉电阻等。
可以使用相应的寄存器来进行配置。
为了控制GPIO引脚的状态,可以使用位带操作或位操作来设置或清除相应的位。
位带操作是通过位地址别名来直接访问寄存器的特定位。
与位带操作相比,位操作需要使用寄存器的地址和位偏移来进行操作。
可以使用相应的寄存器和位字段来对GPIO引脚进行操作。
另外,可以将引脚配置为输出模式,用于控制外设或产生输出信号。
可以通过设置相应的寄存器来设置引脚的电平状态。
可以使用位操作或位带操作来设置或清除引脚的状态位。
可以控制引脚的状态位来控制输出信号的电平。
第二章GPIO所谓GPIO,即通用I/O口(General Purpose I/O ports),可理解为即可作为输入又可以作为输出的接口。
与单片机一样,LPC213X也具备一定数量的GPIO,LPC213X具有多达47个GPIO,分为2组,分别为P0、P1。
每组GPIO的数量不尽相同,其中P0口可最多有30个GPIO接口,P1口也有17个GPIO,P0和P1口同时又与内部的一些模块共用。
2.1 引脚描述LPC213X的引脚结构如图2-1所示PINSELx IOxDIR IOxCLRIOxPINIOxSETinout1引脚图2-1 LPC213X引脚结构如图1.1所示,由于LPC213X的引脚与其它功能复用,比如P0.0引脚,即有GPIO的功能,同时也具有串口0发送功能,但是一个时间只能选择GPIO和串口发送功能的一种,而不能同时具备两种功能。
这些功能的选择是通过管脚连接模块(Pin Connect Block)来实现的,管脚连接模块通过配臵寄存器控制多路开关来连接管脚与片内外设。
2.2 管脚连接模块管脚连接模块的用途是将管脚配臵为需要的功能,可实现独立的管脚配臵。
外设在激活和任何相关中断使能之前必须连接到适当的管脚,任何使能的外设功能如果没有映射到相关的管脚,则被认为是无效的。
LPC213X的管脚框图示例如图2-2所示。
P0.0图2-2 管脚框图示例第18和19为设臵”01”,即第十八位为0,第十九位为1,这样设臵后,P0.9管脚即连接到了串口输出模块上,作为RxD引脚使用。
2.3.2 PINSEL1寄存器PINSEL1寄存器控制的是P0.16-P0.31的管脚连接模块,如表2-3所示。
PINSEL1寄存器各个位段的含义与PINSEL0相近,具体内容可以参考PINSEL0的内容。
2.3.4 PINSEL2寄存器PINSEL2寄存器控制类LPC213X所有的其他管脚的连接模块。
如表2-4所示。
警告:请使用“读-修改-写”的方法来访问PINSEL2 寄存器。
gpio详细解读-回复GPIO详细解读:控制的基石GPIO(通用输入输出)是现代计算机系统中一个非常重要的概念。
它是指计算机给用户提供的一组可以进行信号输入和输出的引脚。
这些引脚可以连接到各种设备,如传感器、执行器和其他外部设备上,用于与计算机系统进行交互。
在本文中,我们将一步一步对GPIO进行详细解读,从GPIO的基本概念到使用GPIO进行控制操作。
让我们开始吧!第一步:理解GPIOGPIO是计算机系统中的一组引脚,它可以实现信号的输入和输出。
通常情况下,每个GPIO引脚都可以配置为输入或输出模式,这取决于用户的需要。
GPIO的引脚数量通常取决于具体的硬件平台。
一些嵌入式系统可能只有几个引脚,而一些高性能计算机可能有更多的引脚。
无论引脚数量如何,它们都具有相同的基本属性:输入和输出。
第二步:使用GPIO之前的准备工作在开始使用GPIO之前,首先需要确保正确的连接。
这包括将GPIO 引脚与外部设备连接起来,并确保电源和接地线正常工作。
另外,使用GPIO之前还需要了解GPIO的技术规格。
这包括引脚数量、工作电压、电流规格等。
这些规格将帮助我们确保使用GPIO时的安全和正确操作。
第三步:配置GPIO为输入或输出一旦准备就绪,接下来的步骤是配置GPIO引脚为输入或输出模式。
这可以通过软件编程来实现,通常会使用操作系统提供的API或特定的编程语言库进行配置。
在配置GPIO引脚之前,需要确定引脚号码和使用的编程接口。
例如,树莓派(Raspberry Pi)支持Python编程语言,可以使用RPi.GPIO库来进行GPIO配置。
要将GPIO引脚设置为输入模式,可以使用相应的设置函数,并指定引脚号码。
同样地,要将GPIO引脚设置为输出模式,也可以使用相应的设置函数。
第四步:读取输入信号一旦GPIO引脚被配置为输入模式,我们可以从外部设备读取信号。
这可以通过相应的读取函数来实现,函数将返回引脚的电平状态。
GPIO引脚的电平状态通常分为高电平和低电平。
嵌入式系统中的GPIO口控制方法嵌入式系统是一种小型的计算机系统,它是在一个单片机芯片中集成了全套计算机系统。
嵌入式系统广泛应用于家电、汽车、医疗等领域。
嵌入式系统与普通计算机相比,硬件资源有限,因此需要对硬件资源进行合理的管理和利用。
GPIO(General Purpose Input/Output)口是嵌入式系统中常见的硬件接口之一,在嵌入式系统中的GPIO口的控制方法尤为重要。
一、GPIO口简介GPIO口是嵌入式系统中一个通用的输入输出口,它可以通过软件控制,实现向外部设备输出信号,以及接收外部设备输入信号。
GPIO口通常由几个关键的物理引脚组成,例如STM32的GPIO口就由16个物理引脚组成。
在使用GPIO口之前,需要先对GPIO进行配置,包括:口的模式、速度、输入/输出模式、上拉/下拉等。
GPIO口的控制是嵌入式系统硬件底层的基础知识。
二、GPIO口控制方法GPIO口是通过寄存器访问控制的。
其中,寄存器是嵌入式系统底层的最小单元,GPIO口的每个物理引脚对应了至少一个寄存器。
通过对寄存器的操作,我们就可以对GPIO口进行配置和控制。
1.配置GPIO口首先,需要配置GPIO口的输入或输出模式,包括输入模式、输出模式、模拟输入模式、模拟输出模式等。
同时,还需要配置GPIO口的输入或输出速度和上拉/下拉,以保证GPIO口的电气特性。
例如,STM32的GPIO口有两个GPIOx_MODER寄存器,用于配置每个GPIO口的输入/输出模式。
代码如下:#define GPIO_MODER_MODE0_0 (0x1u << 0)#define GPIO_MODER_MODE0_1 (0x1u << 1)#define GPIO_MODER_MODE1_0 (0x1u << 2)#define GPIO_MODER_MODE1_1 (0x1u << 3)//...GPIOA_MODER &= ~(GPIO_MODER_MODE5_1 |GPIO_MODER_MODE5_0);GPIOA_MODER |= GPIO_MODER_MODE5_0; //PA5设置为输出模式2.读写GPIO口的数据GPIO口可以用于读入或写出数据,在读入数据时,会读取GPIO口的电平状态,根据电平状态来判断输入信号值。
嵌入式微控制处理器中gpio名词解释
GPIO(General Purpose Input/Output):
GPIO是指通用输入输出的简称,用于描述一种可以接收外部设备输入信号或是发送控制信号的外设接口,一般用于微处理器和微控制器技术。
GPIO接口的实际应用包括:LED、按键、摇杆、蜂鸣器等外部设备的接收和控制等功能。
MISO(Master In Slave Out):
MISO是指专用输入输出的简写,它用于描述一种从主机接收信号的输入接口,或者是将信号发送到从机的输出接口。
在典型的I2C 文件系统中,它通常用于接收从机发出的数据。
另外,MISO也可以用于将外设的输出信号发送到主机。
MOSI(Master Out Slave In):
MOSI是指专用输入输出的简写,它用于描述一种从主机发送信号的输出接口,或者是将信号接收到从机的输入接口。
在典型的I2C 文件系统中,它通常用于发送主机发出的数据。
另外,MOSI也可以用于将外设的输入信号发送到从机。
SCL(Serial Clock):
SCL是指串行时钟的简写,它用于描述一种可以控制串行通信的时钟信号,该信号由主机侧产生,且从机侧接收。
它在I2C总线上的应用中是至关重要的,它可以控制从机对主机的数据收发时机,以此来保障数据传输的正确性。
CE(Chip Enable):
CE是指芯片使能的简写,它用于描述一种控制芯片工作模式的信号,该信号由外部设备生成,且可以用来控制芯片的工作,以及芯片中寄存器的读写。
在很多微控制器中,它用来控制芯片的上电复位以及从机模式的切换等功能。
《嵌⼊式系统》常⽤库函数系列索引⽬录GPIO常⽤库函数(引脚的选择、⼯作模式、速度的设置及引脚的置位、复位与数据的读取)所有GPIO引脚,使⽤前必须先打开其所属端⼝时钟。
常⽤库函数GPIO_Init:根据GPIO_InitStruct中指定的参数初始化GPIOx端⼝;GPIO_SetBits:将指定的GPIO端⼝的⼀个或多个指定引脚置位;GPIO_ResetBits:将指定的GPIO端⼝的⼀个或多个指定引脚复位;GPIO_ReadOutputDataBit:读取指定GPIO端⼝的指定引脚的输出值(1 bit);GPIO_ReadInputDataBit:读取指定GPIO端⼝的指定引脚的输⼊值(1 bit);GPIO初始化过程及使⽤⽅式初始化连接LED0的PA8引脚——打开APB2总线上GPIOA端⼝的时钟/* Enable GPIO_LED0 clock */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);初始化连接LED0的PA8引脚——将PA8引脚设置为推挽输出模式/* GPIO_LED0 Pin(PA8) Configuration */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOA,&GPIO_InitStructure);开启或关闭LED灯LED_On(void){GPIO_ResetBits(GPIOA,GPIO_Pin_8)}LED_Off(void){GPIO_SetBits(GPIOA,GPIO_Pin_8)}初始化连接按键KEY0的PC5引脚——打开APB2总线上GPIOC端⼝的时钟/* Enable GPIO_KEY0 clock */RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);初始化连接按键KEY0的PC5引脚——将PC5引脚设置为输⼊上拉模式/* GPIO_KEY0 Pin(PC5) Configuration */GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOC,&GPIO_InitStructure);检测按键输⼊key0Unsigned int Key0_Read(void){if(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_5)) return1;elsereturn0;}GPIO设置-void key_Init_Row(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(KEY_ROW_GPIO_CLK,ENABLE);//使能时钟GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;//通⽤推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Pin=KEY_ROW_GPIO_PIN1|KEY_ROW_GPIO_PIN2|KEY_ROW_GPIO_PIN3|KEY_ROW_GPIO_PIN4;GPIO_Init(KEY_ROW_GPIO_PORT,&GPIO_InitStructure);#define KEY_ROW_GPIO_CLK RCC_APB2Periph_GPIOE#define KEY_ROW_GPIO_PORT GPIOEGPIO设置RCC_APB2PeriphClockCmd(KEY_LIST_GPIO_CLK,ENABLE);//使能时钟GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPD;//下拉输⼊GPIO_InitStructure.GPIO_Pin=KEY_LIST_GPIO_PIN1|KEY_LIST_GPIO_PIN2|KEY_LIST_GPIO_PIN3|KEY_LIST_GPIO_PIN4;GPIO_Init(KEY_LIST_GPIO_PORT,&GPIO_InitStructure);GPIO_SetBits(KEY_ROW_GPIO_PORT,KEY_ROW_GPIO_PIN1|KEY_ROW_GPIO_PIN2|KEY_ROW_GPIO_PIN3|KEY_ROW_GPIO_PIN4);//将引脚置为⾼电平#define KEY_LIST_GPIO_CLK RCC_APB2Periph_GPIOF#define KEY_LIST_GPIO_PORT GPIOF按键扫描if(GPIO_ReadInputDataBit(KEY_LIST_GPIO_PORT,KEY_LIST_GPIO_PIN1)==1){SysTick_Delay_ms(10);//软件“消抖”if(GPIO_ReadInputDataBit(KEY_LIST_GPIO_PORT,KEY_LIST_GPIO_PIN1)==1){key_Init_List();if(GPIO_ReadInputDataBit(KEY_ROW_GPIO_PORT,KEY_ROW_GPIO_PIN1)==1)return1;else if(GPIO_ReadInputDataBit(KEY_ROW_GPIO_PORT,KEY_ROW_GPIO_PIN2)==1)return4;else if(GPIO_ReadInputDataBit(KEY_ROW_GPIO_PORT,KEY_ROW_GPIO_PIN3)==1)return7;else if(GPIO_ReadInputDataBit(KEY_ROW_GPIO_PORT,KEY_ROW_GPIO_PIN4)==1)else if(GPIO_ReadInputDataBit(KEY_ROW_GPIO_PORT,KEY_ROW_GPIO_PIN4)==1)return'*';}}定时器相关库函数的使⽤(arr,psc及ccr值的设置,定时器中断的使⽤)TIM_TimeBaseInit:根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx。
GPIO学习笔记
一、GPIO工作原理
根据具体型号不同,STM32F103微控制器的GPIO可以提供最多112个多功能双向I/O引,这些1/O引脚GPIOA,GPIOB、GPIOC、GPIOD、GPIOE、GPIO和GPG等端口中,其中,端口号通常以大写字母命名,从“A”开始,依次类推,每个端口有16个I/O引脚,通常以数字命名,从0开始,直到15为止。
例如,STM32F103RCT微控制器的GPIOA有16个引脚、分别为PAO、PA1,PA2,……PA15。
二、内部结构
输出驱动器(普通输出,复用功能输出):由多路选择器、输出控制和一对互补的MOS管组成。
输入驱动器:(模拟输入,上拉输入,下拉输入,浮空输入)由TTL肖特基触发器、带开关的上拉电阻电路盒带开关的下拉电阻电路组成。
三、工作模式:
(1)普通推挽输出:引脚可输出低电平和高电平,用于较大功率驱动的输出。
(2)普通开漏输出:引脚只能输出低电平。
(3)复用推挽输出:引脚不仅具有推挽输出的特点,还使用片内外设的功能。
(4)复用开漏输出:引脚不仅具有开漏输出特点,而且还使用片内外设功能。
(5)上拉输入:用于默认上拉至高电平输入。
(6)下拉输入:用于默认下拉至高电平输入。
(7)浮空输入:用于不确定高电平输入。
(8)模拟输入:用于外部模拟信号输入。
四、GPIO相关库函数:
GPIO_DeInit:将外设GPIOx寄存器恢复为复位启动时的默认值。
GPIO_Init:根据GPIO_InitStruct中指定的参数初始化外设GPIOx寄存器。
GPIO_SetBits:指定GPIO端口的指定引脚置高电平。
GPIO_ResetBits:指定GPIO端口的指定引脚置低电平。
GPIO_Write:向指定GPIO端口写入数据。
GPIO_ReadOutputDataBit:读取指定GPIO端口的指定引脚的输出。
GPIO_ReadOutputData:读取指定GPIO端口的输出。
GPIO_ReadInputDataBit:读取指定GPIO端口的指定引脚的输入。
GPIO_ReadInputDate:读取指定GPIO端口的输入。
GPIO_EXTITLineConfig:选择被用作外部中断/事件线的GPIO引脚。
五、开发实例步骤
1、功能要求
2、硬件设计
3、软件流程设计
4、软件代码实现
5、软件模拟仿真
6、下载到硬件运行
六、总结
通过本单元的学习,我初步了解了关于GPIO相关知识内容,对于工程创建,基本的程序处理以及实例构建,通过实际操作有了初步经验,对于嵌入式开发产生了第一印象。
对于本单元,我是有很大收获的,尤其是理解了,借助GPIO,微控制器可以实现对外围设备最简单最直观的监控,体现其掌握的必要性,让我有了继续学习的信心。