510第5章通用和复用功能IO应用

合集下载

第五章 IO端口、输入捕捉

第五章   IO端口、输入捕捉
• 注: 为了将PORTB 引脚用作数字I/O,ADPCFG 寄 存器中的相应位必须置为“1”(即使关闭了A/D 模块 也应如此)。
• 图5-2: 共用的端口结构框图
• 5.3.1 I/O 与多个外设复用
• 对于有些dsPIC30F 器件,尤其是那些带有少量 I/O 引脚数较少的器件,其每个I/O 引脚可能要 复用多种外设功能。图5-2 所示为两个外设与同 一个I/O 引脚复用的示例。
• 和TRISx 寄存器以及该端口引脚将读作0
5.3 外设复用
• 当某个外设使能时,与其相关的引脚将被禁止作为通 用I/O 引脚使用。可以通过输入数据路径读该I/O 引脚, 但该I/O 端口位的输出驱动器将被禁止。
• 与另一个外设共用一个引脚的I/O 端口总是服从于该外 设。外设的输出缓冲器数据和控制信号提供给一对多 路开关。该多路开关选择是外设还是相关的端口拥有 输出数据的所有权以及I/O 引脚的控制信号。图11-2 显示了端口如何与其他外设共用,以及与外设连接的 相关I/O 引脚。
• 参照图5-2,外设多路开关的结构将决定外设输 入引脚是否可以通过使用PORT 寄存器用软件控 制。
• 当图中所示的概念化的外设在功能被使能时,会断开 I/O 引脚与端口数据的连接。一般而言,下列外设允许 通过PORT 寄存器手动控制它们的输入引脚:
• 外部中断引脚 • 定时器时钟输入引脚 • 输入捕捉引脚 • PWM 故障引脚 • 大多数串行通信外设在使能时,将完全控作0 • bit 13 ICSIDL:输入捕捉模块在空闲时停止控制位 • 1 = 输入捕捉模块在CPU 空闲模式将停止 • 0 = 输入捕捉模块在CPU 空闲模式将继续工作 • bit 12-8 未用:读作0 • bit 7 ICTMR:输入捕捉定时器选择位 • 1 = 捕捉事件时捕捉TMR2 的内容 • 0 = 捕捉事件时捕捉TMR3 的内容 • 注: 可供选择的定时器可能会和上述不同。 更多详细

第5章通用和复用功能IO应用

第5章通用和复用功能IO应用
出信号 ➢ 速度与应用匹配:
串口,bps 115.2k ---2 M 即可,节能、噪声小; I2C ,400K ,留一点容量,10M; SPI 18M或9M , 选用50M
GPIO端口输入数据寄存器(GPIOx_IDR) (x=A..E)
端口输出数据寄存器(GPIOx_ODR) (x=A..E)
输出缓冲器被禁止 施密特触发输入被激活 根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器 对输入数据寄存器的读访问可得到I/O状态
STM32的 I/O输出配置
输出配置有四种: ➢ 推挽输出(OUT_PP,PP:Push_Pull) ➢ 开漏输出(OUT_OD,OD:Open Drain) ➢ 推挽式复用功能(AF_PP,AF:Alternate-Fuction) ➢ 开漏复用功能(AF_OD)
I/O端口若复用功能使用时的配置
推挽式复用功能(AF_PP,AF:Alternate-Fuction) 输入时配置有三种:浮空输入、输入上拉、输入下拉 输出时配置:推挽式 输入/输出双向:输入出模式为浮空输入、输出模式为推挽式
➢ 开漏复用功能(AF_OD) 输入时配置有三种:浮空输入、输入上拉、输入下拉 输出时配置:开漏模式 输入/输出双向:输入出模式为浮空输入、输出模式为开漏模式
1、GPIO基本概念
STM32F10xxx的I/O端口可以分为两类工作方式: (1)用作General Purpose Input Output(通用输入/输出 端口)使用,即简称GPIO; (2)用作复用功能使用,如中断、ADC、定时器等使 用。
STM32的I/O口是需要软件配置模式、速度、时钟并 使能的。

单片机原理与应用技术(第二版) 第5章

单片机原理与应用技术(第二版) 第5章

