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

STM32时钟与GPIO工作模式

一、GPIO工作模式

GPIO端口的每个位(引脚)可以由软件分别配置成8种模式

模式名称性质特征
浮空输入数字输入可读取引脚电平,若引脚悬空,则电平不确定
上拉输入数字输入可读取引脚电平,内部连接上拉电阻,悬空时默认高电平
下拉输入数字输入可读取引脚电平,内部连接下拉电阻,悬空时默认低电平
模拟输入模拟输入GPIO无效,引脚直接接入内部ADC
开漏输出数字输出可输出引脚电平,高电平为高阻态,低电平接VSS
推挽输出数字输出可输出引脚电平,高电平为VDD,低电平接VSS
复用开漏输出数字输出由片上外设控制,高电平为高阻态,低电平接VSS
复用推挽输出数字输出由片上外设控制,高电平为VDD,低电平接VSS

输出模式下可以控制端口输出高电平低电平,用于驱动LED,蜂鸣器等,如果是大功率器件(比如电机),还需要加上驱动器(小电流控制大电流)。

输入模式下可以读取端口的高低电平,用于读取外接按键,外接模拟信号的输入,ADC电压采集,模拟通信协议接受数据等。

1. 输出模式

在这里插入图片描述

推挽输出模式:

  • 向设置/清除寄存器对应的设置位或清除位写1
  • 或者输出寄存器对应位直接写1或0
  • 工作时两个MOS管交替工作来驱动负载。输出1时,上部晶体管导通将电流推向负载;输出0时,下部晶体管导通将电流拉回地线。

(P-MOS管0导通,N-MOS管1导通。 以输出1为例,经过输出控制,电平反向变成0,P-MOS导通,VDD与IO引脚相连,输出1)

  • 可以从输入寄存器读取引脚状态

开漏输出模式:

P-MOS永远关闭。 输出寄存器上的 0 激活N-MOS,使得输出0。要想输出1,需要在外部接入上拉电阻。

2. 输入模式

在这里插入图片描述

  • 2个保护二极管的作用是保护我们的芯片不会由于电压过高或过低而烧毁。VDD是接电源(3.3V),VSS接地(0V)。如果IO引脚的输入电压高于VDD的值到一定程度,上方保护二极管导通,则引脚电压被拉低到VDD。如果IO引脚的输入电压(负电压)低于VSS到一定程度,则下方保护二极管导通,电压被拉高到VSS。

  • 2个开关控制引脚在没有输入的时候是上拉,下拉还是浮空。当上面的开关闭合的时候,输入被拉高到高电平。当下面的开关闭合的时候,输入被拉低到低电平。如果两个都不闭合,输入就是悬空状态。两个同时闭合,就是费电了,不会这么做的。

  • 施密特(肖特基)触发器是包含正反馈的比较器电路。可以对信号进行波形整形。
    在这里插入图片描述

从施密特触发器出来的数据,进入到输入数据寄存器中,我们就可以从中读取数据了。

在这里插入图片描述

对于模拟输入,禁止施密特触发输入,弱上拉和下拉电阻被禁止。

二、时钟

1. 时钟树

在STM32中有3种不同的时钟源用来驱动系统时钟(SYSCLK):

(1)HSI振荡器时钟(High Speed Internal oscillator,高速内部时钟)

(2)HSE振荡器时钟(High Speed External(Oscillator / Clock),高速外部时钟)

(3)PLL时钟(Phase Locked Loop 锁相环/倍频器)

还有2种2级时钟:

(4)LSI时钟(Low Speed Internal,低速内部时钟)

(5)LSE时钟(Low Speed External oscillator,低速外部时钟)

之所以提供这么多的时钟,是为了节能,使高速设备接高速时钟,低速设备接低速时钟,可以最大程度的达到节能效果。

在这里插入图片描述

2. 时钟介绍

2.1 HSE时钟

高速外部时钟是由外部时钟源提供,目前几乎所有的STM32单片机的设计都是在外部接一个8MHz的晶振,经过PLL倍频(9倍频)后得到一个72MHz的系统时钟。我们系统默认就是这个时钟。

在这里插入图片描述

2.2 HSI时钟

HSI时钟信号由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入。HSI RC振荡器能够在不需要任何外部器件的条件下提供系统时钟。它的启动时间比HSE晶体振荡器短。然而,即使在校准之后它的时钟频率精度仍较差。

可以在单片机刚开始启动时候作为系统时钟,等待外部时钟开启稳定后选用高速外部时钟作为系统时钟。

在这里插入图片描述

2.3 PLL时钟

内部PLL用来倍频HSI RC的输出时钟或HSE晶体输出时钟。PLL的设置必须在其被激活前完成。一旦PLL被激活,这些参数就不能被改动。如果PLL中断在时钟中断寄存器里被允许,当PLL准备就绪时,可产生中断申请。

PLL时钟一般都是对外部的8MHz的时钟信号经过9倍频后,得到72MHz的时钟频率,这是STM32F1系列允许的最高时钟频率。

在这里插入图片描述

2.4 LSE时钟

LSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。它为实时时钟或者其他定时功能提供一个低功耗且精确的时钟源。

LSE是不能驱动系统时钟的。

在这里插入图片描述

2.5 LSI时钟

LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看门狗和自动唤醒单元提供时钟。LSI时钟频率大约40kHz(在30kHz和60kHz之间)。

LSI也是不能驱动系统时钟的。

在这里插入图片描述

http://www.xdnf.cn/news/13166.html

相关文章:

  • LeetCode:912归并排序,洛谷:ACM风格
  • Manus AI 与多语言手写识别
  • 论文笔记:LANGUAGE MODELS REPRESENT SPACE AND TIME
  • 【HarmonyOS 5】鸿蒙CodeGenie AI辅助编程工具详解
  • 1、ZYNQ 开篇简介
  • 向量数据库Milvus在windows环境下的安装
  • SQL进阶之旅 Day 24:复杂业务场景SQL解决方案
  • Unity实现不倒翁
  • Dispatch PDI(DPDI)kettle调度管理平台稳定版本,正式登场!
  • Nuxt + Pinia + Element Plus 后台管理系统搭建教程(含源码)
  • CMake测试find_package()命令的相关原理
  • 10- AI大模型-LangChainV0.3应用(一) - 简介,模型调用,prompt模板,输出解析器
  • 6.10
  • Vue.js 中的 v-bind 指令详解
  • Vue 模板语法之指令语法详解
  • 深入解析 GitHub Token 与 NPM Token:自动化发布的完整指南
  • 医学图像分割最新进展
  • 苹果签名应用掉签频繁原因排查,以及如何避免
  • WebRTC 中 ICE 流程优化:SRS 轻量级部署与 NAT 类型检测实战
  • 项目管理三要素有哪些?如何实现项目管理的三要素平衡
  • 题单:归并排序
  • DSP——时钟树讲解
  • 使用联邦学习进行CIFAR-10分类任务
  • 消防车辆管理系统:为消防公车筑牢安全与效率防线
  • 磐维数据库的权限使用
  • spark数据处理练习题番外篇【下】
  • 统计学核心概念与现实应用精解(偏机器学习)
  • ios 26官宣:car play升级提升车载体验
  • 丝杆升降机的物联网与大数据应用的具体例子
  • React 19 新特性