【单片机】GPIO位结构图解析

1、片上外设与CPU的关系

CPU是单片机的核心部分,负责处理数据和控制程序流程。片上外设是集成在单片机芯片内部的外部电路,如GPIO、ADC、定时器、串口等。这些外设通过特殊的寄存器与CPU进行通信,CPU通过读写这些寄存器来控制外设的工作状态。

2、GPIO位结构

复制代码
GPIO位结构包括两个重要部分,一个是输入数据寄存器(IDR),一个输出数据寄存器(ODR)

保镖室(保护二极管)

作用:瞬间高压来了,先把电引走,防止芯片被"电死"。

白话:像门口保安,遇到闹事的大块头直接请出门,不让进屋。

翻译室(TTL 施密特触发器)

作用:把引脚上"模模糊糊"的电压翻译成"0 或 1"的干净数字信号。

白话:把方言转成标准普通话,让后面的大脑听得懂。

录音室(输入寄存器)

作用:把翻译好的 0/1 先"录"下来,CPU 随时来读。

白话:像录音笔,按下按钮就能把声音存起来,想听再播放。

播音室(输出寄存器 + 驱动器)

作用:CPU 想发话时,先把 0/1 写进"小喇叭",再由驱动器把电流放大,真正送到引脚。

白话:像教室里的广播站,老师先写好稿子,再通过大喇叭让全校听见。

多功能切换开关(复用功能开关)

作用:决定这个引脚今天当"普通 I/O"还是当"特殊外设"(比如串口、PWM)。

白话:像电视遥控器上的"信号源"键,一键切换 HDMI、AV、USB,不同模式干不同活。

3、输入寄存器(IDR)与片上外设的区别

将转换后的数字信号传递到对应的cpu内核中

模拟输入就是原来没有转换的电平信号,都是模拟信号,传递到对应的处理模拟信号的片上外设,复用功能输入主要将数字信号不通过CPU而是直接传递到对应要读取引脚电平的片上外设中,比如串口接收引脚,直接将电平信号传递到串口接收器中,不需要CPU处理。

4、输出寄存器(ODR)与复位功能输出的区别

输出寄存器使用的是CPU处理后的数字信号,通过GPIO输出,然后控制P-MOS和N-MOS来定义引脚的输出高低(数字信号),复用功能输出主要是多次发送数字信号,做个比喻,输出寄存器就好比单发的子弹,而复用功能输出就好比机关枪,可以连续发射。

没有这条"复用功能输出"线,我们就倒退回"软件 bit-bang"石器时代------速度低、抖动大、CPU 被绑、协议难写。

"抢方向盘"是迫不得已且心甘情愿:让专业硬件干专业活,软件只需配置和装数据。

把"弹"和"枪"拆开,就一目了然:

ODR 的"弹"=1 个 bit

你写 GPIOA->ODR = 1 → 上管立刻开,引脚变高;写 0 → 下管开,引脚变低。

写完就完事,不会再自动翻,必须下一次 CPU(或 DMA)再写新值才会变。

→ 所以 ODR 只是单发步枪,每放一枪都要软件重新扣扳机。

复用功能(SPI/PWM/USART)的"弹"=一串 bit+时钟

你把 0x55 放进 SPI_DR → 移位寄存器在 8 个 SCK 周期里自动依次把 0-1-0-1... 送到引脚,完全不用软件再干预。

波特率、相位、占空比都由硬件计数器自动对齐。

→ 这是连发机枪,装一次弹,硬件帮你打完整串。

二者永远互斥

引脚只有一对上下管,MUX 硬开关保证:

要么连 ODR(单发,软件扳机)

要么连外设移位寄存器(连发,硬件扳机)

不能同时连,否则会出现"软件写 1 而硬件移位写 0" → 上下管同时导通短路。

5、USART-TX在哪里?

USART-TX在哪里?

在这张图里,USART-TX 并没有被单独画出来,它藏在 "来自片上外设" 这条总线里------

先找到图最下方的那根横线,旁边写着

"来自片上外设"

它就是 所有片上外设(USART、SPI、TIM...)共用 的"复用功能输出"总线。

这条总线通过一个 "复用功能输出 或关闭" 开关(多路选择器)直接连到 输出驱动器(P-MOS / N-MOS)。

当你把引脚配置成 USART1_TX 时,芯片内部的路由逻辑会把 USART 外设的 TX 移位寄存器输出 接到这条总线上,从而接管输出驱动器;ODR 通路被自动断开。

因此,USART-TX 的物理信号就是沿着

"USART 移位寄存器 → 片上外设总线 → 复用功能输出开关 → 输出驱动器 → 引脚"

这条路径出去的,图上只用一个公共箭头表示,没有单独标"USART-TX"字样。

6、GPIO模式与外设模式

GPIO 模式

你自己当厨师:

点火(写 1)、关火(写 0)、翻锅(读 IDR)------每一步都要 CPU 亲手操作。

外设模式

你按下"电饭煲"按钮:

升温、恒温、跳保温全部由电饭煲内部硬件状态机搞定;

CPU 只负责"放米+按开始",之后该干嘛干嘛,饭熟硬件自动通知你(中断/DMA)。

引脚上的时钟、数据、PWM 波形,都是"电饭煲"里的电路自动产生,CPU 已经插不上手。

7、一句话总结

把单片机想成一座"智能工厂":CPU 是厂长,片上外设是各专业车间,GPIO 则是能随时改换的"万能工位"。

厂长(CPU)可以亲手拧螺丝(GPIO 模式:写 ODR、读 IDR),也能按下电钮(配置寄存器)把工位交给自动化流水线(外设复用模式)。

交出去后,子弹变机关枪、单发变连发,厂长只需等中断"叮"一声------饭已煮好、数据已发完、波形已生成。

记住这条铁律:

"谁掌握驱动器,谁决定引脚命运。"

让专业硬件干专业活,软件只需"开局一张配置表",剩下的时间,CPU 可以去睡觉,也可以去规划下一道工序------这就是现代单片机高效、低功耗、省心的终极秘密。

相关推荐
d111111111d2 小时前
STM32得中断服务函数,为什么不能有返回值
笔记·stm32·单片机·嵌入式硬件·学习
时光の尘2 小时前
嵌入式面试八股文(十九)·裸机开发与RTOS开发的区别
linux·stm32·单片机·iic·rtos·spi
袖手蹲2 小时前
Arduino UNO Q 烘托圣诞节气氛
人工智能·单片机·嵌入式硬件
电子工程师-C512 小时前
基于51单片机的64位流水灯
单片机·嵌入式硬件·51单片机
d111111111d3 小时前
连续形式PID和离散PID-详情学习-江科大(学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习
电气_空空3 小时前
基于 PLC控制机械手臂取放料的系统设计
人工智能·嵌入式硬件·毕业设计
国科安芯3 小时前
如何利用AS32系列MCU芯片使用简洁单线模式操作QSPI FLASH?
单片机·嵌入式硬件·性能优化·安全性测试
iCxhust3 小时前
__acrtused 是什么
c语言·c++·单片机·嵌入式硬件·微机原理
雾岛听风眠3 小时前
【OpenCV+STM32】二维云台颜色识别及追踪
stm32·单片机·嵌入式硬件