当前位置: 首页 > news >正文

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

一硬件

1. GPIO

1.FT,  TT功能

ft:five tolerate

tt:three tolerate

1. FT(Five-Volt Tolerant)引脚

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

2. 非 FT 引脚

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

3. 模拟引脚

模拟引脚(如 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

http://www.lryc.cn/news/416106.html

相关文章:

  • ARM知识点二
  • C# ?的使用
  • 【unity小技巧】unity性能优化以及如何进行性能测试
  • 算法参考改进点/知识点
  • electron 配置、打包 -报错解决
  • 基于STM32设计的智能鱼缸(华为云IOT)(200)
  • Django与数据库
  • 大数据系列之:CentOS7安装R详细步骤
  • Linux学习第57天:Linux PWM驱动实验
  • git 远程拉取指定文件
  • 【css】 CSS3+JS做一个酷炫的仪表进度条3d进度条
  • uniapp小程序全局配置分享到朋友和朋友圈功能的实现
  • Java优化后台分页
  • <数据集>电梯内人车识别数据集<目标检测>
  • 二百五十三、OceanBase——Linux上安装OceanBase数据库(三):OBD页面上部署OceanBase数据库
  • Redis应用笔记
  • html实现好看的塔罗牌、十二星座运势网站源码
  • 万字长文带你入门shell编程(超详细)
  • 音质提升秘籍:专业音频剪辑软件汇总
  • idea配置
  • 将 WinForms 中的 Panel 替换为 WPF 的 WindowsFormsHost 元素
  • C++ ---- vector的底层原理剖析及其实现
  • 跑酷视频素材去哪里下载?哪里有跑酷游戏视频素材?
  • Centos 7配置问题
  • 浮动IP(Floating IP)计费;OpenStack算力共享;OpenStack实现资源虚拟化;算力调度策略
  • Android 源码单独编译Settings模块
  • 虚拟机类加载机制
  • Google Earth Engine(GEE)——逐月筛选影像,并给影像集合添加新的属性
  • 如何从智联招聘网站快速抓取职位详情?两大技巧揭秘
  • C#知识|ini文件操作