P1口作为通用I/O使用,具有输出、读引脚和读锁存器 三种工作方式。
(1) 输出方式。单片机执行写P1口的指令,如“MOV P1,#data”时,P1口工作于输出方式。此时数据经内部总线 送入锁存器锁存。如果某位的数据为1,则该位锁存器输出 端Q=1,Q=0,使V1截止,从而在引脚P1.x上出现高电平; 反之,如果数据为0,则Q=0,Q=1,使V1导通,P1.x上出 现低电平。
这种读锁存器的方式是为了避免可能出现的一种错误。 例如,用一根口线直接去驱动端口外的一个NPN晶体管基极, 当向口线写“1”时,该晶体管导通,导通的三极管集极与发 射极间电压接近0 V,会把端口引脚的高电平拉低,这样直 接读引脚就会把本来的“1”误读为“0”。但若从锁存器Q端 读,就能避免这样的错误,得到正确的数据。也就是说,当 某位输出为1时,若有外接器件拉低电平,就有区别了,读 锁存器状态是1,读引脚状态是0,锁存器状态取决于单片机 试图输出什么电平, 引脚状态则是引脚的实际电平。
因此,当作为读引脚方式使用时,应先对该口写“1”, 使场效应管截止,再进行读操作,以防止场效应管处于导 通状态,使引脚为“0”,而引起误读。
P1口能驱动四个LSTTL负载。P1每位口最大灌入电流 为10 mA,8位总共不能超过15 mA。P1口有内部上拉电阻, 因此在输入时,由集电极开路或漏极开路电路驱动,也无 需外接上拉电阻。
(2) 读引脚方式。 单片机执行读引脚的指令一般都是以I/O 端口为源操作数的指令,如“MOV A,P1”。这时“读引脚” 端有效,控制器打开三态门1,引脚P1.x上的数据经三态门1进 入芯片的内部总线,并送到累加器A。因此,读引脚输入时无 锁存功能。
当单片机执行读引脚操作时,如果锁存器原来寄存的数据 Q=0,那么由于Q= 1,将使V1导通,引脚P1.x被始终钳位在低 电平,无法读到引脚输入的高电平。为此,用户在使用读引脚 指令前,必须先用输出指令置Q=1、Q=0,使V1截止,这时才 能读到引脚的真实状态。这就是P1被称为“准双向口”的含 义(即输出可直接操作,但输入前需先置“1”再输入)。

51单片机实战指南-51单片机IO口简单应用

51单片机实战指南-51单片机IO口简单应用

2.2 闪烁灯的制作
在日常生活中,有各种各样的闪烁灯,有的应用于娱乐场 所,有的应用于店面等的装饰,有的起警示作用。如舞台 灯、汽车转向灯、十字路口的黄闪灯等。
在单片机控制系统中,通过I/O口进行开关量的控制占用较 大的比重,如LED发光二极管的亮灭、电动机的启停等控 制都属于单片机的开关量输出控制。
2.1 单片机最小应用系统
单片机最小系统是指维持单片机正常工作所必需的电路连接。
对于51单片机,将时钟电路(晶振电路)和复位电路接入即可 构成单片机最小应用系统,该系统接+5V电源,配以相应的程 序就能够独立工作,完成一定的功能。
2.1 单片机最小应用系统
图2-1 单片机最小应用系统
2.1 单片机最小应用系统
2.2.1 硬件电路设计
图2-2 发光二极管控制电路
2.2.2 单片机C语言编程的基本方法
#include <reg52.h> //52系列单片机头文件
sbit A0=P1^5; //将P1.5定义为74HC138的A0引脚
sbit A1=P1^6; //将P1.6定义为74HC138的A1引脚
//主程序main函数
{
while(1)
//主程序中设置死循环程序,保证周而复始运行
{
A2=A1=A0=0;
P0=0xff; //全灭。此语句可省略,因复位后P0即为0xff
Led10=0;
//点亮LED 10
Led10=1;
//熄灭LED 10
实际运行这个程序发
}
现二极管一直在亮
}
2.2.3 程序设计
//将P1.7定义为74HC138的A2引脚
int main(void)

单片机教程单片机IO的使用

单片机教程单片机IO的使用

IO口的位操作
位设置
通过将某一位设置为1或0,可以 控制该位对应的硬件设备的工作
状态。
位清除
将某一位清零,通常用于关闭某个 硬件设备。
位反转
将某一位取反,实现硬件设备的状 态切换。
IO口的配置寄存器
1 2
配置寄存器的功能
配置寄存器用于设置IO口的模式、输出类型、输 出速度等参数,以满足不同的硬件设备控制需求。
按键输入
01
```c
02
void main() {
03
unsigned char keyState = 0; // 按键初始状态为未 按下
按键输入
while (1) {
if
(GPIO_ReadInputDataBit(GPIOx,
GPIO_Pin_x) == 0) { // 检测按键是否被按下
if (keyState == 0) { // 如果之前未按下,则进 入处理函数
特性。
02
LED灯的连接方式
LED灯通常与单片机的一个GPIO(通用输入输出)端口连接,通过控
制该GPIO端口的电平高低来控制LED灯的亮灭。
03
LED灯的控制代码
在单片机程序中,可以通过设置GPIO端口的寄存器值来控制LED灯的
亮灭,例如在C语言中,可以使用以下代码实现LED灯的闪烁
LED灯控制
• delay(1000);
LED灯控制
} } ```
按键输入
按键输入的原理
按键输入通常通过单片机的中断或轮询方式实现,当按键被按下时,会触发一个电平变化 或中断事件。
按键输入的连接方式
按键通常与单片机的一个GPIO端口连接,当按键被按下时,该GPIO端口的电平会发生跳 变。

