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.

[参考译文] RTOS/AM5728:切换板载 LED 以外的 GPIO

Guru**** 2553690 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/624401/rtos-am5728-toggling-gpio-other-than-on-board-led

器件型号:AM5728

工具/软件:TI-RTOS

我将使用 来自 ti-processor-sdk-rtos-am57xx-evm-04.00.00.04的闪烁 LED GPIO 示例。 它使 USER_LED0 (即 GPIO7_8 (F16))闪烁。 为了切换接头 P18的引脚7 GPIO4_10、我需要做什么更改。  

我已经尝试将'GPIO_evmAM572x_board.c'中的 GPIO_USER0_LED_PIN_NUM 和 PORT_NUM 更改为 所需的引脚和端口、并保持所有内容相同、但不起作用。 我还使用了 pinmux 工具并添加了此工具生成的所有文件、但我不了解如何切换所需的引脚。

GPIO_WRITE (索引、值)需要该引脚的索引、我不知道所需引脚的索引是什么。 基本上、在主代码中、我将执行以下操作。  

board_initCfg boardCfg;
boardCfg = Board_init_PINMUX_CONFIG |
Board_init_module_clock |
Board_init_uart_stdio;
board_init (boardCfg);

GPIO_init();
while (1){
GPIO_WRITE (USER_LED0、GPIO_PIN_VAL_HIGH);
AppDelay (delay_value);
GPIO_WRITE (USER_LED0、GPIO_PIN_VAL_LOW);
AppDelay (delay_value);

请帮助。

谢谢。

 

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

    Ahmed、

    您无意中发现了 TI 在本示例中创建的一个大型、模糊的蠕虫 CAN。  我在 BBB AM335x 器件中也做了同样的事情。

    从包含 "GPIO_PinConfig"子结构的"GPIO_v1_config"结构开始。  该结构包含使用名为 GPIO_DEVICE_CONFIG 的宏创建的 GPIO 条目列表。  宏获取端口地址和位偏移、并从中创建一个值...

    GPIO_PinConfig gpioPinConfigs []={/*输出引脚... *
    
    GPIO_DEVICE_CONFIG ((GPIO_USER0_LED_PORT_NUM + 1)、GPIO_USER0_LED_PIN_NUM)| GPIO_CFG_OUTPUT、
    GPIO_DEVICE_CONFIG ((GPIO_User1_LED_PORT_NUM + 1)、GPIO_User1_LED_PIN_NUM)| GPIO_CFG_OUTPUT、
    //... 更多条目...
    } 

    因此,您所拥有的是( 请参阅我在片段中的注释):

    /* GPIO 驱动程序配置结构*/
    GPIO_v1_Config GPIO_v1_config ={
    gpioPinConfigs、 //上面的 PIN GPIO 配置列表
    GpioCallbackFunctions、 //回叫列表(在我的样例中全部为空)
    sizeof (gpioPinConfigs)/sizeof (GPIO_PinConfig)、//列表中有多少
    sizeof (gpioCallbackFunctions)/ sizeof (GPIO_CallbackFxn)、 //列表中有多少
    0x1U
    、};
    
    

    接下来、当您想要点亮 GPIO 时、不要认为您只需对该引脚断言 true 或 false 即可。  实际上、当您执行此操作时:

    GPIO_WRITE ((LED2)、GPIO_PIN_VAL_HIGH);//其中 LED2 = 2 (从零偏移) 

    您真正要说的是、您要将 gpioPinConfigs 列表的第三个条目设置为高电平。  

    因此、如果您要切换另一个 GPIO、而不是需要修改 gpioPinConfigs 条目、以便该列表的索引是要修改的地址/位、或在列表的末尾添加新条目。

    我建议将此作为答案...  希望这能解释一下。  并提供帮助。  

    -Scott

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

    您好、Scott。

    在我使用以下行时、没有 GPIO 切换

    GPIO_DEVICE_CONFIG ((GPIO_USER0_LED_PORT_NUM + 1)、GPIO_USER0_LED_PIN_NUM)| GPIO_CFG_OUTPUT、

    但是、当我在没有'+1'的情况下使用它时、我能够切换 GPIO7_8和 GPIO7_9 (LED USER0和 User1)。 但是、如果我尝试切换除以上两个引脚以外的任何其他 GPIO 引脚、则不起作用。 这使我相信、在其他一些地方、本示例会配置这两个引脚。

    请帮助。 连接的是'GPIO_evmAM572x_board.c'和'main_led_Blink.c'。

    谢谢。

    艾哈迈德。  

    e2e.ti.com/.../GPIO_5F00_evmAM572x_5F00_board.ce2e.ti.com/.../0602.main_5F00_led_5F00_blink.c

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

    谢谢 Scott。  

    我发现引脚和端口需要采用十六进制、因此如果引脚为15、则应为0x0E;如果为16、则应为0x0F。  

    非常感谢您的帮助。  

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

    很抱歉、我无法提供更多帮助、我不熟悉该板或器件。 在这种噩梦般的环境中、我几乎无法使 BBB 正常工作。

    有趣的是、C 编译器很难将十进制和十六进制数相加。
    我更有可能怀疑编译器/链接器/加载程序/OS 存在一些假象问题... 我一直都有这些。 一个项目不起作用,我第二天在什么都没有改变后回来,突然它起作用。 它不会让我对这些工具链或环境充满信心。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Ahmed Ghumman"]

    谢谢 Scott。  

    我发现引脚和端口需要采用十六进制、因此如果引脚为15、则应为0x0E;如果为16、则应为0x0F。  

    非常感谢您的帮助。  

    [/报价]

    此外、如果您对解决该问题感到满意、也应将后续行动标记为答案。

    -Scott