ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:21.86KB ,
资源ID:10790388      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10790388.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(STM32中使用GPIO的总结超强.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

STM32中使用GPIO的总结超强.docx

1、STM32中使用GPIO的总结超强STM32 GPIO使 用操作步骤:使能GPIO对应的外设时钟例如:/使能GPIOA GPIOB GPIOC对应的外设时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC , ENABLE);声明一个 GPIO_InitStructure结构体例如:GPIOni tTypeDef GPIO_I nitStructure;选择待设置的GPIO管脚例如:/*选择待设置的GPIO7& 9管脚位,中间加“|符号*/GPIO InitStruct

2、ure.GPIO Pin = GPIO Pin 7 | GPIO Pin 8 | GPIO Pin 9;4.设置选中GPIO管脚的速率例如:/*设置选中GPIO管脚的速率为最高速率2MHz */GPIOnitStructure.GPIO_Speed = GPIO_Speed_2MHz; 最高速率 2MHz5.设置选中GPIO管脚的模式例如:/*设置选中GPIO管脚的模式为开漏输出模式*/GPIOnitStructure.GPIO_Mode = GPIO_Mode_Out_OD/ 开漏输出模式6.根据GPIO_InitStructure中指定的参数初始化外设GPIOX例如:/*根据GPIOIni

3、tStructure中指定的参数初始化外设 GPIOC */GPI Oni t(GPIOC, & GPIO_I nitStructure);7其他应用例:将端口 GPIOA的0、15脚置1 (高电平)GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15); 例:将端口 GPIOA的0、15脚置0 (低电平)GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);GPIO寄存器:寄存器描述CRL端口配置低寄存器CRH端口配置高寄存器IDR端口输入数据寄存器ODR端口输出数据寄存器BSRR端口位设置/复位寄存器BRR端

4、口位复位寄存器LCKR端口配置锁定寄存器EVCR事件控制寄存器MAPR复用重映射和调试I/O配置寄存器EXTICR外部中断线路0-15配置寄存器GPIO库函数:函数名 描述GPIO_DeInit 将外设GPIOx寄存器重设为缺省值GPIO_AFIODel nit将复用功能(重映射事件控制和 EXTI设置)重设为缺省 值GPIO_Init 根据GPIOnitStruct中指定的参数初始化外设 GPIOx寄存器 GPIO_Structlnit 把GPIO_InitStruct中的每一个参数按缺省值填入GPIO_Readl nputDataBit读取指定端口管脚的输入GPIO_Read In put

5、Data读取指定的GPIO端口输入GPIO_ReadOutputDataBit读取指定端口管脚的输出GPIO_ReadOutputData读取指定的GPIO端口输出GPIO_SetBits设置指定的数据端口位GPIO_ResetBits 清除指定的数据端口位GPIO_WriteBit设置或者清除指定的数据端口位GPIO_Write 向指定GPIO数据端口写入数据GPIO_Pi nLockCo nfig锁定GPIO管脚设置寄存器GPIO_Eve ntOutputCo nfig选择GPIO管脚用作事件输出GPIO_Eve ntOutputCmd使能或者失能事件输出GPIO_Pi nRemapCo

6、nfig改变指定管脚的映射GPIO_EXTILi neCo nfig选择GPIO管脚用作外部中断线路库函数:函数 GPIO DeInit功能描述:将外设GPIOx寄存器重设为缺省值例:GPIO_Del ni t(GPIOA);函数 GPIO_AFIODeInit功能描述:将复用功能(重映射事件控制和 EXTI设置)重设为缺省值例:GPIO_AFIODel ni t();函数 GPIO_Init功能描述:根据GPIO_InitStruct中指定的参数初始化外设 GPIOx寄存器例:GPIOni tTypeDef GPIO_I nitStructure;GPIOni tStructure.GPIO

7、_Pin = GPIO_Pin_AII;GPIOni tStructure.GPIO_Speed = GPIO_Speed_10MH z;GPIOn itStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIOni t(GPIOA, & GPIO_I ni tStructure);GPIOn itTypeDef structureGPIOni tTypeDef定义于文件 “ stm32f10x_gpio.h ”typedef structu16 GPIO_Pi n;GPIOSpeed_TypeDef GPIO_Speed;GPIOMode_TypeDef

