【问题标题】:Do every pin of a micro controller associated with a register?微控制器的每个引脚都与寄存器相关联吗?
【发布时间】:2020-02-07 12:15:15
【问题描述】:

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

  1. 微控制器的每个引脚(以下称为 mc)是否都与寄存器相关联?
  2. 这是一对一的关系吗?
  3. 如何在 mc 内部分配端口(或引脚组)?
  4. 是否只能将单个引脚设置为低电平或高电平?

【问题讨论】:

  • 您最好阅读和理解您打算使用的特定微控制器的数据表和/或参考手册 - I/O 架构、功能和复杂性存在显着差异。就有用信息而言,您的问题的答案不会让您走得太远。至少基本电子设备中的一些接地(没有双关语)也会有所帮助。然后问一些更专注、更有用的问题。
  • 您已将问题标记为“PIC” - 如果您的问题是专门针对 PIC 的,请提出该问题 - 但这涵盖了多种设备,因此您应该更具体地提出问题。如果您的问题不是专门针对 PIC 设备,那么您不应该这样标记它。
  • @Clifford 如果您能推荐一些嵌入式系统领域的网站或书籍,这将非常有用。感谢您的建议。

标签: embedded port microcontroller


【解决方案1】:
  1. 没有。有些引脚根本与寄存器无关,例如Vcc 和 GND,如果它们没有作为 GPIO 的双重用途,它也适用于时钟/振荡器和复位引脚。

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

  3. 我不明白这个问题

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

【讨论】:

  • 我想你回答了 3. 并解释了与 2 中的一个引脚关联的多个寄存器。
【解决方案2】:

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

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

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

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

您将拥有一个端口数据寄存器,它是对引脚的实际读/写,一个表示输入或输出的数据方向寄存器,然后是用于中断、拉电阻启用等的各种其他寄存器。

【讨论】:

    【解决方案3】:
    1. 并非所有引脚,而是所有 IO(输入/输出)都有特定寄存器。
    2. 每个 IO 都有一组特定的寄存器。此外,一些寄存器可能包含影响 IO 或所有 IO 的特定位。
    3. 这取决于微控制器的设计。
    4. 是的。

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

    【讨论】:

      猜你喜欢
      • 2020-09-12
      • 1970-01-01
      • 1970-01-01
      • 2022-09-26
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多