第4章_通用和复用IO功能

第4章_通用和复用IO功能

输入配置: 可配置成浮空/上拉/下拉输入模式
例:将GPIOA所有的引脚都设置为输入浮空模式
/* 选择配置的引脚 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; /* 选择引脚翻转的速度 */ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; /* 选择输入是浮空模式*/ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; /* 初始化引脚 */ GPIO_Init(GPIOA, &GPIO_InitStructure);
2. 单独的位设置或位清除
• 当对GPIOx_ODR的个别位编程时,软件不需 要禁止中断:在单次APB2写操作里,可以 只更改一个或多个位。 • 这是通过对“置位/复位寄存器”(置位复 位寄存器是:GPIOx_BSRR,复位寄存器是: GPIOx_BRR)中想要更改的位写1 来实现的。 没被选择的位将不被更改。
复用功能配置: 输入可配置成浮空/上拉/下拉输入模式 输出可配置成推挽或开漏
复用功能的模拟输入配置: 输出缓冲器、施密特触发输入、弱上拉和下拉 电阻被禁止,读取输入数据寄存器时值0
5 软件重新映射I/O 复用功能
• 为了使不同器件封装的外设I/O功能的数量 达到最优,可以把一些复用功能重新映射 到其他一些脚上。这可以通过软件配置相 应的寄存器来完成。这时,复用功能就不 再映射到它们的原始引脚上了。
4、复用功能(AF) 使用默认复用功能前必须对端口位配置寄存器编 程。 • 对于复用输入功能,端口可以配置成输入模式 (浮空、上拉或下拉) • 对于复用输出功能,端口必须配置成复用功能输 出模式(推挽或开漏)。 • 对于双向复用功能,端口位必须配置复用功能输 出模式(推挽或开漏)。这时,输入驱动器被配 置成浮空输入模式。

io多路复用原理

io多路复用原理

io多路复用原理一、概述IO多路复用是计算机网络编程中的一种重要技术,其原理是多个网络I/O流通过一个轮询机制集中管理,使得程序能够同时监视多个网络流并且在任何一个网络流产生数据时能够对其进行读取和处理。

与传统的单进程单线程模型不同,IO多路复用通过底层的操作系统机制使得多个I/O流能够共享同一个线程,从而减少了CPU时间的浪费,提高了程序的运行效率。

在Unix/Linux操作系统中,IO多路复用常常使用select()、poll()以及epoll()等函数来实现。

本文将从IO多路复用的原理、实现方式以及应用场景等方面对这一技术进行介绍和剖析。

二、原理在传统的网络编程模型中,每个I/O流都会由一个线程来负责管理,当有多个网络流需要处理时,就需要创建多个线程来分别处理每个流,这样会导致系统中线程数量的快速增长,同时也会带来线程间的上下文切换等额外的开销,对于CPU以及系统资源的占用都是不小的。

而IO多路复用的作用在于将多个I/O流通过一个轮询机制放到一个线程中来管理,使得程序能够同时监视多个网络流并且在任何一个网络流产生数据时能够对其进行读取和处理。

这种方法具有如下优点:1.减少了线程的数量,从而降低了系统的开销。

2.通过轮询机制实现,避免了线程内部的阻塞和唤醒过程,提高了程序的运行效率。

下面以select()函数为例,对IO多路复用的实现原理进行详细解释。

1.select()函数select()函数属于IO多路复用的基础函数,可以同时监视多个网络I/O流,当其中任何一个网络流产生I/O操作请求时,就能够对剩余的I/O流进行循环扫描,并进行数据的读取和处理。

select()函数的基本声明方式为:int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval*timeout);其中各个参数的含义如下:nfds:监视的最大文件描述符(即最大有效的文件描述符+1),也就是待监视的网络I/O流的数量。

第5章MCS51单片机基本IO功能及应用(2)