8、 GPIO_Mode;GPIOn itTypeDef;GPIO_Pi n该参数选择待设置的GPIO管脚,使用操作符“ |可以一次选中多个管脚 可以使用下表中的任意组合。GPIO_Pin_ None无管脚被选中GPIO_Pin_x选中管脚x(0-15)GPIO_Pin_AII 选中全部管脚GPIO_SpeedGPIO_Speed用以设置选中管脚的速率。GPIO_Speed_10MHz最高输出速率10MHzGPIO_Speed_2MHz最高输出速率2MHzGPIO_Speed_50MHz最高输出速率50MHzGPIO_ModeGPIO_Mode:用以设置选中管脚的工作状态GPIO_Mode_AIN

9、模拟输入GPIO_Mode_IN_FLOATING 浮空输入GPIO_Mode_IPD下拉输入GPIO_Mode_IPU上拉输入GPIO_Mode_Out_OD开漏输出GPIO_Mode_Out_P P 推挽输出GPIO_Mode_AF_OD 复用开漏输出GPIO_Mode_AF_PP 复用推挽输出函数 GPIO_Structlnit功能描述:把GPIO_InitStruct中的每一个参数按缺省值填入例:GPIOni tTypeDef GPIO_I nitStructure;GPIO_StructI nit(&GPIO_I ni tStructure);GPI Oni tStruct:GPIO

10、_Pin GPIO_Pin_AIIGPIO_Speed GPI0_Speed_2MHzGPIO_Mode: GPIO_Mode_IN_FLOATING函数 GPIO_ReadlnputDataBit功能描述:读取指定端口管脚的输入例:u8 ReadValue;ReadValue = GPIO_ReadI nputDataBit(GPIOB, GPIO_Pi n_7);函数 GPIO_ReadInputData功能描述:读取指定的GPIO端口输入例:u16 ReadValue;ReadValue = GPIO_Readl nputData(GPIOC);函数 GPIO_ReadOutputDat

11、aBit功能描述:读取指定端口管脚的输出例:u8 ReadValue;ReadValue = GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_7);函数 GPIO_ReadOutputData功能描述:读取指定的GPIO端口输出例:u16 ReadValue;ReadValue = GPIO_ReadOutputData(GPIOC);函数 GPIO_SetBits功能描述:置位指定的数据端口位例:将端口 GPIOA的0、15脚置1 (高电平)GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);函数 GPIO_ResetB

12、its功能描述:清除指定的数据端口位例:将端口 GPIOA的0、15脚置0 (低电平)GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);函数 GPIO WriteBit功能描述:设置或者清除指定的数据端口位例:GPIO_WriteBit(GPIOA, GPIO_Pin_15, Bit_SET);函数 GPIO_Write功能描述:向指定GPIO数据端口写入数据例:GPIO_Write(GPIOA, 0x1101);函数 GPIO_PinLockConfig功能描述:锁定GPIO管脚设置寄存器例:GPIO_Pi nLockCo nfig(GPIOA

13、, GPIO_Pin_0 | GPIO_Pin_1);函数 GPIO_EventOutputConfig功能描述:选择GPIO管脚用作事件输出例:GPIO_Eve ntOutputCo nfig(GPIO_PortSourceGPIOE, GPIO_Pi nSource5);GPIO_PortSourceGPIO_PortSource用以选择用作事件输出的 GPIO端 口。函数 GPIO_EventOutputCmd功能描述:使能或者失能事件输出例:GPIO_Eve ntOutputCo nfig(GPIO_PortSourceGPIOC, GPIO_Pi nSource6);GPIO_Eve

14、 ntOutputCmd(ENABLE);函数 GPIO_PinRemapConfig功能描述:改变指定管脚的映射例:GPIO_Pi nRemapCo nfig(GPIO_Remap2C1, ENABLE);1.GPIO概述1、共有8种模式,可以通过编程选择:1.浮空输入2.带上拉输入3.带下拉输入4.模拟输入5.开漏输出 (此模式可实现hotpower说的真双向IO)6.推挽输出7.复用功能的推挽输出8.复用功能的开漏输出模式7和模式8需根据具体的复用功能决定。2、 专门的寄存器(GPIOx_BSR和GPIOx_BRR实现对GPI0口的原子操作, 即回避了设置或清除I/O端口时的 读-修改-

15、写”操作,使得设置或清除I/O端口 的操作不会被中断处理打断而造成误动作。3、 每个GPIO口都可以作为外部中断的输入,便于系统灵活设计。4、 I/O 口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz), 这有利于噪声控制。这个速度是指I/O 口驱动电路的响应速度而不是输出信号的 速度,输出信号的速度与程序有关(芯片内部在 I/O 口的输出部分安排了多个响 应速度不同的输出驱动电路,用户可以根据自己的需要选择合适的驱动电路)。通过选择速度来选择不同的输出驱动模块,达到最佳的噪声控制和降低 功耗的目的。高频的驱动电路,噪声也高,当不需要高的输出频率时,请选用 低频驱动电路,这

