作为状态机的外设

    • 关闭
    • 使能
      • 配置成输出
        • 输出: 高
        • 输出: 低

    如果外设开始于模式,切换到输入: 高阻抗模式,我们必须执行下面的步骤:

    1. 关闭
    2. 使能
    3. 配置成输入

    如果我们想要从切换到输入: 下拉,我们必须执行下列的步骤:

    1. 输入: 高阻抗
    2. 输入: 下拉
    1. 输入: 下拉
    2. 配置成输入
    3. 配置成输出
    4. 输出: 高

    通常,上面列的状态通过向指定的映射到一个GPIO外设的寄存器中写入值来配置。让我们定义一个假想的GPIO配置寄存器来解释下它:

    我们 在Rust中暴露下列的结构体来控制这个GPIO:

    正常使用这个结构体将会允许我们访问我们上面的状态机没有定义的状态: e.g. 一个被上拉的输出,或者一个被拉高的输入。对于一些硬件,这并没有关系。对另外一些硬件来说,这将会导致不可预期或者没有定义的行为!

    虽然这个接口很方便写入,但是它没有强制我们遵守为硬件的实现所规定的设计协约。