当前位置:   article > 正文

GPIO详解_gpio_bsrr 下拉

gpio_bsrr 下拉

GPIO寄存器描述

  • 每个GPI/O端口有两个32位配置寄存器(GPIOx_CRL, GPIOx_CRH),

  • 两个32位数据寄存器(GPIOx_IDR和GPIOx_ODR),

  • 一个32位置位/复位寄存器(GPIOx_BSRR),

  • 一个16位复位寄存器(GPIOx_BRR)和一个32位锁定寄存器(GPIOx_LCKR)

I/O端口基本构造

①.保护二级管

IO引脚上下两边两个二极管用于防止引脚外部过高、过低的电压输入。

当引脚电压高于VDD时,上方的二极管导通;

当引脚电压低于VSS时,下方的二极管导通,防止不正常电压引入芯片导致芯片烧毁。

②.上下拉输入开关

编程配置控制,当驱动能力不够或者设置I/O引脚初始状态时使用程序配置。

GPIO支持4种输入模式(浮空输入、上拉输入、下拉输入、模拟输入)

③.TTL肖特基触发器

实际是施密特触发器,作用是对输入数字信号进行整形,信号经过触发器后,模拟信号转化为0和1的数字信号。

但是,当GPIO引脚作为ADC采集电压的输入通道时,用其“模拟输入”功能,此时信号不再经过触发器进行TTL电平转换。ADC外设要采集到的原始的模拟信号。

④.输出MOS管组合

可组成三种工作状态 开漏、推挽、关闭。

GPIO输入配置

当I/O端口配置为输入时: ● 输出缓冲器被禁止 ● 施密特触发输入被激活 ● 根据输入配置(上拉,下拉或浮动)的不同,弱上拉和下拉电阻被连接 ● 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器 ● 对输入数据寄存器的读访问可得到I/O状态

上拉输入模式

上拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器。

在I/O端口悬空(在无信号输入)的情况下,输入端的电平可以保持在高电平;

在I/O端口输入为低电平的时候,输入端的电平也还是低电平。

下拉输入模式

下拉输入模式下,I/O端口的电平信号直接进入输入数据寄存器。

但是在I/O端口悬空(在无信号输入)的情况下,输入端的电平可以保持在低电平;

并且在I/O端口输入为高电平的时候,输入端的电平也还是高电平

模拟输入模式

当I/O端口被配置为模拟输入配置时: ● 输出缓冲器被禁止; ● 禁止施密特触发输入,实现了每个模拟I/O引脚上的零消耗。施密特触发输出值被强置 为’0’; ● 弱上拉和下拉电阻被禁止; ● 读取输入数据寄存器时数值为’0’

模拟输入模式下,I/O端口的模拟信号(电压信号,而非电平信号)直接模拟输入到片上外设模块,比如ADC模块等等。

GPIO输出配置

当I/O端口被配置为输出时:

● 输出缓冲器被激活 ─ 开漏模式:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将端口置于高阻状态(PMOS从不被激活)。

─ 推挽模式:输出寄存器上的’0’激活N-MOS,而输出寄存器上的’1’将激活P-MOS。

● 施密特触发输入被激活 ● 弱上拉和下拉电阻被禁止

● 出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器

● 在开漏模式时,对输入数据寄存器的读访问可得到I/O状态

● 在推挽式模式时,对输出数据寄存器的读访问得到最后一次写的值

开漏输出模式

开漏输出模式下,P-MOS不可用

当输出为高电平的时候,N-MOS管处于关闭状态,此时I/O端口的电平由I/O端口外部的上拉或者下拉决定;

当输出为低电平的时候,N-MOS管处于开启状态,此时I/O端口的电平就是低电平。同时,I/O端口的电平也可以通过输入电路进行读取;注意,I/O端口的电平不一定是输出的电平。

开漏复用输出模式

开漏复用输出模式,与开漏输出模式很是类似。只是输出的高低电平的来源,不是让CPU直接写输出数据寄存器,取而代之利用片上外设模块的复用功能输出来决定的

总结与分析

1、什么是推挽结构和推挽电路?

推挽结构一般是指两个参数相同的三极管或MOS管分别受两互补信号的控制,总是在一个三极管或MOS管导通的时候另一个截止。高低电平由输出电平决定。

推挽电路是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务。电路工作时,两只对称的功率开关管每次只有一个导通,所以导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。

2、开漏输出和推挽输出的区别?

开漏输出:只可以输出强低电平,高电平得靠外部电阻拉高。输出端相当于三极管的集电极。适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内);

推挽输出:可以输出强高、低电平,连接数字器件。

关于推挽输出和开漏输出,最后用一幅最简单的图形来概括:

该图中左边的便是推挽输出模式,其中比较器输出高电平时下面的PNP三极管截止,而上面NPN三极管导通,输出电平VS+;当比较器输出低电平时则恰恰相反,PNP三极管导通,输出和地相连,为低电平。右边的则可以理解为开漏输出形式,需要接上拉。