16、样非常有利于提高系统的 EMI性能。当然如果要输出较高频率的信号,但却选用了较低频率的驱动模块,很可能会得到失真的输出信号。4.1各种借口的措施:对于串口,假如最大波特率只需115.2k,那么用的GPIO的引脚速度就够 了,既省电也噪声小。对于I接口,假如使用400k波特率,若想把余量留大些,那么用的 GPIO的 引脚速度或许不够,这时可以选用的 GPIO引脚速度。对于SPI接口,假如使用或波特率,用的 GPIO的引脚速度显然不够了,需 要选用的GPIO的引脚速度。4.2 GPI O 口设为输入时,输出驱动电路与端口是断开,所以输出速度配置无 意义。4.3在复位期间和刚复位后,复用功能未开启,

17、I/O端口被配置成浮空输入 模式。4.4所有端口都有外部中断能力。为了使用外部中断线,端口必须配置成输 入模式。4.5 GPI O 口的配置具有上锁功能,当配置好 GPIO 口后,可以通过程序锁住 配置组合,直到下次芯片复位才能解锁。5、 所有I/O 口兼容CMOS和TTL多数I/O 口兼容5V电平。6、 大电流驱动能力:GPIO口在高低电平分别为0.4V和VDD-0.4V时,可以 提供或吸收8mA电流;如果把输入输出电平分别放宽到 1.3V和VDD-1.3V时, 可以提供或吸收20mA电流。7、 具有独立的唤醒I/O 口。8很多I/O 口的复用功能可以重新映射。9.GPI O 口的配置具有上