第5章MCS51单片机基本IO功能及应用(2)
单独按键键盘很简单 P10 只需要测试与按键相 连接口线的电平即可 P11 如果是高电平 则没有被按下 如果是低电平 P12 则该按键被按下 K0 K1 K2
GND
独立连接式键盘例 独立连接式键盘例1:
KEY:
P1.0 P1.1
AT89C52
JB P1.0,KEY1 ;逐键判别 ;去抖动 ACALL DELAY20MS ;去抖动 JNB P1.0,FUNC1 KEY1: JB P1.1,EXIT ;去抖动 ACALL DELAY20MS ;去抖动 JNB P1.1,FUNC2 EXIT: RET ;无任何键按下由此返回 P1.0要求的 功能1 要求的“ FUNC1: …… ;做P1.0要求的“功能1” RET P1.1要求的 功能2 要求的“ FUNC2: …… ;做P1.1要求的“功能2” RET
0列 列 1列 列 2列 列 3列 列
P1.4 P1.5 P1.6 P1.7
例 某单片机控制系统,P1口接有8发光二极管,P3.0、P3.1、P3.2、P3.3接有 4个开关K1、K2、K3、K4,试画出接口电路,并编程使得当K1按下时8个发光二 极管全亮;当K2按下时8个发光二极管闪亮;当K3按下时8个发光二极管由左向 右点亮;当K4按下时8个发光二极管全灭。 +5V
2行 行
设:第3行/第1列结点有键按下 第 行 第 列结点有键按下 首先: “1111 0000” → P1 首先 然后读P1: P1← “1101 xxxx” 然后读 只留高4位 只留高 位: A = “1101 0000” 因为有键按下, 因为有键按下 A ≠11110000
3行 行
P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
+v
0行 行 1行 行 2行 行 3行 行

第五章通用和复用功能IO口

第五章通用和复用功能IO口

第五章通用和复用功能IO口1.引言通用和复用功能IO口是现代数字电路设计中的重要组成部分。

它们允许电路与外部设备进行通信和控制,实现数据的输入、输出和处理。

在本章中,我们将介绍通用和复用功能IO口的基本原理和应用。

通用功能IO口是一种通用的输入/输出接口,可以通过软件来配置不同的功能。

它可以被用作输入口,用来读取外部设备的状态;也可以被用作输出口,用来控制外部设备的运行。

通用功能IO口通常由一组引脚组成,每个引脚都可以配置为不同的功能。

通过编程的方式,我们可以根据需要来选择引脚的功能,并进行相应的输入和输出操作。

复用功能IO口是一种多功能的输入/输出接口,可以通过硬件设置来选择不同的功能。

它通常由一个多路器和多个外设模块组成。

多路器的作用是选择不同的外设模块进行连接,从而实现不同的输入和输出功能。

使用复用功能IO口,可以有效地减少芯片上的引脚数量,提高系统的可扩展性和灵活性。

4.通用功能IO口的应用通用功能IO口广泛应用于各种数字电路设计中。

它可以连接各种外设设备,如按钮、开关、传感器、LED灯等。

通过编程的方式,我们可以读取外设的状态,并根据需要来控制外设的运行。

通用功能IO口还可以连接到其他数字电路中,实现数据的输入、输出和处理。

例如,它可以与存储器、处理器、通信接口等进行连接,实现数据的存储、处理和传输。

5.复用功能IO口的应用复用功能IO口广泛应用于嵌入式系统和通信系统中。

它可以连接各种外设设备,如显示器、触摸屏、以太网接口、USB接口等。

通过硬件设置,我们可以选择不同的外设模块进行连接,并根据需要来实现不同的输入和输出功能。

复用功能IO口还可以连接到其他模块中,实现数据的传输和处理。

例如,它可以与显示模块、通信模块等进行连接,实现图形的显示、数据的传输等。

6.小结通用和复用功能IO口是现代数字电路设计中的重要组成部分。

它们允许电路与外部设备进行通信和控制,实现数据的输入、输出和处理。

通过软件和硬件的配置,我们可以选择引脚的功能,并进行相应的输入和输出操作。

第5章MCS51单片机基本IO功能及应用(1)

第5章MCS51单片机基本IO功能及应用(1)

当CPU执行 MOV A,P3或 JB/JNB 执行 , 或 +5V P3.x,标号 时,产生读引脚控制信号, 产生读引脚控制信号, , 第二功能输出 此时读的是引脚的状态 。
0 P3.0
DB0.0
写控制信号
D
锁存器
Q

CP Q
0
读引脚 第二功能输入 注意: 注意 1、P3口作输入口时,P30—P37上的信号经过缓冲器送到内部数据总线上。 口作输入口时, 上的信号经过缓冲器送到内部数据总线上。 、 口作输入口时 上的信号经过缓冲器送到内部数据总线上 在读引脚之前,要先将锁存器置1,否则总是读到0。 在读引脚之前,要先将锁存器置 ,否则总是读到 。
P0口直接做输出口时,输出信息的过程: 口直接做输出口时,输出信息的过程: 口直接做输出口时 送到P0.0的过程) P0.0的过程 (将0送到P0.0的过程)
地址/数据控制线 地址 数据控制线
+5V
0
读锁存

