This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280039C:在运行时更改 GPIO 方向

Guru**** 2039500 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1228254/tms320f280039c-change-gpio-direction-during-runtime

器件型号:TMS320F280039C

亲爱的香榭丽舍大街,

我是为我们的客户提出这个问题的。

用户希望在运行时更改 GPIO 方向和值(在 C28x ISR/后台和 CLA 任务/后台任务8中)。

您能帮助确认注意事项吗?

1.从 GPIO 输入到输出

在 "TRM 的10.3配置概述"中、包含了第4步: 选择任何通用 I/O 引脚的方向

"默认情况下、所有 GPIO 引脚均为输入。 在将引脚更改为输出之前、通过将要驱动的值写入 GPySET、GPyCLEAR 或 GPyDAT 寄存器来加载输出锁定。 一旦锁存器被载入、写入 GPyDIR 以改变引脚方向。'

用户必须在 GPIO 初始化和运行时遵循该序列。

例如、

    GPIO_writePin (myGPIO0、 1);

    GPIO_setDirectionMode (myGPIO0、 GPIO_DIR_MODE_OUT);

是这样吗?

2.从 GPIO 输出到输入,

用户可以直接改变方向吗?

是否有任何需要考虑的因素、比如这里的顺序?

GPIO_setDirectionMode (myGPIO0、 GPIO_DIR_MODE_IN);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    韦恩、您好!

    感谢您的提问。

    用户必须在 GPIO 初始化和运行时遵循该序列。

    例如、

        GPIO_writePin (myGPIO0、 1);

        GPIO_setDirectionMode (myGPIO0、 GPIO_DIR_MODE_OUT);

    是这样吗?

    [/报价]

    这是正确的、但我建议您在需要时也设置焊盘配置(如果您需要对其在输入模式下设置的配置进行更改)。 请参阅 GPIO_ex1_setup.c 以了解如何更改 PadConfig:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    //
    // Enable a GPIO output on GPIO6, set it high
    //
    GPIO_setPadConfig(6, GPIO_PIN_TYPE_PULLUP); // Enable pullup on GPIO6
    GPIO_writePin(6, 1); // Load output latch
    GPIO_setPinConfig(GPIO_6_GPIO6); // GPIO6 = GPIO6
    GPIO_setDirectionMode(6, GPIO_DIR_MODE_OUT); // GPIO6 = output
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    2.从 GPIO 输出到输入,

    用户可以直接改变方向吗?

    是否有任何需要考虑的因素、比如这里的顺序?

    [/报价]

    我建议您遵循 GPIO_ex1_setup.c 序列、将上拉电阻修改为您希望引脚呈现的任何内容、如果已设置引脚、则无需设置 PinConfig:

    Fullscreen
    1
    2
    3
    4
    5
    // Make GPIO34 an input on GPIO34
    //
    GPIO_setPadConfig(34, GPIO_PIN_TYPE_PULLUP); // Enable pullup on GPIO34
    GPIO_setPinConfig(GPIO_34_GPIO34); // GPIO34 = GPIO34
    GPIO_setDirectionMode(34, GPIO_DIR_MODE_IN); // GPIO34 = input
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    如果您不想更改 PadConfig、那么可以更改方向、就是这样。

    此致、

    Vince

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Vince:

    感谢您的信息。

    最初、用户希望在运行时使用 CLA 来更改 GPIO 方向、但我们只是意识到只有 CPU 可以访问  GPIO_CTRL_REGS 寄存器。

    CLA 无法访问它。