stm32 器件基础知识

资料来源说明

文中的很多资料来源于网页,文中提供了链接;

也有很多来源于硬汉的手册或论坛:www.armbbs.cn/;

1.  STM32单片机复位后GPIO电平状态 (2024.7.15)

STM32单片机复位后GPIO电平状态-CSDN博客

重要知识:

stm32单片机是一个低功耗的处理器,当复位以后,gpio默认是高阻状态,也就是浮空输入。这样的好处是:

1.降低了单片机的功耗;

2.把gpio模式的选择权交给用户;

3.在用户使用的时候,都会在gpio外加一个上拉或下拉电阻,这样当单片机复位以后就能够清楚的知道引脚的电平情况;

2. STM32哪些IO可以容忍5V电平?(2024.7.29)

https://blog.csdn.net/kai73/article/details/83986234

原始来源:STM32的GPIO口能够承受多大电压? 哪些IO口能容忍5V? (360doc.com)

查看数据手册,引脚标注”FT"的是可以容忍5V的。

STM32F4的绝大部分IO口,都兼容5V,

至于到底哪些是兼容5V的,请看STM32F40x的数据手册(注意是数据手册,不是中文参考手册!!),

见 表:Table 6 STM32F40x pin and ball definitions,凡是有FT/FTf标志的,都是兼容5V电平 的IO口,可以直接接5V的外设

(注意:如果引脚设置的是模拟输入模式,则不能接5V!),

凡是不是FT/FTf标志的,大家都不要 接5V了,可能烧坏MCU。

3. stm32(以405为例)IO的驱动能力:

IO输出电流、输入电流最大为25mA,电源管脚地为240mA。

<think>嗯,用户让我介绍一下STM32的GPIO基础知识。首先,我需要确定用户可能是什么背景。如果是初学者,可能需要从基础概念讲起,比如GPIO是什么,有什么作用。然后,可能需要分点讲解,比如工作模式、寄存器配置、常用函数库等。 用户可能在使用STM32进行项目开发,比如控制外设或者传感器,所以需要了解如何配置GPIO引脚。我应该涵盖输入和输出模式,推挽和开漏的区别,以及上下拉电阻的应用场景。另外,寄存器配置部分可能对直接操作寄存器的高级用户有用,而HAL库函数更适合初学者。 还要注意用户可能遇到的问题,比如配置错误导致引脚无法正常工作,或者电流驱动能力不足。这时候需要提醒注意事项,比如避免过载、配置匹配模式、未使用的引脚处理等。 需要检查是否有遗漏的重要知识点,比如复用功能和重映射,这在某些特定外设(如USART、I2C)的使用中很重要。另外,中断配置也是GPIO的重要部分,特别是外部中断的应用。 要确保语言简洁明了,避免使用过于专业的术语,或者如果使用了,要适当解释。结构上分点列出,方便阅读。最后,可能需要一个总结,帮助用户快速回顾关键点。</think>好的,我来为您梳理STM32 GPIO基础知识(分点说明,使用中文): 📌**一、GPIO基本概念** GPIO = General Purpose Input/Output(通用输入输出端口) - STM32的每个GPIO引脚均可通过编程配置为**数字输入**或**数字输出**模式 - 典型应用:控制LED、读取按键、驱动外设、通信接口复用等 🔧**二、GPIO工作模式(8种)** 1. **输入模式** - 浮空输入(常用作按键检测) - 上拉输入(默认高电平) - 下拉输入(默认低电平) - 模拟输入(ADC采样时使用) 2. **输出模式** - 推挽输出(强驱动能力,高低电平明确) - 开漏输出(需外接上拉电阻,适合总线通信) - 复用推挽(用于外设功能如SPI、I2C) - 开漏复用(同上,开漏特性) 💡**三、关键寄存器** 1. **GPIOx_MODER**:模式寄存器(设置输入/输出/复用/模拟) 2. **GPIOx_OTYPER**:输出类型寄存器(推挽/开漏) 3. **GPIOx_OSPEEDR**:输出速度寄存器(低速/中速/高速/超高速) 4. **GPIOx_PUPDR**:上拉下拉寄存器 5. **GPIOx_IDR**:输入数据寄存器 6. **GPIOx_ODR**:输出数据寄存器 📝**四、HAL库常用函数** ```c // 初始化函数 HAL_GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *InitStruct); // 写引脚 void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState); // 读引脚 GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); // 翻转电平 void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); ``` ⚠️**五、重要注意事项** 1. **电压匹配**:IO口电平取决于供电电压(VDD),3.3V系统不能直接连接5V器件 2. **驱动能力**:单个GPIO最大吸收电流约20mA,驱动大功率设备需加三极管/MOS管 3. **复用功能**:使用USART、SPI等外设时需配置AFRL/AFRH寄存器选择复用功能 4. **未使用引脚**:建议配置为模拟输入模式以降低功耗 🔨**六、配置流程示例(以点亮LED为例)** 1. 使能GPIO时钟:`__HAL_RCC_GPIOA_CLK_ENABLE()` 2. 定义初始化结构体: ```c GPIO_InitTypeDef GPIO_InitStruct = {0}; GPIO_InitStruct.Pin = GPIO_PIN_5; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽输出 GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; ``` 3. 调用初始化函数:`HAL_GPIO_Init(GPIOA, &GPIO_InitStruct)` 4. 控制电平:`HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, GPIO_PIN_SET);` 📊**七、模式选择指南** | 应用场景 | 推荐模式 | |-------------------|-----------------------| | 驱动LED | 推挽输出 + 合适速度 | | I2C总线 | 开漏输出 + 外接上拉 | | 按键检测 | 上拉/下拉输入 | | ADC采样 | 模拟输入模式 | | PWM输出 | 复用推挽输出 | 掌握这些基础知识后,建议通过STM32CubeMX工具进行可视化配置练习,可快速验证GPIO配置效果。实际开发中还需结合具体型号的参考手册查看引脚复用映射表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值