0 P0.0 0
DB0.0 D
0
写控制信号
CP Q
锁存器 1 转换开关
Q
读引脚 注意: 口做输出口时, 注意 P0口做输出口时,内部数据经过锁存器送到 口做输出口时 内部数据经过锁存器送到P00---P07上。由于上管 上 始终截止,而当下管也截止时, 被架空, 始终截止,而当下管也截止时,P00—P07被架空,没有标准的高电平,所 被架空 没有标准的高电平, 口作输出口使用时, 以P0口作输出口使用时,必须外接上拉电阻。 口作输出口使用时 必须外接上拉电阻。
P1口直接做输出口时,输出信息的过程: 口直接做输出口时,输出信息的过程: 口直接做输出口时 送到P1.0的过程 的过程) (将1送到 送到 的过程 +5V

DSP 数字输入输出

DSP 数字输入输出

第5章数字I/O数字I/O脚有专用和复用。

数字I/O脚的功能通过9个16位控制寄存器来控制。

控制寄存器分为两类:(1)I/O复用控制寄存器(MCR X),来选择I/O脚是外设功能还是I/O功能。

(2)数据方向控制寄存器(P X DATDIR):控制双向I/O 脚的数据和数据方向。

注意:数字I/O脚是通过映射在数据空间的控制寄存器来控制的,与器件的I/O空间无任何关系。

240X/240X A多达41只数字I/O脚,多数具有复用功能。

5.1 数字I/O寄存器简介I/O复用引脚见下图。

表5-1列出I/O模块中有用的寄存器,地址为:7090h—709Fh。

注意:映射到数据存储器空间。

当复用I/O脚被配置为外设功能或I/O时,引脚的状态可通过读I/O数据寄存器来获取。

5.2 I/O 端口复用控制寄存器3个I/O端口复用控制寄存器:MCRA、MCRB、MCRC。

(1)I/O端口复用控制寄存器A 地址:7090h表5-2 I/O端口复用控制寄存器A的配置位外设功能通用I/OMCRA.0 SCITXD IOPA0MCRA.1 SCIRXD IOPA1位外设功能通用I/O MCRA.2 XINT1 IOPA2 MCRA.3 CAP1/QEP1 IOPA3 MCRA.4 CAP2/QEP2 IOPA4 MCRA.5 CAP3 IOPA5 MCRA.6 PWM1 IOPA6 MCRA.7 PWM2 IOPA7 MCRA.8 PWM3 IOPB0 MCRA.9 PWM3 IOPB1 MCRA.10 PWM3 IOPB2 MCRA.11 PWM4 IOPB3 MCRA.12 T1PWM/T1CMP IOPB4 MCRA.13 T2PWM/T2CMP IOPB5 MCRA.14 TDIRA IOPB6 MCRA.15 TDIRB IOPB7(2)I/O端口复用控制寄存器B 地址:7092h表5-2 I/O端口复用控制寄存器B的配置位外设功能通用I/OMCRB.0 W/R* IOPC0MCRB.1 BIO* IOPC1MCRB.2 SPISIMO IOPC2MCRB.3 SPISOMI IOPC3MCRB.4 SPICLK IOPC4MCRB.5 SPISTE* IOPC5MCRB.6 CANTX IOPC6MCRB.7 CANRX IOPC7位外设功能通用I/O MCRB.8 XINT2/ADCSOC IOPD0 MCRB.9 EMU0 保留MCRB.10 EMU1保留MCRB.11 TCK保留MCRB.12 TDI保留MCRB.13 TDO保留MCRB.14 TMS保留MCRB.15 TMS2保留表5-3 I/O端口复用控制寄存器C 的配置位外设功能通用I/OMCRC.0 CLKOUT IOPE0MCRC.1 PWM7 IOPE1MCRC.2 PWM8 IOPE2MCRC.3 PWM9 IOPE3MCRC.4 PWM10 IOPE4(3)I/O端口复用控制寄存器C 地址:7094h位外设功能通用I/O MCRC.5 PWM11 IOPE5 MCRC.6 PWM12 IOPE6 MCRC.7 CAP4/QEP3 IOPE7 MCRC.8 CAP5/QEP4IOPF0 MCRC.9 CAP6 IOPF1 MCRC.10 T3PWM/T3CMP IOPF2 MCRC.11 T4PWM/T4CMP IOPF3 MCRC.12 TDIRB IOPF4 MCRC.13 TCLKINB IOPF5 MCRC.14 保留IOPF6 MCRC.15 保留IOPF75.3 数据和方向控制寄存器6个数据和方向控制寄存器(P X DATDIR),包含两个功能位。

IO复用——精选推荐

IO复用——精选推荐

IO复⽤IO复⽤简单介绍IO复⽤使得程序能同⼀时候监听多个⽂件描写叙述符。

这对提⾼程序的性能⾄关重要。

通常。

⽹络程序在下列情况下须要使⽤IO复⽤技术:client程序要同⼀时候处理多个socket。

client程序要同⼀时候处理⽤户输⼊和⽹络连接。

TCPserver同⼀时候处理监听socket和连接socket。

server要同⼀时候处理TCP请求和UDP请求。

须要指出的是。

IO复⽤尽管能同⼀时候监听多个⽂件描写叙述符,但它本⾝是堵塞的。

⽽且当多个⽂件描写叙述符同⼀时候就绪时,假设不採取额外的措施。

程序就仅仅能按顺序依次处理当中的每个⽂件描写叙述符,这使得server程序看起来像是串⾏⼯作的。

假设要实现并发,仅仅能使⽤多进程或多线程等编程⼿段。

Linux下实现IO复⽤的系统调⽤主要有select、poll和epoll。

select系统调⽤select系统调⽤的⽤途是:在⼀段指定时间内,监听⽤户感兴趣的⽂件描写叙述符上的可读、可写和异常事件。

select APIselect系统调⽤的原型例如以下:#include <sys/select.h>#include <sys/time.h>int select(int maxfd, fd_set *readfds, fd_set *writefds, fe_set *exceptfds, const struct timeval *timeout);1)maxfd參数指定被监听的⽂件描写叙述符的总数。

它通常被设置为select监听的全部描写叙述符中的最⼤值加1,由于⽂件描写叙述符是从0開始计数的。

2)readfds、writefds和exceptfds參数分别指向可读、可写和异常等事件相应的⽂件描写叙述符中集合。

