微控制器的每个引脚都与寄存器相关联吗?

Do every pin of a micro controller associated with a register?

我是嵌入式系统开发领域的初学者。 我想就以下问题进行一些澄清。

  1. 微控制器的每个引脚(以下简称mc)是否都与寄存器相关联?
  2. 是一对一的关系吗?
  3. 如何在 mc 内部分配端口(或引脚组)?
  4. 是否只能将单个引脚设置为低电平或高电平?
  1. 没有。有些引脚根本不与寄存器相关联,例如Vcc 和 GND,如果它们不作为 GPIO 双重使用,它也适用于 clock/oscillator 和复位引脚。

  2. 如果一个引脚与寄存器相关联,那么它通常与几个寄存器相关联:一个用于确定IO方向,一个用于读取输入,一个或多个用于设置输出。对于I2C、SPI、UART管脚,关联是间接的,即寄存器主要控制I2C/SPI/UART控制器,而控制器又与管脚相关。

  3. 我没看懂问题

  4. 一个GPIO引脚可以设置为输入,高态输出(送电流或弱上拉),低态输出(拉电流或弱上拉)向下)或开漏状态(通常类似于输入模式)。引脚也可以配置为由 I2C/SPI/UART 控制器之一使用或用作 DAC(输出 GND 和 Vcc 之间的可变电压)。

除了电源和时钟引脚等基本内容外,MCU 内部还有许多 硬件外设 。硬件外设类似于一块 GPIO(通用 input/output)、ADC、UART、SPI 等。每个此类硬件外设都有许多可能的引脚,其功能可以路由到这些引脚。

传统上,这些几乎是固定的 - 如果您想要 UART Tx,那么您总是会在某个固定的 PIN 号码上获得它,接受或保留它。如今,大多数 MCU 的内部都非常灵活,允许您将硬件外围功能重新路由到几乎任何您喜欢的引脚,可变的。

在任何一种情况下,多个硬件外围设备可以共享同一个引脚,然后由 MCU 特定,哪个优先。例如,默认情况下 GPIO 可能存在于引脚上,但如果您启用 UART,那么 MCU 可能会声明您在该引脚上获得 UART Tx。

至于称为 GPIO 的硬件外围设备,它们几乎总是分组在 端口 中,其中每个端口由许​​多引脚组成。大多数情况下,端口寄存器要么是 8 位,要么是 CPU 字长的大小。各种端口寄存器中的每一位对应一个引脚。

你将有一个端口数据寄存器,它是实际的 read/write 到引脚,一个数据方向寄存器说明输入或输出,然后是用于中断、拉电阻启用等的各种其他寄存器。

  1. 不是所有引脚,而是所有 IOs (Input/Output) 都有特定的寄存器。
  2. 每个 IO 都有一组特定的寄存器。此外,某些寄存器可能包含影响 IO 或所有 IOs.
  3. 的特定位
  4. 这取决于微控制器的设计。
  5. 是的。

我强烈建议您阅读一些嵌入式 hardware/software 书籍(例如嵌入式系统的 Newness Know It All 书籍)和数据表。