18、锁功能,当配置好 GPIO 口后,可以通过程序锁住配 置组合,直到下次芯片复位才能解锁。此功能非常有利于在程序跑飞的情况下 保护系统中其他的设备,不会因为某些I/O 口的配置被改变而损坏 如一个输入口变成输出口并输出电流。2.推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时 候另一个截止要实现线与需要用OC(open collector门电路.如果输出级的有两个 三极管,始终处于一个导通、一个截止的状态,也就是两个三级管推挽相连, 这样的电路结构称为推拉式电路或图腾柱(Totem- pole )输出电路(可惜,图 无法贴上)。当输出低电平时,也就是下级负载门输入低电平

19、时,输出端的电 流将是下级门灌入T4;当输出高电平时,也就是下级负载门输入高电平时,输 出端的电流将是下级门从本级电源经3、D1拉出。这样一来,输出高低电平时,T3 一路和T4一路将交替工作, 从而减低了功耗,提高了每个管的承受能力。又由于不论走哪一路,管子导通 电阻都很小,使RC常数很小,转变速度很快。因此,推拉式输出级既提高电路 的负载能力,又提高开关速度。供你参考。推挽电路是两个参数相同的三极管或 MOSFET以推挽方式存在于电路中,各 负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只有一 个导通,所以导通损耗小效率高。输出既可以向负载灌电流,也可以从负载抽取电流3.开

20、漏电路在电路设计时我们常常遇到开漏(open drain)和开集(open collector)的 概念。所谓开漏电路概念中提到的 漏”就是指MOSFET的漏极。同理,开集电路中的集”就是指三极管的集电极。开漏电路就是指以 MOSFET的漏极为输出的电路。一般的用法是会在漏极外部的电路添加上拉电阻。完整的开漏电路应该由 开漏器件和开漏上拉电阻组成。组成开漏形式的电路有以下几个特点:1.利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通 时,驱动电流是从外部的 VCC流经R pull-up,MOSFET到GND。IC内部仅需很 下的栅极驱动电流。如1。2.可以将多个开漏输出的

21、Pin,连接到一条线上。形成 与逻辑”关系。如图 1,当PIN_A PIN_B PIN_C任意一个变低后,开漏线上的逻辑就为 0 了。这也 是I,SMBus等总线判断总线占用状态的原理。3.可以利用改变上拉电源的电压,改变传输电平。如图 2, IC的逻辑电平由电源Vcc1决定,而输出高电平则由 Vcc2决定。这样我们就可以用低电平逻辑 控制输出高电平逻辑了。4.开漏Pin不连接外部的上拉电阻,贝S只能输出低电平 (因此对于经典的51 单片机的P0 口而言,要想做输入输出功能必须加外部上拉电阻,否则无法输出 高电平逻辑)。5.标准的开漏脚一般只有输出的能力。添加其它的判断电路,才能具备双 向输入

22、、输出的能力。应用中需注意:1.开漏和开集的原理类似,在许多应用中我们利用开集电路代替开漏电 路。例如,某输入Pin要求由开漏电路驱动。则我们常见的驱动方式是利用一个 三极管组成开集电路来驱动它,即方便又节省成本。如3。2.上拉电阻R pull-up的阻值 决定了逻辑电平转换的沿的速度。阻值越 大,速度越低功耗越小。反之亦然。Push-Pull输出就是一般所说的推挽输出,在 CMOS电路里面应该较CMOS 输出更合适,应为在CMOS里面的push-pull输出能力不可能做得双极那么 大。输出能力看IC内部输出极N管P管的面积。和开漏输出相比,push- pull 的高低电平由IC的电源低定,不

23、能简单的做逻辑操作等。 push- pull是现在CMOS电路里面用得最多的输出级设计方式。at91rm9200 GPIO模拟I接口时注意!4.OG OD集电极开路门(集电极开路OC或源极开路OD)open-drain是漏极开路输出的意思,相当于集电极开路 (open-collector)输 出,即ttl中的集电极开路(oc)输出。一般用于线或、线与,也有的用于电流 驱动。open-drain是对mos管而言,open-collector是对双极型管而言,在用法上 没啥区别。开漏形式的电路有以下几个特点:1.利用外部电路的驱动能力,减少IC内部的驱动。或驱动比芯片电源电压 高的负载.2.可以将

24、多个开漏输出的Pi n,连接到一条线上。通过一只上拉电阻,在不 增加任何器件的情况下,形成 与逻辑”关系。这也是I, SMBus等总线判断总线 占用状态的原理。如果作为图腾输出必须接上拉电阻。接容性负载时,下降延 是芯片内的晶体管,是有源驱动,速度较快;上升延是无源的外接电阻,速度慢。如果要求速度高电阻选择要小,功耗会大。所以负载电阻的选择要兼顾功 耗和速度。3.可以利用改变上拉电源的电压,改变传输电平。例如加上上拉电阻就可以 提供TTL/CMOS电平输出等。4开漏Pin不连接外部的上拉电阻,则只能输出低电平。一般来说,开漏是 用来连接不同电平的器件,匹配电平用的。5正常的CMOS输出级是上、

25、下两个管子,把上面的管子去掉就是 OPENDRAIN 了 。这种输出的主要目的有两个:电平转换和线与。6由于漏级开路,所以后级电路必须接一上拉电阻,上拉电阻的电源电压就 可以决定输出电平。这样你就可以进行任意电平的转换了。7线与功能主要用于有多个电路对同一信号进行拉低操作的场合,如果本电 路不想拉低,就输出高电平,因为 OPEN-DRAINt面的管子被拿掉,高电平是靠 外接的上拉电阻实现的。(而正常的 CMOS输出级,如果出现一个输出为高另 外一个为低时,等于电源短路。)8.OPEN-DRAIN提供了灵活的输出方式,但是也有其弱点,就是带来上升沿 的延时。因为上升沿是通过外接上拉无源电阻对负载

26、充电,所以当电阻选择小 时延时就小,但功耗大;反之延时大功耗小。所以如果对延时有要求,则建议 用下降沿输出。五线或逻辑与线与逻辑在一个结点(线)上,连接一个上拉电阻到电源VCC或VDD和n个NPN或NMOS晶体管的集电极C或漏极D,这些晶体管的 发射极E或源极S都接到地线上,只要有一个晶体管饱和,这个结点(线)就被拉到 地线电平上.因为这些晶体管的基极注入电流(NPN)或栅极加上高电平(NMOS),晶体管就 会饱和,所以这些基极或栅极对这个结点(线)的关系是或非NOR逻辑.如果这个 结点后面加一个反相器,就是或OR逻辑.注:个人理解:线与,接上拉电阻至电源。 (A)&(B)=(A+B)由公式较容易理解线与此概念的由来;如果用下拉电阻和 PNP或 PMOS管就可以构成与非NAND逻辑,或用负逻辑 关系转换与/或逻辑.注:线或,接下拉电阻至地。(A)+(B)=(AB);这些晶体管常常是一些逻辑电路的集电极开路 0C或源极开路0D输出端这种逻辑通常称为线与/线或逻辑,当你看到一些芯片的0C或0D输出端连在 一起,而有一个上拉电阻时,这就是线或/线与了 ,但有时上拉电阻做在芯片的输 入端内.顺便提示如果不是 0C或OD芯片的输出端是不可以连在一起的,总 线BUS上的双向输出端连在一起是有管理的,同时只能有一个作输出,而其他是 高阻态只能输入.

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1