应⽤程序调⽤select函数时。

通过这3个參数传⼊⾃⼰感兴趣的⽂件描写叙述符。

select调⽤返回时。

内核将改动它们来通知应⽤程序哪些⽂件描写叙述符已经就绪。

第5章通用和复用功能IO应用

第5章通用和复用功能IO应用

void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
GPIOA
GPIO_Pin_0
清除指定的数据端口位P186
GPIOB ……
GPIO_Pin_1 ……
void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
端口位配置表
速度
➢ 2M 、10M、50M为IO端口驱动电路的相应速度,并非输出信号的 速度
➢ 芯片内部在IO端口的输出部分设计了多个相应速度不同的驱动电 路,用过根据设计的需要选择驱动电路
➢ 输出信号的速度与程序有关 ➢ 高频的驱动电路噪声较高,选用低频驱动电路可以降低噪声 ➢ 输出较高的频率,选用较低频率的驱动模块,可能得到失真的输
#define GPIOE
((GPIO_TypeDef *) GPIOE_BASE)
#define GPIOF
((GPIO_TypeDef *) GPIOF_BASE)
#define GPIOG
((GPIO_TypeDef *) GPIOG_BASE)
如何使用GPIOA指向的结构体成员?
GPIO初始化结构体
如何使用GPIO数据结构?
#define PERIPH_BASE
((uint32_t)0x40000000) 定义在Stm32f10x.h中
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
#define GPIOA_BASE #define GPIOB_BASE #define GPIOC_BASE #define GPIOD_BASE #define GPIOE_BASE #define GPIOF_BASE #define GPIOG_BASE

第五章 通用和复用功能IO口解析

第五章 通用和复用功能IO口解析
➢ 多数GPIO管脚都与数字或模拟的外设共用。所有 的GPIO管脚都有大电流通过能力。
➢ 在需要的情况下,I/O管脚的外设功能可以通过一 个特定的操作锁定,以避免意外的写入I/O寄存器 。
➢ 在APB2上的I/O脚提供高达18MHz的翻转速度。
一、引脚介绍:以STM32F103x为例
5.1 GPIO的工作原理
3、编写用户文件 配置gpio口的相关操作:初始化结构体 库函数
GPIO_InitTypeDef GPIO_InitStructure; typedef struct 库文件利用关键字typedef定义的新类型 { uint16_t GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; }GPIO_InitTypeDef;
寄存器操作 int main(void) {
GPIOB->CRL=0x3<<20; //配置PB5为推挽输出,50MHZ
while(1) { GPIOB->ODR=0x0; Delay(0xAFFFF); GPIOB->ODR=0x20; Delay(0xAFFFF); } }
举例说明,分析流水灯例程—了解库开发流程
二、IO口的基本结构
5.1 GPIO的工作原理
2、 GPIO的8种设置模式 ⑸开漏输出模式
二、IO口的基本结构
5.1 GPIO的工作原理
2、 GPIO的8种设置模式 ⑸开漏输出模式
当CPU在编号1端通过“位设置/清除寄存器”或“输出数据寄存器”写 入数据后,该数据位将通过编号2的输出控制电路传送到编号4的I/O端口。
二、IO口的基本结构
2、 GPIO的8种设置模式

