第五章通用和复用功能IO口
第5讲 通用IO口(xkj201611)4
数字I/O端口模块通过64个16位寄存器来设置所有I/O引脚的功能 这些寄存器大概可以分为以下六类
-复用控制寄存器GPxMUX,确定I/O引脚为基本功能,还是 通用I/O功能引脚
- 方向控制寄存器GPxDIR-用来控制I/O引脚的数据方向 -数据寄存器GPxDAT-用来控制I/O引脚的数据 - 设置寄存器GPxSET-用来设置输出引脚的数据(高电平有效) - 清除寄存器GPxCLEAR-用来清除输出引脚的数据(高电平有效) -切换寄存器GPxTOGGLE-用来切换输出引脚的数据(高电平有效) LOGO
no qualification (SYNC to SYSCLKOUT) QUALPRD = SYSCLKOUT/2 QUALPRD . = SYSCLKOUT/4 . QUALPRD = SYSCLKOUT/510
. .
. .
C28x GPIO MUX/DIR Registers
Address 70C0h 70C1h 70C2h 70C4h 70C5h 70C6h 70CCh 70CDh 70CEh 70D0h 70D1h 70D2h 70D4h 70D5h 70D8h 70D9h Register GPAMUX GPADIR GPAQUAL GPBMUX GPBDIR GPBQUAL GPDMUX GPDDIR GPDQUAL GPEMUX GPEDIR GPEQUAL GPFMUX GPFDIR GPGMUX GPGDIR Name GPIO A Mux Control Register GPIO A Direction Control Register GPIO A Input Qualification Control Register GPIO B Mux Control Register GPIO B Direction Control Register GPIO B Input Qualification Control Register GPIO D Mux Control Register GPIO D Direction Control Register GPIO D Input Qualification Control Register GPIO E Mux Control Register GPIO E Direction Control Register GPIO E Input Qualification Control Register GPIO F Mux Control Register GPIO F Direction Control Register GPIO G Mux Control Register GPIO G Direction Control Register
io口复用原理
io口复用原理
I/O 口复用原理是指在电子设备中,通过硬件或软件的方式,将一个I/O 端口用于多种不同的功能或通信协议。
I/O 口复用的原理基于以下几个方面:
1. 功能复用:通过复用I/O 口,可以在不同的时间或条件下,将其配置为不同的功能。
例如,一个I/O 口可以在某些时候作为输入端口,用于读取传感器数据,而在其他时候作为输出端口,用于控制外部设备。
2. 通信协议复用:I/O 口还可以复用为支持多种通信协议的端口。
例如,一个USB 接口可以通过复用支持多种USB 协议,如USB 2.0、USB
3.0 等。
3. 时间复用:通过时分复用(TDMA)或轮询的方式,可以在不同的时间段内将I/O 口分配给不同的功能或通信协议。
这样可以实现多个功能或协议共享同一个I/O 口。
4. 引脚复用:在一些集成电路中,I/O 引脚可以通过内部寄存器或配置选项进行复用。
通过设置相应的寄存器或选项,可以将一个引脚配置为不同的功能,如输入、输出、UART、SPI 等。
I/O 口复用的优势包括减少硬件成本、降低系统复杂度、提高系统灵活性和可扩展性等。
通过复用I/O 口,可以充分利用有限的引脚资源,实现更多的功能和通信协议。
单片机IO口复用
void Key_Dispaly_Driver() //按键检测和数码管显示放一起 {
static uint8 num=0; //顺序扫描 static uint8 Key1TimeCont=0;//key1 去抖延时计数 static uint8 Key2TimeCont=0;//key2 去抖延时计数 static uint8 Key3TimeCont=0;//key3 去抖延时计数 static uint8 Key4TimeCont=0;//key4 去抖延时计数 static uint8 KeyLock=0;
结束语:上面程序有些已经注释了,本人也是看到公司的一个蒸汽流量计的显示电路就是用 此电路来实现数码管和按键公用 IO 口。所以自己就编了个程序来实现其键盘和显示的功能, 如有不对的地方,还望指正。本人是菜鸟,一直很喜欢电子,虽然现在从事的不是这方面的 工作。
void Key_Dispaly_Driver();
void Timer0_Init() {
TMOD |= 0x01; TH0 = (65536-1000)/256; TL0 = (65536-1000)%256; EA = 1; ET0 = 1; TR0 = 1; }
//定时 1ms
void main() {
P0 = 0xFD;
break;
case 4:
SEG_C = 0;
P0 = Tab[SegShow3];
break;
case 5:
SEG_C = 1;
P0 = 0xFB;
break;
case 6:
SEG_D = 0;
第五章 IO端口、输入捕捉
• 图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 的内容 • 注: 可供选择的定时器可能会和上述不同。 更多详细
单片机IO口介绍
单片机IO口介绍单片机(microcontroller)是一种集成电路芯片,具有运算、存储和控制功能。
它是嵌入式系统中最常用的处理器之一、在单片机中,IO (Input/Output)口是用来进行输入输出操作的接口。
IO口通常包括数字IO口和模拟IO口两种类型。
下面将详细介绍单片机IO口的功能和应用。
1.数字IO口:数字IO口是单片机与外部设备进行数字信号交换的接口。
数字IO口可以进行输入和输出操作,具有以下特点:-输入功能:可以通过读取外部设备的状态或信号,并将其转换为数字信号输入到单片机中进行处理。
例如,传感器的信号输入和按键的输入等。
-输出功能:可以通过将数字信号输出到外部设备,控制其工作状态。
例如,LED的控制、驱动电机或继电器等。
数字IO口通常以引脚(pin)的形式存在于单片机芯片上。
一个引脚包括输入端和输出端,可以根据需要进行配置。
数字IO口操作简单、速度快、精度高,常用于控制和通信等方面。
2.模拟IO口:模拟IO口是单片机与外部设备进行模拟信号交换的接口。
模拟IO口可以进行模拟输入和输出操作,常用于采集和控制模拟信号。
-模拟输入功能:可以从外部信号源中获取模拟信号,并将其转换为数字信号输入到单片机中进行处理。
例如,温度传感器、声音传感器等。
-模拟输出功能:可以将数字信号转换为模拟电压、电流等形式,输出到外部设备中。
例如,通过PWM(脉冲宽度调制)信号控制电机的转速。
模拟IO口通常通过ADC(模数转换器)和DAC(数模转换器)实现。
ADC将模拟信号转换为数字信号,DAC将数字信号转换为模拟信号。
模拟IO口的使用相对复杂,需要进行模数转换和数模转换,但在一些需要对模拟信号进行处理和控制的应用中起到关键作用。
3.应用场景:IO口在单片机系统中广泛应用于各种应用场景。
以下是一些常见的应用场景:-传感器接口:通过IO口连接传感器,读取传感器的输出信号,进行数据采集和处理。
例如温度、湿度、光照等传感器的接口。
第5章 GPIO及其编程9
注意:端口A除了作为功能口外,只能够作为输出口 使用。
大部分端口都是复用的,需要使用端口控制寄存器来决 定每个引脚使用哪个功能。
①端口控制寄存器(GPACON-GPHCON) : 定义引 脚的功能。 如果GPF0~GPF7和GPG0~GPG7用于 掉电模式的唤醒信号,它们必须被配置成中断模式。
rGPBDAT= rGPBDAT &(~ (1<<7)); //GPB7输出低电平,LED3亮
DelaySecond(x);
rGPBDAT= rGPBDAT | (1<<7); // GPB7输出高电平,LED3灭
rGPBDAT= rGPBDAT &(~ (1<<8)); //GPB8输出低电平,LED4亮
R1 R2 R3 R4
K1 K2 K3 K4
VDD33V
LED1
R5
LED2
R6
LED3
R7
LED4
R8
图8-2 按键与LED显示电路连接图
GPB5 GPB6 GPB7 GPB8
10
2. 通用I/O端口的程序设计
通用I/O端口的设计流程如下: ①确定使用的I/O端口是输入或输出功能。 ②根据1)配置相应端口的控制寄存器GPnCON,并 根据需要设置端口的上拉电阻寄存器GPnUP。 ③设置输出端口的初始值;根据程序的功能要求编写 程序。 程序设计如下:
②端口数据寄存器(GPADAT-GPHDAT): 用于IO 功能。如果端口被配置成输出端口,可以向GPnDAT 中的相关位写入数据;如果端口被配置成输入端口, 可以从GPnDAT中的相关位读入数据。
2-3 IO端口
D
0
MUX
T1
读引脚
P0口位结构
位线
引脚 10 11 12 13
14 15 16 17
第二功能 RXD(串行输入口) TXD(串行输出口) INT0(外部中断0) INT1(外部中断1)
T0(定时器0的计数输入) T1(定时器1的计数输入) WR(外部数据存储器写 脉冲) RD(外部数据存储器读脉 冲)
80C51单片机有4个8位的双向并行输入/输出(I/O)端口, 称为P0口、P1口、P2口和P3口。
1.P0口是一个双功能的8位并行I/O口,字节地址为
80H,位地址为80H~87H。可作输入/输出端口使用,又 可作地址/数据总线分时传输低8位地址和8位数据。
2.P1口是单一功能的并行I/O口,字节地址为90H,
I/O口
P0口:三态 双向 复用口
地址/数据 控制 1 0 Vcc
P0口作地址/数据复用总线 D0~D7 A0~A7 读锁存器
1 0
T0
1 0
P0.x
引脚
内部总线
写锁存器
P0.x CL 锁存器 Q
D
Q
0 1
MUX
1 0
T1
“读”
读引脚
P0口位结构
P0口作地址/数据复用总线
从P0口输出数据或地址信息的过程: MUX接 反相器 输出端 与门 开锁 输出级 T1连接 信号驱动 T0
2-3 I/0口与总线结构
一 MCS-5系列单片机的I/O口
• 在单片机中,端口是一个既可用作数据输入缓冲,又 可用作数据输出驱动及锁存/电路。 • P0口:可以作为通用的/O口进行数据的输入输出, 实际中绝大多数情况下都作为地址/数据线使用。 • P1口:通常是作为通用/O口使用的 • P2口: P2口可以作为通用/O口使用。通常,P2口 是作为高位地址线使用。 • P3口:第一功能是作为I/O口使用,它的第二功能信 号都是单片机的重要控制信号。在实际使用时,都是 先按需要选用第二功能信号,剩下的才以第一功能 的身份作数据位的输入/输出使用。
第五章 通用输入输出端口(GPIO)
GPIO的寄存器
数据寄存器: • 取反寄存器GPxTOGGLE ,反转触发每个引
脚信号; 每个IO口有一个翻转寄存器,只能写不能读, 也就是只能用在输出上,写1可以使输出翻转, 写0没有变化。 GPxTOGGLE .bit.=0,被忽略; GPxTOGGLE.bit.=1,且引脚配置为输出,则 输出翻转。
#endif
#if EXAMPLE2 //该例程使用GPxSET/GPxCLEAR寄存器反转触发I/O引脚
Gpio_example2();
#endif
#if EXAMPLE3
//该例程使用GPxTOGGLE寄存器反转触发I/O引脚
Gpio_example3();
#endif
}
本章重点小结
‘28X系列DSP的通用数字输入输出GPIO端口是复用 功能引脚,通过GPxMUX、GPxDIR、GPxQUAL等复 用功能控制寄存器以及GPxDAT、GPxSET、 GPxCLEAR和GPxTOGGLE等GPIO数据寄存器对引脚 的功能和操作进行控制;
EDIS;
}
主程序
void main(void)
{
InitSysCtrl(); //系统初始化:PLL、WatchDog、使能外设时钟
Gpio_select();
//GPIO设置
DINT;
//清除所有中断,初始化PIE向量表,关闭CPU中断
InitPieCtrl(); //将PIE控制寄存器初始化为默认值,即所有PIE中断被关闭,
GPFDIR
0x0000 70D5 1
GPGMUX
000 70D8 1
GPGDIR
0x0000 70D9 1
寄存器说明 GPIOA功能选择控制寄存器 GPIOA方向控制寄存器 GPIOA输入限定控制寄存器 GPIOB功能选择控制寄存器 GPIOB方向控制寄存器 GPIOB输入限定控制寄存器 GPIOD功能选择控制寄存器 GPIOD方向控制寄存器 GPIOD输入限定控制寄存器 GPIOE功能选择控制寄存器 GPIOE方向控制寄存器 GPIOE输入限定控制寄存器 GPIOF功能选择控制寄存器 GPIOF方向控制寄存器 GPIOG功能选择控制寄存器 GPIOG方向控制寄存器
GPIO复用功能
管脚的复用功能重映1、复用功能:内置外设是与I/O口共用引出管脚(不同的功能对应同一管脚)STM32 所有内置外设的外部引脚都是与标准GPIO引脚复用的,如果有多个复用功能模块对应同一个引脚,只能使能其中之一,其它模块保持非使能状态。
2、重映射功能:复用功能的引出脚可以通过重映射,从不同的I/O管脚引出,即复用功能的引出脚位是可通过程序改变到其他的引脚上!直接好处:PCB电路板的设计人员可以在需要的情况下,不必把某些信号在板上绕一大圈完成联接,方便了PCB的设计同时潜在地减少了信号的交叉干扰。
如:USART1:0: 没有重映像(TX/PA9,RX/PA10);1: 重映像(TX/PB6,RX/PB7)。
(参考AFIO_MAPR寄存器介绍)[0,1为一寄存器的bit值]【注】下述复用功能的引出脚具有重映射功能:- 晶体振荡器的引脚在不接晶体时,可以作为普通I/O口- CAN模块;- JTAG调试接口;- 大部分定时器的引出接口;- 大部分USART引出接口- I2C1的引出接口;- SPI1的引出接口;举例:对于STM32F103VBT6,47引脚为PB10,它的复用功能是I2C2_SCL和USART3_TX,表示在上电之后它的默认功能为PB10,而I2C2的SCL和USART3的TX为它的复用功能;另外在TIM2的引脚重映射后,TIM2_CH3也成为这个引脚的复用功能。
(1)要使用STM32F103VBT6的47、48脚的USART3功能,则需要配置47脚为复用推挽输出或复用开漏输出,配置48脚为某种输入模式,同时使能USART3并保持I2C2的非使能状态。
(2)使用STM32F103VBT6的47脚作为TIM2_CH3,则需要对TIM2进行重映射,然后再按复用功能的方式配置对应引脚.下面跟大家说一下STM32单片机的端口重映射,因为是以自己为实例.这里是以USART1的重映射为例STM32上有很多I/O口,也有很多的内置外设想I2C,ADC,ISP,USART等,为了节省引出管脚,这些内置外设基本上是与I/O口共用管脚的,也就是I/O管脚的复用功能。
单片机教程单片机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端口的电平会发生跳 变。
第5.1节 通用输入输出口(GPIO)
电气信息类专业课程DSP原理及应用——跟我动手学TMS320F2833xDSP原理及应用第5.1节通用输入/输出口(GPIO)通用输入/输出口(GPIO)TMS320F2833x系列DSP包含多达88个独立可编程复用的GPIO口。
•引脚以它们的通用I/O名称来命名(GPIO0~GPIO87)。
这些引脚可以被单独地选为数字I/O进行操作,简称为GPIO;或者被连接到不超过三个外设I/O信号中的一个信号上(通过GPxMUXn寄存器)。
•如果引脚工作在数字I/O模式,可通过寄存器配置引脚方向(通过GPxDIR寄存器),也可以限制输入信号的脉宽以消除不必要的噪声(通过GPxQSELn、GPACTRL和GPBCTRL寄存器)。
•三组32位的输入/输出端口。
端口A包含GPIO0~GPIO31,端口B包含GPIO32~GPIO63,端口C包含GPIO64~GPIO87。
GPIO模式选择控制•引脚功能分配、输入信号限制和外部中断源(XINT1~XINT7,XNMI)都是由GPIO配置控制寄存器来控制的。
•可以分配引脚来将器件从HALT和STANDBY低功耗模式唤醒,也可以使能/禁用内部的上拉电阻功能。
GPxCTRL GPIOx限制控制寄存器GPxQSELn GPIOx限制选择寄存器nGPxMUXn GPIOx复用寄存器nGPxDIR GPIOx方向寄存器GPAPUD GPIOx上拉禁用寄存器GPIOXINTxSEL XINTx源选择寄存器GPIOXNMISEL XNMI源选择寄存器GPIOLPMSEL LPM唤醒源选择寄存器GPIO配置步骤•①规划引脚功能,即规划引脚作为通用输入或输出I/O口,或复用为特殊功能外设引脚。
•②使能或禁止内部上拉功能(通过配置GPxPUD相应位)。
•③对输入引脚进行限制(通过配置GPxCTRL、GPxQSELn)。
•④配置引脚的功能(通过配置GPxMUXn)。
•⑤对于通用数字I/O口,配置引脚的方向(通过配置GPxDIR)。
IO接口的作用功能定义标准版文档
中断矢量 0003H 000BH 0013H 001BH 0023H 002BH
中断优先级 最高优先级
最低优先级
IP
(0B8H)
—
—
PT2 PS PT1 PX1 PT0 PX0
PX0/PX1:INT0/1优先级控制位: =0 时属低优先级; =1 时属高优先级。
PT0/PT1/PT2:T0/1/2中断优先级控制位: =0 时属低优先级; =1 时属高优先级。
1、线选寻址:用一条或几条地址线对外寻址
P2.7
MCS-51单片机 P2.5 P0口
P2.6
D7-0 /CE Q7-0
/CE AD7-0 A10 A9 A8 RAM (2K)
Q7-0 /CE D7-0
P2.5 做 RAM 片选线
(0000H—07FFH)
P2.2,P2.1,P2.0与P0口共同寻址 2K字节存储单元
二、CPU识别中断申请的依据C:PU识别中断申请的依据:
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
地2 数址据线的在输地入址/总输线出中传的送序方名式决C定P具体U地址在每个机器周期的S5P2期间,会自动查
询各个中断申请标志位,若查到某标志位被置
位,将启动中断机制。
TCON:Timer控制寄存器,是管理定时器工作的 SFR(其中低4位管外部中断)
数据协议/格式不同 所需功率/电平不匹配 所需测控点数量不匹配
二、接口与端口
本课程中讲到的接口可以是→器件→电路板卡 →设备/装置→ ……
口地址 → 可寻址的寄存器/端口 地址由选用的地址线条数与地址线名决定
地址线条数n决定:寻址范围 = 2n MCS-51寻址范围 = 216 = 65536 = 64K字节 地址线在地址总线中的序名决定具体地址 一个端口可能有多个口地址; 一个口地址只能唯一地指向某个端口。
第五章GPIO及外部中断的使用
功能描述
模拟输入 浮点输入 下拉输入 上拉输入 开漏输出 推挽输出 复用开漏输出 复用推挽输出
实例: 定义引脚PB0、PB1推挽输出,最大速率10MHz
GPIO_InitTypeDef GPIO_InitStructure;
//定义结构体
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); //开启GPIOB时 钟
第五章 GPIO及外部中断的使用
5.1 综述
STM32F10x系列端口:26、37、51、80、112个多功能 双向5V兼容的快速I/O口,所有I/O都可以映射到16个外部 中断。
STM32F10xxx系列中,每个通用I/O(GPIO)端口都有 7 个 寄 存 器 : 两 个 32 位 配 置 寄 存 器 ( GPIOx_CRL , GPIOx_CRH ) , 两 个 32 位 数 据 寄 存 器 ( GPIOx_IDR 和 GPIOx_ODR ) , 一 个 32 位 置 位 / 复 位 寄 存 器 ( GPIOx_BSRR),一个16位复位寄存器(GPIOx_BRR) 和一个32位锁存器(GPIOx_LCKP)。
5.2.1 函数GPIO_Init
3)GPIO_Mode 设置选中引脚的工作状态
GPIO_Mode可取值 GPIO_Mode_AIN GPIO_Mode_IN_FLOATING GPIO_Mode_IPD GPIO_Mode_IPU GPIO_Mode_Out_OD GPIO_Mode_Out_PP GPIO_Mode_AF_OD GPIO_Mode_AF_PP
返回值
无
先决条件 无
被调用函数 无
两个32位配置寄存器(GPIOx_CRL,GPIOx_CRH)
单片机IO口介绍
单片机IO口介绍单片机(Microcontroller)是一种集成了微处理器、存储器和各种I/O接口的芯片。
其中,I/O口是单片机与外部设备进行数据交换的通道,它是单片机最重要的功能之一、本文将详细介绍单片机的I/O口。
一、I/O口的基本概念在单片机中,I/O口是单片机与外部设备进行数据交换的接口。
它通过I/O线与外部设备相连接,可以实现数据的输入和输出。
单片机的I/O口可以分为通用I/O口和特殊功能I/O口两种类型。
通用I/O口是单片机常用的一种I/O口,它可以通过软件编程实现不同的功能,包括数字输入、数字输出和模拟输入输出等。
通用I/O口可以根据实际需求进行设置,提供灵活的数据交换方式。
特殊功能I/O口是单片机固定的一些特殊功能接口,通常用于特定的应用,如定时器、比较器、串行通信等。
特殊功能I/O口具有特殊的功能和特殊的操作要求,需要根据具体的应用进行设置。
二、通用I/O口的工作原理通用I/O口是单片机最常用的一种I/O口,它可以通过软件编程实现不同的功能。
通用I/O口的工作原理如下:1.输入模式:通用I/O口可以设置为输入模式,接收来自外部设备的输入信号。
在输入模式下,通用I/O口通常通过上拉或下拉电阻来实现输入的稳定性,并通过软件读取输入信号的状态。
2.输出模式:通用I/O口可以设置为输出模式,向外部设备输出信号。
在输出模式下,通用I/O口可以输出高电平或低电平信号,并通过软件控制输出的状态。
通用I/O口的状态可以通过软件进行设置和读取,可以实现灵活的数据交换。
通用I/O口的应用非常广泛,可以用于控制开关、驱动显示、读取按键等。
三、特殊功能I/O口的工作原理特殊功能I/O口是单片机固定的一些特殊功能接口,通常用于特定的应用。
特殊功能I/O口具有特殊的功能和特殊的操作要求,需要根据具体的应用进行设置。
下面介绍一些常见的特殊功能I/O口。
1.定时器/计数器:定时器/计数器是特殊功能I/O口中最常用的一个。
第五章通用和复用功能IO口
第五章通用和复用功能IO口1.引言通用和复用功能IO口是现代数字电路设计中的重要组成部分。
它们允许电路与外部设备进行通信和控制,实现数据的输入、输出和处理。
在本章中,我们将介绍通用和复用功能IO口的基本原理和应用。
通用功能IO口是一种通用的输入/输出接口,可以通过软件来配置不同的功能。
它可以被用作输入口,用来读取外部设备的状态;也可以被用作输出口,用来控制外部设备的运行。
通用功能IO口通常由一组引脚组成,每个引脚都可以配置为不同的功能。
通过编程的方式,我们可以根据需要来选择引脚的功能,并进行相应的输入和输出操作。
复用功能IO口是一种多功能的输入/输出接口,可以通过硬件设置来选择不同的功能。
它通常由一个多路器和多个外设模块组成。
多路器的作用是选择不同的外设模块进行连接,从而实现不同的输入和输出功能。
使用复用功能IO口,可以有效地减少芯片上的引脚数量,提高系统的可扩展性和灵活性。
4.通用功能IO口的应用通用功能IO口广泛应用于各种数字电路设计中。
它可以连接各种外设设备,如按钮、开关、传感器、LED灯等。
通过编程的方式,我们可以读取外设的状态,并根据需要来控制外设的运行。
通用功能IO口还可以连接到其他数字电路中,实现数据的输入、输出和处理。
例如,它可以与存储器、处理器、通信接口等进行连接,实现数据的存储、处理和传输。
5.复用功能IO口的应用复用功能IO口广泛应用于嵌入式系统和通信系统中。
它可以连接各种外设设备,如显示器、触摸屏、以太网接口、USB接口等。
通过硬件设置,我们可以选择不同的外设模块进行连接,并根据需要来实现不同的输入和输出功能。
复用功能IO口还可以连接到其他模块中,实现数据的传输和处理。
例如,它可以与显示模块、通信模块等进行连接,实现图形的显示、数据的传输等。
6.小结通用和复用功能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端口
IO口基本结构及应用一数码管显课件
❖AT89C52有32根输入/输出线,组成4个8位并 行 输 入 / 输 出 接 口 , 分 别 称 为 P0 口 、 P1 口 、 P2口和P3口。这4个接口可以并行输入或输 出8位数据;也可按位使用,即每一根输入/输 出线都能独立地用作输入或输出。
❖每个端口都由锁存器、输出驱动器、输入缓 冲器组成。
fgb
e
c
d
dp c om c om
L N3161AS
6
1
共阴
共阳
6
1
L N3161BS c om c omLeabharlann afgbe
c
d
dp
a b c d e f g dp
2
2
3
3
7
7
a
b
c
d
e
f
g
dp
com com
a
b
c
d
e
f
g
dp
IO口基本结构及应用一—数码管显
10
四联数码管结构
这里每一个数码管的段 码A—F是连接在一起 的,每个数码管的公共 端是独立的。
I/O端口的结构——P0口
❖P0口有两种功能——地址/数据分时复用总线 和通用I/O接口
IO口基本结构及应用一—数码管显
I/O端口的结构——P2口
❖P2口有两种功能——通用输入输出接口和地 址总线
IO口基本结构及应用一—数码管显
I/O口的基本应用
在89系列单片机的应用中,通常要进行信息显示, 而显示器件大多是采用LED数码管或LCD。对LED和 LCD器件来说,它们的接口方法是不同的。因为 LED—般所需的电流较大。而且,对于数码管显示器 而言,在显示时要求给出和显示数字对应的7段或8段 显示码;对于LCD器件来说,现在已经配置了专门的 驱动电器,在进行信息显示时,往往把信息写入驱动 电路的存储器中。由于存储器和LCD显示屏是一种映 射关系,故只要写入其存储器的信息适当,则可以在 LCD中显示出对应的正确信息。
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),包含两个功能位。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
举例说明,分析流水灯例程—了解库开发流程
3、编写用户文件 (3)led.h头文件 (4)main文件分析
举例说明,分析流水灯例程—了解库开发流程
4、总结
1)为了控制led,要使用GPIO外设 2)了解GPIO外设的功能,如何使用 3)知道GPIO的地址映射,挂载在APB2 4)了解ST官方库对寄存器的封装 5)了解时钟树,查看GPIOC时钟来源,PCLK2 6)在stm32f10x_conf.h文件中用到的头文件stm32f10x_gpio.h 和stm32f10x_rcc.h 7)添加用户文件led.c文件 8)编写驱动初始化函数LED_GPIO_Config(void)
第五章 通用和复用功能I/O
5.1 GPIO的工作原理
一、引脚介绍 二、STM32 GPIO主要功能 三、IO口的基本结构
5.2 编程举例
5.3 GPIO复用功能
一、引脚介绍
5.1 GPIO的工作原理
通用IO口,又称为GPIO(General-Purpose IO ports )CPU的一个接口模块,为一些协议比较简 单的外部设备/电路提供了一种控制手段。
1地址映射
STM32固件库对寄存器的封装
#define GPIOA
((GPIO_TypeDef *) GPIOA_BASE)
#define GPIOB
((GPIO_TypeDef *) GPIOB_BASE)
#define GPIOC
((GPIO_TypeDef *) GPIOC_BASE)
#define GPIOD
((GPIO_TypeDef *) GPIOD_BASE)
#define GPIOE
((GPIO_TypeDef *) GPIOE_BASE)
typedef struct {
__IO uint32_t CRL;-----0x00 __IO uint32_t CRH;-----0x04 __IO uint32_t IDR;------0x08 __IO uint32_t ODR; __IO uint32_t BSRR; __IO uint32_t BRR; __IO uint32_t LCKR; } GPIO_TypeDef;
举例说明,分析流水灯例程—了解库开发流程
2、STM32时钟设置 在startup_stm32f10x_hd.s中运行systemInit(), 这个函数定义在system_stm32f10x.c,他的作用是设 置系统时钟, 之后调用SetSysClock( )设置具体的系统时钟
举例说明,分析流水灯例程—了解库开发流程
3)设置GPIO输出高低电
平控制LED灯的亮灭
举例说明,分析流水灯例程—了解库开发流程
要实现功能
选定与LED硬件 相连的引脚
选定GPIO的 特定功能
控制LED亮灭
相应状态
PD6\PD3 输出功能 设置GPIO引脚 电平的高低
对应的寄存器 配置
引脚在D上, 选择x=d
配置寄存器 GPIOx-CRL
设置数据寄 存器
➢ 多数GPIO管脚都与数字或模拟的外设共用。所有 的GPIO管脚都有大电流通过能力。
➢ 在需要的情况下,I/O管脚的外设功能可以通过一 个特定的操作锁定,以避免意外的写入I/O寄存器 。
➢ 在APB2上的I/O脚提供高达18MHz的翻转速度。
一、引脚介绍:以STM32F103x为例
5.1 GPIO的工作原理
STM32单片机 最多有7个16位的并行 I/O端口:PA、 PB、PC、PD、PE、PF、PG。
STM32F103单片机 只有5个16位的并行 I/O端口:PA、 PB、PC、PD、PE。(实验板型号:TM32F103VET6)
一、引脚介绍
➢ 每个GPIO管脚都可以由软件配置成输出(推拉或开 路)、输入(带或不带上拉或下拉)或其它的外设功能 口。
#define PERIPH_BASE
(APB2PERIPH_BASE + 0x0800) (APB2PERIPH_BASE + 0x0C00) (APB2PERIPH_BASE + 0x1000) (APB2PERIPH_BASE + 0x1400)((uΒιβλιοθήκη nt32_t)0x40000000)
举例说明,分析流水灯例程—了解库开发流程
举例说明,分析流水灯例程—了解库开发流程
3、编写用户文件 (1)初始化库函数 GPIO_Init
在这个函数内部,把输入的这些参数按照一定 的规则转化,进而写入寄存器,实现了配置GPIO端口 的功能
举例说明,分析流水灯例程—了解库开发流程
3、编写用户文件 (2)控制I/O口高低电平 GPIO_SetBits 置1,led亮 GPIO_ResetBits
1地址映射 stm32f10x.h
#define GPIOD_BASE
(APB2PERIPH_BASE + 0x1400)
#define APB2PERIPH_BASE (PERIPH_BASE + 0x10000)
#define PERIPH_BASE
((uint32_t)0x40000000)
#define GPIOA_BASE #define GPIOB_BASE #define GPIOC_BASE #define GPIOD_BASE
PE口 16脚
PC口 16脚
PA口 16脚
PD口 16脚
PB口 16脚
STM32F103包含5个端口: PA口 、PB口、PC口、 PD口、 PE口。
一、引脚介绍:以STM32F103VET6为例 5.1 GPIO的工作原理
补充举例说明,分析流水灯例程—了解库开发流 程
1)选择GPIO端口
2)选择GPIO端口功能
寄存器操作 int main(void) {
GPIOB->CRL=0x3<<20; //配置PB5为推挽输出,50MHZ
while(1) { GPIOB->ODR=0x0; Delay(0xAFFFF); GPIOB->ODR=0x20; Delay(0xAFFFF); } }
举例说明,分析流水灯例程—了解库开发流程
3、编写用户文件 配置gpio口的相关操作:初始化结构体 库函数
GPIO_InitTypeDef GPIO_InitStructure; typedef struct 库文件利用关键字typedef定义的新类型 { uint16_t GPIO_Pin; GPIOSpeed_TypeDef GPIO_Speed; GPIOMode_TypeDef GPIO_Mode; }GPIO_InitTypeDef;