




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
GPIO设计1ppt课件配置模式CNF1CNF0MODE1MODE0PxODR寄存器通用输出推挽(Push-Pull)00
0或1开漏(Open-Drain)10或1复用功能输出推挽(Push-Pull)10不使用开漏(Open-Drain)1不使用输入模拟输入0000不使用浮空输入1不使用下拉输入100上拉输入12ppt课件输出模式位MODE[1:0]意义00保留01最大输出速度为10MHz10最大输出速度为2MHz11最大输出速度为50MHz3ppt课件端口配置低寄存器(GPIOx_CRL)(x=A..E)
偏移地址:0x00复位值:0x444444444ppt课件位31:3027:2623:2219:1815:1411:107:63:2CNFy[1:0]:端口x配置位(y=8…15)(Portxconfig-urationbits)软件通过这些位配置相应的I/O端口。在输入模式(MODE[1:0]=00):00:模拟输入模式01:浮空输入模式(复位后的状态)10:上拉/下拉输入模式11:保留在输出模式(MODE[1:0]>00):00:通用推挽输出模式01:通用开漏输出模式10:复用功能推挽输出模式11:复用功能开漏输出模式5ppt课件位29:2825:2421:2017:1613:129:85:41:0MODEy[1:0]:端口x的模式位(y=0…7)(Portxmodebits)软件通过这些位配置相应的I/O端口。00:输入模式(复位后的状态)01:输出模式,最大速度10MHz10:输出模式,最大速度2MHz11:输出模式,最大速度50MHz6ppt课件7ppt课件偏移地址:0x04复位值:0x44444444端口配置高寄存器(GPIOx_CRH)8ppt课件CNFy[1:0]:端口x配置位(y=8…15)软件通过这些位配置相应的I/O端口。在输入模式(MODE[1:0]=00):00:模拟输入模式01:浮空输入模式(复位后的状态)10:上拉/下拉输入模式11:保留在输出模式(MODE[1:0]>00):00:通用推挽输出模式01:通用开漏输出模式10:复用功能推挽输出模式11:复用功能开漏输出模式位31:3027:2623:2219:1815:1411:107:63:29ppt课件MODEy[1:0]:端口x的模式位(y=8…15)软件通过这些位配置相应的I/O端口。00:输入模式(复位后的状态)01:输出模式,最大速度10MHz10:输出模式,最大速度2MHz11:输出模式,最大速度50MHz位29:2825:2421:2017:1613:129:85:41:010ppt课件地址偏移:0x08复位值:0x0000XXXX端口输入数据寄存器(GPIOx_IDR)11ppt课件位31:16保留,始终读为0。位15:0IDRy[15:0]:端口输入数据(y=0…15)(Portinputdata)这些位为只读并只能以字(16位)的形式读出。读出的值为对应I/O口的状态。12ppt课件地址偏移:0Ch复位值:0x00000000端口输出数据寄存器(GPIOx_ODR)13ppt课件位31:16保留,始终读为0。位15:0ODRy[15:0]:端口输出数据(y=0…15)这些位可读可写并只能以字(16位)的形式操作。注:对GPIOx_BSRR(x=A…E),可以分别地对各个ODR位进行独立的设置/清除。14ppt课件端口位设置/清除寄存器(GPIOx_BSRR)
地址偏移:0x10复位值:0x0000000015ppt课件位31:16BRy:清除端口x的位y(y=0…15)(PortxResetbity)这些位只能写入并只能以字(16位)的形式操作。0:对对应的ODRy位不产生影响1:清除对应的ODRy位为0注:如果同时设置了BSy和BRy的对应位,BSy位起作用。16ppt课件位15:0BSy:设置端口x的位y(y=0…15)(PortxSetbity)这些位只能写入并只能以字(16位)的形式操作。0:对对应的ODRy位不产生影响1:设置对应的ODRy位为117ppt课件端口位清除寄存器(GPIOx_BRR)地址偏移:0x14复位值:0x0000000018ppt课件位31:16保留。位15:0BRy:清除端口x的位y(y=0…15)(PortxResetbity)这些位只能写入并只能以字(16位)的形式操作。0:对对应的ODRy位不产生影响1:清除对应的ODRy位为019ppt课件20ppt课件端口配置锁定寄存器(GPIOx_LCKR)当执行正确的写序列设置了位16(LCKK)时,该寄存器用来锁定端口位的配置。位[15:0]用于锁定GPIO端口的配置。在规定的写入操作期间,不能改变LCKP[15:0]。当对相应的端口位执行了LOCK序列后,在下次系统复位之前将不能再更改端口位的配置。每个锁定位锁定控制寄存器(CRL,CRH)中相应的4个位。
地址偏移:0x18复位值:0x0000000021ppt课件位31:17保留。位16LCKK:锁键(Lockkey)该位可随时读出,它只可通过锁键写入序列修改。0:端口配置锁键位激活1:端口配置锁键位被激活,下次系统复位前GPIOx_LCKR寄存器被锁住。锁键的写入序列:写1->写0->写1->读0->读1最后一个读可省略,但可以用来确认锁键已被激活。注:在操作锁键的写入序列时,不能改变LCK[15:0]的值。操作锁键写入序列中的任何错误将不能激活锁键。22ppt课件23ppt课件位15:0LCKy:端口x的锁位y(y=0…15)这些位可读可写但只能在LCKK位为0时写入。0:不锁定端口的配置1:锁定端口的配置24ppt课件25ppt课件(1)VDD_FT对5伏容忍I/O脚是特殊的,它与VDD不同26ppt课件一、GPIO的各种模式GPIO管脚可以被配置为多种工作模式,其中有3种比较常用:高阻输入、推挽输出、开漏输出
1.高阻输入(Input)输入模式的结构比较简单,就是一个带有施密特触发输入的三态缓冲器(U1),并具有很高的输入等效阻抗。
GPIO高阻输入模式结构示意图27ppt课件施密特触发输入的作用是能将缓慢变化的或者是畸变的输入脉冲信号整形成比较理想的矩形脉冲信号。执行GPIO管脚读操作时,在读脉冲(ReadPulse)的作用下会把管脚(Pin)的当前电平状态读到内部总线上(InternalBus)。在不执行读操作时,外部管脚与内部总线之间是隔离的。
28ppt课件2.推挽输出(Output)29ppt课件U1是输出锁存器,执行GPIO管脚写操作时,在写脉冲(WritePulse)的作用下,数据被锁存到Q和/Q。T1和T2构成CMOS反相器,T1导通或T2导通时都表现出较低的阻抗,但T1和T2不会同时导通或同时关闭,最后形成的是推挽输出。在推挽输出模式下,GPIO还具有回读功能,实现回读功能的是一个简单的三态门U2。注意:执行回读功能时,读到的是管脚的输出锁存状态,而不是外部管脚Pin的状态。
30ppt课件
3.开漏输出(OutputOD)开漏输出和推挽输出相比结构基本相同,但只有下拉晶体管T1而没有上拉晶体管。同样,T1实际上也是多组可编程选择的晶体管。
31ppt课件
开漏输出结构没有内部上拉,因此在实际应用时通常都要外接合适的上拉电阻(通常采用4.7~10kΩ)。开漏输出能够方便地实现“线与”逻辑功能,即多个开漏的管脚可以直接并在一起。开漏输出的另一种用途是能够方便地实现不同逻辑电平之间的转换(如3.3V到5V之间),只需外接一个上拉电阻,而不需要额外的转换电路。典型的应用例子就是基于开漏电气连接的I2C总线。
32ppt课件4.钳位二极管其作用是防止从外部管脚Pin输入的电压过高或者过低。
33ppt课件二、GPIO配置(1)GPIO_Mode_AIN
模拟输入
(2)GPIO_Mode_IN_FLOATING
浮空输入(3)GPIO_Mode_IPD
下拉输入(4)GPIO_Mode_IPU
上拉输入
(5)GPIO_Mode_Out_OD
开漏输出(6)GPIO_Mode_Out_PP
推挽输出(7)GPIO_Mode_AF_OD
复用开漏输出(8)GPIO_Mode_AF_PP
复用推挽输出34ppt课件1.I/O口速度GPIO_Speed_10MHz最高输出速率10MHzGPIO_Speed_2MHz最高输出速率2MHzGPIO_Speed_50MHz最高输出速率50MHzI/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程序有关。35ppt课件通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低功耗的目的。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用低频驱动电路,这样非常有利于提高系统的EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。36ppt课件关键是GPIO的引脚速度跟应用匹配对于串口,假如最大波特率只需115.2k,那么用2M的GPIO的引脚速度就够了,既省电也噪声小。对于I2C接口,假如使用400k波特率,若想把余量留大些,那么用2M的GPIO的引脚速度或许不够,这时可以选用10M的GPIO引脚速度。对于SPI接口,假如使用18M或9M波特率,用10M的GPIO的引脚速度显然不够了,需要选用50M的GPIO的引脚速度。37ppt课件2.GPIO口设为输入时,输出驱动电路与端口是断开,所以输出速度配置无意义。3.在复位期间和刚复位后,复用功能未开启,I/O端口被配置成浮空输入模式。
所有端口都有外部中断能力。为了使用外部中断线,端口必须配置成输入模式。38ppt课件4.推挽输出与开漏输出的区别推挽输出:可以输出高,低电平,连接数字器件;开漏输出:输出端相当于三极管的集电极.要得到高电平状态需要上拉电阻才行.适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内).
39ppt课件三、在STM32中选用IO模式(1)浮空输入_IN_FLOATING—浮空输入,可以做KEY识别,RX1(2)带上拉输入_IPU—IO内部上拉电阻输入(3)带下拉输入_IPD—IO内部下拉电阻输入
(4)模拟输入_AIN—应用ADC模拟输入,或者低功耗下省电。(5)开漏输出_OUT_OD—IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能。40ppt课件
(6)推挽输出_OUT_PP——IO输出0-接GND,IO输出1-接VCC,读输入值是未知的。(7)复用功能的推挽输出_AF_PP——片内外设功能(I2C的SCL,SDA)(8)复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO,SCK,SS)41ppt课件实例(1)模拟I2C使用开漏输出_OUT_OD,接上拉电阻,能够正确输出0和1;读值时先GPIO_SetBits(GPIOB,GPIO_Pin_0);拉高,然后可以读IO的值;使用GPIO_ReadInputData
Bit(GPIOB,GPIO_Pin_0);(2)如果是无上拉电阻,IO默认是高电平;需要读取IO的值,可以使用(3)带上拉输入_IPU和浮空输入_IN_FLOATING和开漏输出_OUT_OD;42ppt课件操作寄存器方法代码
#include<stm32f10x_lib.h>
02#include"system.h"
03
04
05//LED端口定义0607#defineLED0PAout(4)//PA408
09void
Gpio_Init(void);
43ppt课件10
11int
main(void)12{
13
Rcc_Init(9);
//系统时钟设置14
Gpio_Init();
//初始化与LED连接的硬件接口15
while(1)16
{17
LED0=0;18
delay(300000);
//延时300ms44ppt课件19
LED0=1;20
delay(300000);21
}
22}23
24
25void
Gpio_Init(void)26{45ppt课件27
RCC->APB2ENR|=1<<2;
//使能PORTA时钟
28
29
GPIOA->CRL&=0XFFF0FFFF;30
GPIOA->CRL|=0X00030000;//PA4推挽输出
31
GPIOA->ODR|=1<<4;
//PA4输出高32
33}46ppt课件47ppt课件01#include"stm32f10x.h“02
03void
RCC_Configuration(void);04void
GPIO_Configuration(void);05void
delay(vu32n);
//延时函数0607int
main(void)08{48ppt课件09
RCC_Configuration();10
GPIO_Configuration();11
12
while(1){13
14
GPIO_SetBits(GPIOA,GPIO_Pin_4);
//调用库函数将LED_1置1输出高电平15
49ppt课件16
delay(2000000);17
18
19
GPIO_ResetBits(GPIOA,GPIO_Pin_4);
2021
delay(2000000);22
}23}24
25void
GPIO_Configuration(void)26{27
GPIO_InitTypeDef
GPIO_InitStructure;
结构体初始化2829
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;30
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;31
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
32
GPIO_Init(GPIOA,&GPIO_InitStructure);33
34}35
36void
delay(vu32n)37{38
while(--n);39}40
50ppt课件29
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_4;30
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;31
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
32
GPIO_Init(GPIOA,&GPIO_InitStructure);33}34void
delay(vu32n)35{38
while(--n);36}51ppt课件52ppt课件四、通用IO端口(GPIO)初始化
基本步骤步骤一声明GPIO的结构
GPIO_InitTypeDefGPIO_InitStructure;
步骤二为变量GPIO_InitStructure的成员赋值,如果只设置其中的一部分成员,我们需要如下代码:53ppt课件GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOB,&GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin=GPIO_Pin_0|GPIO_Pin_1;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;54ppt课件步骤三调用函数GPIO_Init()来初始化外设GPIO,代码如下:GPIO_Init(GPIOC,&GPIO_InitStructure);步骤四使能。注意,在固件库中GPIO没有GPIO_Cmd
的函数,因此这个步骤省略。
55ppt课件4.1
GPIO初始化
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|B|C,
ENABLE):使能APB2总线外设时钟RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOA|B|C,DISABLE):释放GPIO复位。56ppt课件57ppt课件芯片资料介绍芯片名字58ppt课件晶振ROMRAM59ppt课件相当于C语言中#Define头文件的路径60ppt课件有开发板没有开发板时选择61ppt课件DEBUG62ppt课件例子(寄存器操作)//led.c//初始化PA8和PD2为输出口.并使能这两个口的时钟 //LEDIO初始化voidLED_Init(void){ RCC->APB2ENR|=1<<2;//使能PORTA时钟
RCC->APB2ENR|=1<<5;//使能PORTD时钟
63ppt课件
GPIOA->CRH&=0XFFFFFFF0; GPIOA->CRH|=0X00000003;//PA8推
GPIOA->ODR|=1<<8;//PA8输出
GPIOD->CRL&=0XFFFFF0FF; GPIOD->CRL|=0X00000300;//PD.2推挽输出
GPIOD->ODR|=1<<2;//PD.2输出高}64ppt课件//led.h#ifndef__LED_H#define__LED_H #include"sys.h"//LED驱动代码 //LED端口定义#defineLED0PAout(8)//PA8#defineLED1PDout(2)//PD2 voidLED_Init(void);//初始化 #endif65ppt课件#include<stm32f10x_lib.h>#include"sys.h"#include"usart.h" #include"delay.h" #include"led.h"//跑马灯实验
int
main(void){ Stm32_Clock_Init(9);//系统时钟设置
66ppt课件delay_init(72); //延时初始化
LED_Init(); //初始化与LED连接的硬件接口
while(1) {LED0=0; LED1=1; delay_ms(300); LED0=1; LED1=0; delay_ms(300); } }67ppt课件例子(固件库操作)//led.c#include"led.h"voidLED_GPIO_Config(void){
GPIO_InitTypeDef
GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
68ppt课件GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
GPIO_Init(GPIOC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国车用颗粒物传感器行业市场发展现状及投资规划建议报告
- 餐厅消防培训课件
- 仓储知识培训课件
- ttt培训课件 视频
- 各项同性≤1.05的等静压石墨项目节能评估报告(节能专)
- 中国蓝山县房地产行业发展监测及投资战略咨询报告
- 2025年 河南公务员考试笔试试题附答案
- 中国主题公园行业市场评估分析及发展前景调研战略研究报告
- 中国维生素与矿物质类制剂行业市场深度研究及投资战略咨询报告
- 中国栀子花行业市场深度研究及投资战略咨询报告
- 人教版2024年数学小升初模拟试卷(含答案解析)
- 市场营销学智慧树知到期末考试答案章节答案2024年广东石油化工学院
- 架空送电线路导线及避雷线液压施工工艺规程
- 森林管护工考试考试题库(强化练习)
- GB/T 3880.2-2024一般工业用铝及铝合金板、带材第2部分:力学性能
- 艺术中国智慧树知到期末考试答案2024年
- 2024年中央财政支持社会组织参与社会服务项目资金管理与财务管理指引
- 四川省公需科目2024年度数字经济与驱动发展考试题库及答案
- 广东省普通高中学生档案
- 小学优美的开头结尾集锦作文开头结尾优美句段
- 盐城市2022-2023学年七年级下学期数学期末试卷(含答案解析)
评论
0/150
提交评论