stm32:使用和学习--硬件和程序

一硬件

1. GPIO

1.FT, TT功能

ft:five tolerate

tt:three tolerate

  1. FT(Five-Volt Tolerant)引脚

FT 引脚能够容忍高于 VDD 的输入电压(例如 5V)。这些引脚通常不具有连接到 VDD 的保护二极管,因此能够处理比供电电压更高的输入信号,而不会造成电流流入 VDD。它们可能具有特殊的电压钳位电路来保护内部电路。

  1. 非 FT 引脚

标准的 GPIO 引脚通常具有保护二极管,这些二极管连接在引脚和 VDD/VSS 之间。对于这些引脚,输入电压如果超过 VDD,保护二极管将导通,导致电流流入 VDD。这类引脚的输入电压不应超过 VDD 加上保护二极管的正向导通电压,否则可能损坏芯片。

  1. 模拟引脚

模拟引脚(如 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开发经验分享-如何避开初始化的坑

https://blog.csdn.net/m0_54916619/article/details/129825747

相关推荐
悠哉悠哉愿意36 分钟前
【数学建模学习笔记】机器学习分类:KNN分类
学习·机器学习·数学建模
四谎真好看42 分钟前
Java 学习笔记(进阶篇2)
java·笔记·学习
程序猿炎义1 小时前
【NVIDIA AIQ】自定义函数实践
人工智能·python·学习
小陈phd1 小时前
高级RAG策略学习(四)——上下文窗口增强检索RAG
人工智能·学习·langchain
Jayyih3 小时前
嵌入式系统学习DAY28(网络编程)
网络·学习·tcp/ip
dbdr09013 小时前
Linux 入门到精通,真的不用背命令!零基础小白靠「场景化学习法」,3 个月拿下运维 offer,第二十六天
linux·运维·服务器·网络·python·学习
大白的编程日记.3 小时前
【Linux学习笔记】信号的深入理解之软件条件产生信号
linux·笔记·学习
buyutang_3 小时前
C/C++ Linux系统编程:线程控制详解,从线程创建到线程终止
linux·c语言·c++·学习
yzx9910134 小时前
图像去雾:从暗通道先验到可学习融合——一份可跑的 PyTorch 教程
人工智能·pytorch·学习
练习时长两年半的Java练习生(升级中)5 小时前
从0开始学习Java+AI知识点总结-30.前端web开发(JS+Vue+Ajax)
前端·javascript·vue.js·学习·web