一硬件
1. GPIO
1.FT, TT功能
ft:five tolerate
tt:three tolerate
- FT(Five-Volt Tolerant)引脚
FT 引脚能够容忍高于 VDD 的输入电压(例如 5V)。这些引脚通常不具有连接到 VDD 的保护二极管,因此能够处理比供电电压更高的输入信号,而不会造成电流流入 VDD。它们可能具有特殊的电压钳位电路来保护内部电路。
- 非 FT 引脚
标准的 GPIO 引脚通常具有保护二极管,这些二极管连接在引脚和 VDD/VSS 之间。对于这些引脚,输入电压如果超过 VDD,保护二极管将导通,导致电流流入 VDD。这类引脚的输入电压不应超过 VDD 加上保护二极管的正向导通电压,否则可能损坏芯片。
- 模拟引脚
模拟引脚(如 ADC 输入引脚)可能设计有低泄漏电流特性,这些引脚可能没有或只具备有限的保护电路,以保证高精度的模拟信号输入。
没有找到FT是如何实现的电路图,先记住ft引脚可以处理 输入或者输出5v的电压,普通引脚只能处理3.3v,adc引脚使用的时候也要注意。还有就是在电压范围内,电流也要在安全范围内才行。
为了理解为什么ft引脚能够通过开漏输出上拉到5v,普通引脚只能到3.7v,找了好几个小时的资料,还是没想通,因为一直认为ft才有上下钳位保护,普通引脚没有,但是这样的话,普通引脚也能输出5v电压,只要外面上拉电压够就行,不考虑烧毁的风险的话。就一直找电路图,一直也没有找到,慢慢才理解到是都有保护二极管进行钳位,但是ft引脚经过特殊处理,可以钳位到5v以内。
AN4899 应用笔记 执行硬件设置以及实现低功耗的STM32 GPIO配置
STM32的GPIO工作原理及模式经验分享 STM32的GPIO工作原理及模式经验分享 - STM32团队 ST意法半导体中文论坛
STM32 GPIO理论基础知识之基本结构
STM32 GPIO理论基础知识之基本结构 - STM32团队 ST意法半导体中文论坛
明解STM32---GPIO理论基础知识篇之基本结构
https://www.cnblogs.com/Sharemaker/p/17107060.html
二软件程序
gpio初始化:
void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOC_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOC, U5_Pin|U6_Pin, GPIO_PIN_RESET);
/*Configure GPIO pins : PCPin PCPin */
GPIO_InitStruct.Pin = U5_Pin|U6_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
}
注意输出引脚初始化顺序,最重要的是HAL_GPIO_WritePin先设置引脚电平状态(高低电平看情况),再init。
可能的副作用
-
不确定的初始状态 :如果在
HAL_GPIO_Init
之前未设置引脚状态,有可能在初始化时引脚会处于不确定状态。尤其是在复位后,引脚的默认状态可能会导致意外行为。 -
初始化过程中的瞬态状态:在某些情况下,初始化过程中的短暂瞬态状态(如切换模式时的瞬间状态)可能会影响外部电路或设备。例如,某些外设可能会对特定电平敏感,导致不希望的操作。
输入引脚的初始化不需要先write。
【STM32】- GPIO开发经验分享-如何避开初始化的坑