4 通用IO

4 通用IO
第四章
通用I/O
I/O接口的功能
1.实现和不同外设的速度匹配
大多数的外设的速度很慢,无法和µs量级 的单片机速度相比。


单片机只有在确认外设已为数据传送做好 准备的前提下才能进行I/O操作。
为了知道外设是否准备好,需I/O接口电路 与外设之间传送状态信息。
I/O接口的功能
2. 输出数据锁存
4. 接口电路的可编程性
• 许多接口电路具有多种功能和工作方式,可以通过 编程的方法选定其中一种 • 接口需要进行物理连接,还需要编写接口软件 • 接口软件有两类: – 初始化程序段——设定工作方式等 – 数据交换程序段——管理、控制、驱动外设,负 责外设和系统间信息交换
I/O端口的编址
两种方式:独立编址与统一编址。 1. I/O端口独立编址方式 I/O端口地址空间和存储器地址空间分开编址,但需专门读 写I/O的指令和控制信号。(如8086的IN、OUT指令,IOR、IOW 控制信号) 2. I/O端口按存储器统一编址方式 I/O端口与数据存储器单元同等对待,统一编址。 不需要专门的I/O指令,直接使用访问数据存储器的指令进 行I/O操作,简单、方便且功能强。(Freescale、MCS51)
void ledpmd(void) { unsigned char led,i; DDRA=0xff; while(1) { led=0xfe; for(i=0;i<8;i++) { PTA=led; led=(led<<1)+1; //最低位 dly(); } } }
例 在D口接8个LED, 在B口接8个开关量输入,编 程实现通过开关的关断控制LED的亮灭。
MC68HC908GP32的并行I/O端口

5、IO扩展及应用

5、IO扩展及应用

一、技术概述
3、IO其他操作指令 ANL PX,A ORL PX,A XRL PX,A INC PX DEC PX DJNZ PX,rel CJNE A,PX ,rel
二、IO口的直接应用(不扩展)
1、数据的无条件传送
K0~k3 P1.0

P1.3 P1.7

P1.4 8031 LED0~3
二、IO口的直接应用(不扩展)
《单片机基础》
内容简介
技术概述 IO直接应用 单片机简单IO扩展 可编程IO扩展 打印机接口技术 键盘技术 LED显示器接口技术
IO扩展
8255A 8155
IO扩展应用
一、技术概述
为什么需要IO接口电路,存储器扩展不需要 1、外部设备工作速度差异大 2、设备种类多 3、数据信号 4、数据传送方式
MOV DPTR,#7FFFH MOV A, #DATA MOVX @DPTR, A
三、IO可编程扩展
8255初始化
对8255的3个端口的工作方式预先设置。设置 控制字经控制口写入。
例如,欲设置8255的A、B、C口全为输出状态(或输出方 式),控制字为80H。
程序(结合上图)如下: MOV DPTR, #0003H MOV A, #80H MOVX @DPTR, A ;8255控制口地址 DPTR ;控制字送A ;控制字写入控制寄存器
MOV P1, A MOV A, P1 CPL A ORL A, #0FH SWAP A MOV P1, A RETI
三、单片机简单IO扩展
1、简单输入
思考:
1、244如何工作 2、地址多少? 3、指令如何写? MOV DPTR ,#0BFFFH MOVX A, @DPTR
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
不使用
速度
? 2M 、10M、50M为IO端口驱动电路的相应速度,并非输出信号 的速度
? 芯片内部在IO端口的输出部分设计了多个相应速度不同的驱动电 路,用过根据设计的需要选择驱动电路
? 输出信号的速度与程序有关 ? 高频的驱动电路噪声较高,选用低频驱动电路可以降低噪声 ? 输出较高的频率,选用较低频率的驱动模块,可能得到失真的输
2、STM32的I/O端口工作模式
2.1 STM32 I/O功能
主要功能:
? 输入浮空

? 输入上拉 ? 输入下拉

? 模拟输入
? 开漏输出
? 推挽式输出

? 推挽式复用功能

? 开漏复用功能
STM32 的I/O端口框图
漏极
图5.1 STM32的GPIO原理图 书P44
STM32 的I/O 输入配置
I/O端口做复用功能使用时涉及的寄存器(后面再讲)
GPIO配置寄存器(GPIOx_CRL ,GPIOx_CRH)
1. 每个I/O口需要4位设置,每组端口(如 PA)有16个 I/O,因此,每组端口一共需要 16*4位用于设置,也 就是2个32位的字
2. 每个I/O口需要4位设置包括:引脚输入输出工作模式、 速度
端口位设置/清除寄存器 (GPIOx_BSRR) (x=A..E)
配置模式
CNF1
模拟输入
0
输入浮空
输入下拉
1
输入上拉
推挽式输出
0
开漏输出
推挽式复用功能 1
开漏复用功能
端口位配置表
CNF0 MODE[1:0]
0
00
1
0
0
00:保留
1
01:最大输出速度为10MHz
0
10:最大输出速度为2MHz 11:最大输出速度为50MHz
1
PxODR 寄 存 器 不使用 不使用 0 1 0或1 0或1 不使用
输入配置有四种: 浮空输入(In_Floating) 输入上拉(IPU:In Push_Up) 输入下拉(IPD:In Push_Down) 模拟输入(AIN:Anolog In)
? 输出缓冲器被禁止 ? 施密特触发输入被激活 ? 根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接 ? 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器 ? 对输入数据寄存器的读访问可得到I/状态
STM32的 I/O输出配置
输出配置有四种: ? 推挽输出(OUT_PP,PP:Push_Pull) ? 开漏输出(OUT_OD,OD:Open Drain) ? 推挽式复用功能(AF_PP,AF:Alternate-Fuction) ? 开漏复用功能(AF_OD)
? 输出缓冲器被激活 :开漏模式,推挽模式 ? 施密特触发输入被激活 ? 弱上拉和下拉电阻被禁止 ? 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器 ? 在开漏模式时,对输入数据寄存器的读访问可得到I/O状态 ? 在推挽式模式时,对输出数据寄存器的读访问得到最后一次写的值。
STM32 GPIO复用功能配置
复用配置有三种: 复用输出:端口配置为开漏模式,输出控制器与输出寄存器断 开,与片上外设的输出信号连接,送复用功能输出信号到I/O引脚。 复用输入:端口必须配置成输入模式(浮空、上拉或下拉), 且输入引脚必须由外部驱动,I/O引脚信号经施密特触发器到达复 用功能输入端,送至片上外设。 双向复用:端口配置复用功能输出模式为开漏模式,输入驱动 器被配置成浮空输入模式。
出信号 ? 速度与应用匹配:
串口,bps 115.2k ---2 M 即可,节能、噪声小; I2C ,400K ,留一点容量,10M; SPI 18M或9M , 选用50M
GPIO端口输入数据寄存器(GPIOx_IDR) (x=A..E)
端口输出数据寄存器(GPIOx_ODR) (x=A..E)
I/O端口若复用功能使用时的配置
推挽式复用功能(AF_PP,AF:Alternate-Fuction) ? 输入时配置有三种:浮空输入、输入上拉、输入下拉 ? 输出时配置:推挽式 ? 输入/输出双向:输入出模式为浮空输入、输出模式为推挽式
? 开漏复用功能(AF_OD) ? 输入时配置有三种:浮空输入、输入上拉、输入下拉 ? 输出时配置:开漏模式 ? 输入/输出双向:输入出模式为浮空输入、输出模式为开漏模式
STM32 GPIO引脚
书P47~P53 表5.3 P50 :引脚的描述 表5.4 TIM2引脚配置 表5.5 复用功能映像
2.2 复用I/O工作模式
GPIO重映射
复用
? 复用,可以重影射 ? 引脚和输出寄存器断开,并和片上外设的输出信号连接 ? 设置为复用功能后,如果外设不被激活,输出不确定
第五章 通用和复用功能I/O应用
1、GPIO基本概念 2、STM32的I/O端口工作模式
2.1 通用I/O工作模式 2.2复用I/O工作模式 3、STM32 GPIO编程应用 4、应用例程(1) 5、位段操作 6、应用例程(2) 7、蜂鸣器设计 8、按键控制发光二极管设计(GPIO)
1、GPIO基本概念
STM32F10xxx 的I/O端口可以分为两类工作方式: (1)用作General Purpose Input Output (通用输入 /输 出端口)使用,即简称 GPIO; (2)用作复用功能使用,如中断、 ADC、定时器等使 用。
STM32的I/O口是需要软件配置模式、速度、时钟并 使能的。
3、I/O端口做 GPIO使用时涉及的 寄存器
1. GPIO配置寄存器 (GPIOx_CRL ,GPIOx_CRH) 2. GPIO数据寄存器 (GPIOx_IDR 和GPIOx_ODR) 3. 复位寄存器 (GPIOx_BRR) 4. 置位/复位寄存器 (GPIOx_BSRR) 5. 锁定寄存器 (GPIOx_LCKR)
I/O端口若做 GPIO使用时的配置
输入配置有四种: 浮空输入(In_Floating) 输入上拉(IPU:In Push_Up) 输入下拉(IPD:In Push_Down) 模拟输入(AIN:Anolog In)
输出配置有两种: ? 推挽输出(OUT_PP,PP:Push_Pull) ? 开漏输出(OUT_OD,OD:Open Drain)
相关文档
最新文档