STM32——GPIO

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


一、GPIO简介

GPIO(General Purpose Input Output)通用输入输出口,可配置为八种输入输出模式,引脚电平为0V~3.3V(部分引脚可容忍5V)。STM32芯片的GPIO被分成很多组,每组有16个引脚,所有的GPIO引脚都有基本的输入输出功能
输出模式下可控制端口输出高低电平,以驱动LED ,控制蜂鸣器,模拟通信协议输出时序(I2C,SPI)等。
输入模式下可读取端口的高低电平或电压,以读取按键输入,外接模块电平信号输入,ADC电压采集,模拟通信协议接收数据等。

二、基本结构

图一(系统结构图)
图1
如图所示,所有的GPIO都是挂载在APB2外设总线上的。(所以在使用GPIO时使用APB2相关的函数)
void RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE );
图二
图二
GPIO外设的名称按照GPIOA,GPIOB,GPIOC等命名。
每个GPIO都有16个引脚
寄存器是特殊的储存器,内核通过APB2总线对寄存器进行读写,完成输出读写电平的功能。
(stm32是32位的单片机,每个寄存器都有32位,但端口只有16位,此寄存器只有低16位有对应端口)
图三

### GPIO内部上拉电阻与外部上拉电阻的区别及使用场景 #### 1. **定义** GPIO(General Purpose Input Output)是一种通用输入/输出端口,其功能可以通过软件配置为输入或输出模式。为了确保信号的稳定性,在设计中常使用上拉电阻或将引脚设置为内部上拉状态。 - 上拉电阻的作用是将未连接到电源或其他驱动源的引脚保持在一个稳定的高电平状态,防止浮动引起的不确定性[^2]。 #### 2. **内部上拉电阻的特点** 微控制器通常内置有可编程的上拉电阻,这些电阻可以直接通过寄存器配置启用或禁用。 - 内部上拉电阻的阻值通常是固定的,常见的范围在几kΩ至几十kΩ之间[^1]。 - 配置简单,只需修改相应的控制寄存器即可实现开启或关闭。 - 功耗较低,适合大多数应用场景下的弱上拉需求。 - 不适用于需要更高驱动能力的情况,因为内部上拉电阻的阻值较大,无法提供足够的电流来快速充电负载电容[^3]。 #### 3. **外部上拉电阻的特点** 当内部上拉电阻不足以满足应用需求时,可以选择外加上拉电阻。 - 外部上拉电阻可以根据具体的应用需求灵活调整阻值,从而优化功耗性能之间的平衡。 - 对于较大的负载或者更快的上升时间要求,外部上拉电阻能够提供更强的驱动能力。 - 增加了硬件复杂度,可能占用额外的空间并增加成本。 - 如果选择不当,可能会引入不必要的功耗问题,尤其是在低功耗设计中需要注意这一点。 #### 4. **使用场景对比** | 特性 | 内部上拉电阻 | 外部上拉电阻 | |---------------------|---------------------------------------|--------------------------------------| | **灵活性** | 固定阻值 | 可调阻值 | | **配置难度** | 软件配置简便 | 需要额外焊接或布线 | | **适用场合** | 一般用途、轻载 | 较大负载、高速切换 | | **功耗考虑** | 更节能 | 若选用较小阻值则可能导致较高功耗 | 对于简单的开关检测或者其他不需要强驱动能力的应用来说,优先推荐使用内部上拉电阻以简化设计流程;而对于那些对外设接口速度敏感或者是面对较重电气负荷的情况下,则应考虑采用合适的外部组件来进行补充支持。 ```c // 启用STM32 MCU中的某个GPIO引脚的内部上拉电阻示例代码 void enable_internal_pull_up(GPIO_TypeDef* GPIOx, uint16_t pin){ // 设置为输入模式,并使能上拉 GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pin = pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOx, &GPIO_InitStruct); } ``` 上述C语言片段展示了如何利用库函数初始化特定型号MCU上的指定管脚作为带有内部上拉功能的输入端子。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值