3、在STM32中选用怎样选择I/O模式?

浮空输入_IN_FLOATING ——浮空输入,可以做KEY识别,RX1

带上拉输入_IPU——IO内部上拉电阻输入

带下拉输入_IPD—— IO内部下拉电阻输入

模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电

开漏输出_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能

推挽输出_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的

复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL、SDA)

复用功能的开漏输出_AF_OD——片内外设功能(TX1、MOSI、MISO.SCK.SS)

RCC时钟使能相关函数

  1. void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);
  2. // 作用: Enables or disables the AHB peripheral clock.
  3. /*参数:
  4. * @arg RCC_AHBPeriph_DMA1
  5. * @arg RCC_AHBPeriph_DMA2
  6. * @arg RCC_AHBPeriph_SRAM
  7. * @arg RCC_AHBPeriph_FLITF
  8. * @arg RCC_AHBPeriph_CRC
  9. * @arg RCC_AHBPeriph_FSMC
  10. * @arg RCC_AHBPeriph_SDIO
  11. *
  12. *NewState:ENABLE DISABLE
  13. */
  14. //使能APB2总线上的外设
  15. void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
  16. /**
  17. * @brief Enables or disables the High Speed APB (APB2) peripheral clock.
  18. * @param RCC_APB2Periph: specifies the APB2 peripheral to gates its clock.
  19. * This parameter can be any combination of the following values:
  20. * @arg RCC_APB2Periph_AFIO, RCC_APB2Periph_GPIOA, RCC_APB2Periph_GPIOB,
  21. * RCC_APB2Periph_GPIOC, RCC_APB2Periph_GPIOD, RCC_APB2Periph_GPIOE,
  22. * RCC_APB2Periph_GPIOF, RCC_APB2Periph_GPIOG, RCC_APB2Periph_ADC1,
  23. * RCC_APB2Periph_ADC2, RCC_APB2Periph_TIM1, RCC_APB2Periph_SPI1,
  24. * RCC_APB2Periph_TIM8, RCC_APB2Periph_USART1, RCC_APB2Periph_ADC3,
  25. * RCC_APB2Periph_TIM15, RCC_APB2Periph_TIM16, RCC_APB2Periph_TIM17,
  26. * RCC_APB2Periph_TIM9, RCC_APB2Periph_TIM10, RCC_APB2Periph_TIM11
  27. * @param NewState: new state of the specified peripheral clock.
  28. * This parameter can be: ENABLE or DISABLE.
  29. * @retval None
  30. */
  31. //使能APB2总线上的外设
  32. void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
  33. /**
  34. * @brief Enables or disables the Low Speed APB (APB1) peripheral clock.
  35. * @param RCC_APB1Periph: specifies the APB1 peripheral to gates its clock.
  36. * This parameter can be any combination of the following values:
  37. * @arg RCC_APB1Periph_TIM2, RCC_APB1Periph_TIM3, RCC_APB1Periph_TIM4,
  38. * RCC_APB1Periph_TIM5, RCC_APB1Periph_TIM6, RCC_APB1Periph_TIM7,
  39. * RCC_APB1Periph_WWDG, RCC_APB1Periph_SPI2, RCC_APB1Periph_SPI3,
  40. * RCC_APB1Periph_USART2, RCC_APB1Periph_USART3, RCC_APB1Periph_USART4,
  41. * RCC_APB1Periph_USART5, RCC_APB1Periph_I2C1, RCC_APB1Periph_I2C2,
  42. * RCC_APB1Periph_USB, RCC_APB1Periph_CAN1, RCC_APB1Periph_BKP,
  43. * RCC_APB1Periph_PWR, RCC_APB1Periph_DAC, RCC_APB1Periph_CEC,
  44. * RCC_APB1Periph_TIM12, RCC_APB1Periph_TIM13, RCC_APB1Periph_TIM14
  45. * @param NewState: new state of the specified peripheral clock.
  46. * This parameter can be: ENABLE or DISABLE.
  47. * @retval None
  48. */

GPIO初始化相关函数

初始化GPIO

  1. void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct);
  2. 参数:
  3. /**
  4. * @brief Initializes the GPIOx peripheral according to the specified
  5. * parameters in the GPIO_InitStruct.
  6. * @param GPIOx: where x can be (A..G) to select the GPIO peripheral.
  7. * @param GPIO_InitStruct: pointer to a GPIO_InitTypeDef structure that
  8. * contains the configuration information for the specified GPIO peripheral.
  9. * @retval None
  10. */

GPIO输入输出相关函数

  1. void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
  2. void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
  3. void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal);
  4. 参数:
  5. BitAction enum values:
  6. @arg Bit_RESET: to clear the port pin
  7. @arg Bit_SET: to set the port pin
  8. void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal);//可以同时对多个IO操作
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/301961?site
推荐阅读
相关标签
  

闽ICP备14008679号