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/CC2640R2F:通过 GPIO.h 配置引脚

Guru**** 2540720 points
Other Parts Discussed in Thread: TMP116

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/769832/rtos-cc2640r2f-configuring-pins-via-gpio-h

器件型号:CC2640R2F
主题中讨论的其他器件:TMP116

工具/软件:TI-RTOS

这里有类似的问题...

我想在引脚12上设置一个中断。 我的起点是 I2C 示例 i2ctmp116。 如何在引脚12上配置中断? 我如何读取引脚上的输入。 我似乎无法让编译器对它进行任何关注。

我已经查看了文档和一些论坛答案、但看起来它们不适用于 CCS V8。 例如、我找不到 board.c 文件。

您能否提供一个有关如何初始化 DIO12以便我可以从 i2ctmp116项目开始读取它的示例?

谢谢、

Jason

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

    有关 如何使用 GPIO 驱动程序添加引脚的更多详细信息、另请参阅 e2e.ti.com/.../711372。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的快速响应。

    是的、我使用 GPIO 中断示例将中断添加到项目中。

    我成功地在评估板上共享了正确的按钮、并希望在 DIO12上放置一个中断。 (这意味着我设置了一个中断、ISR 等、并且运行正常。 它位于错误的引脚上。 我必须扣住 LAUNCHXL 板的右侧按钮。)

    我查看了您所附的案例。 我将尝试使用其中一个 SPI 作为中断源。 但是、我想知道如何从头开始添加 DIO。

    如何将引脚12添加为单独的引脚? 给它一个名称等 我知道它与参考标签中列出的两个表有关、但我缺少有关如何添加引脚的内容。

    再次感谢、
    Jason
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为您必须使用所需的设置将 GPIOCC26XX_DIO_12添加到 GPIO_PinConfig gpioPinConfigs[]表的末尾。 然后、您必须对该引脚命名并将其添加到 CC1312R1_LAUNCHXL_GPIOName 表的末尾。 您选择的名称是当您想要使用此引脚时、必须在代码中的其他位置使用的名称。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    因此、我的表是:


    GPIO_PinConfig gpioPinConfigs[]={
    /*输入引脚*/
    GPIOCC26XX_DIO_13 | GPIO_DO_NOT _CONFIG、/*按钮0 */
    GPIOCC26XX_DIO_14 | GPIO_DO_NOT _CONFIG、/*按钮1 */

    GPIOCC26XX_DIO_15 | GPIO_DO_NOT _CONFIG、// CC2640R2_LAUNCHXL_SPI_MASTER_READY *
    GPIOCC26XX_DIO_21 | GPIO_DO_NOT _CONFIG、// CC2640R2_LAUNCHXL_SPI_SLAVE_READY *

    /*输出引脚*/
    GPIOCC26XX_DIO_07 | GPIO_DO_NOT _CONFIG、/*绿色 LED *
    GPIOCC26XX_DIO_06 | GPIO_DO_NOT _CONFIG、/*红色 LED *
    GPIOCC26XX_DIO_30 | GPIO_DO_NOT _CONFIG、// TMP116_EN *

    /* SPI 闪存 CSn *
    GPIOCC26XX_DIO_20 | GPIO_DO_NOT _CONFIG、

    /* SD CS */
    GPIOCC26XX_DIO_21 | GPIO_DO_NOT _CONFIG、

    /* Sharp Display - GPIO 配置将在 Display 文件中完成*/
    GPIOCC26XX_DIO_24 | GPIO_DO_NOT _CONFIG、/* SPI 芯片选择*
    GPIOCC26XX_DIO_22 | GPIO_DO_NOT _CONFIG、/* LCD 电源控制*
    GPIOCC26XX_DIO_23 | GPIO_DO_NOT _CONFIG、/* LCD 使能*/

    /*我的个人输出引脚12 */
    GPIOCC26XX_DIO_12 | GPIO_DO_NOT _CONFIG、

    };

    枚举是:
    typedef 枚举 CC2640R2_LAUNCHXL_GPIOName{
    CC2640R2_LAUNCHXL_GPIO_S1 = 0、
    CC2640R2_LAUNCHXL_GPIO_S2、
    CC2640R2_LAUNCHXL_SPI_MASTER_READY、
    CC2640R2_LAUNCHXL_SPI_SLAVE_READY、
    CC2640R2_LAUNCHXL_GPIO_LED_GREEN、
    CC2640R2_LAUNCHXL_GPIO_LED_RED、
    CC2640R2_LAUNCHXL_GPIO_TMP116_EN、
    CC2640R2_LAUNCHXL_GPIO_SPI_FLASH_CS、
    CC2640R2_LAUNCHXL_SDSPI_CS、
    CC2640R2_LAUNCHXL_GPIO_LCD_CS、
    CC2640R2_LAUNCHXL_GPIO_LCD_POWER、
    CC2640R2_LAUNCHXL_GPIO_LCD_ENABLE、
    CC2640R2_LAUNCHXL_GPIOCOUNT、
    CC2640R2_CUSTOM_GPIO12
    }CC2640R2_LAUNCHXL_GPIOName;

    在我的代码中、我按如下方式配置 GPIO:

    GPIO_setConfig (CC2640R2_custom_GPIO12、GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);

    然后、我尝试像这样使用它。
    GPIO_WRITE (CC2640R2_custom_GPIO12、Board_GPIO_LED_ON);

    我不明白我所犯的错误。

    当我使用 SPI 的从引脚时、如下所示:
    GPIO_setConfig (CC2640R2_LAUNCHXL_SPI_SLAVE_READY、GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
    GPIO_WRITE (CC2640R2_LAUNCHXL_SPI_SLAVE_READY、Board_GPIO_LED_ON);
    GPIO_WRITE (CC2640R2_LAUNCHXL_SPI_SLAVE_READY、GPIO_CFG_OUT_LOW);

    我可以看到输出电平发生变化。

    我的 GPIO12设置有什么问题?

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

    我使用了空示例并进行了以下更改:

    在 C2640R2_LAUNCHXL.c 中:

    GPIO_PinConfig gpioPinConfigs[]={
    /*输入引脚*/
    GPIOCC26XX_DIO_13 | GPIO_DO_NOT _CONFIG、/*按钮0 */
    GPIOCC26XX_DIO_14 | GPIO_DO_NOT _CONFIG、/*按钮1 */
    
    GPIOCC26XX_DIO_15 | GPIO_DO_NOT _CONFIG、// CC2640R2_LAUNCHXL_SPI_MASTER_READY *
    GPIOCC26XX_DIO_21 | GPIO_DO_NOT _CONFIG、// CC2640R2_LAUNCHXL_SPI_SLAVE_READY *
    
    /*输出引脚*/
    GPIOCC26XX_DIO_07 | GPIO_DO_NOT _CONFIG、/*绿色 LED *
    GPIOCC26XX_DIO_06 | GPIO_DO_NOT _CONFIG、/*红色 LED *
    
    /* SPI 闪存 CSn *
    GPIOCC26XX_DIO_20 | GPIO_DO_NOT _CONFIG、
    
    /* SD CS */
    GPIOCC26XX_DIO_21 | GPIO_DO_NOT _CONFIG、
    
    /* Sharp Display - GPIO 配置将在 Display 文件中完成*/
    GPIOCC26XX_DIO_24 | GPIO_DO_NOT _CONFIG、/* SPI 芯片选择*
    GPIOCC26XX_DIO_22 | GPIO_DO_NOT _CONFIG、/* LCD 电源控制*
    GPIOCC26XX_DIO_23 | GPIO_DO_NOT _CONFIG、/* LCD 使能*/
    GPIOCC26XX_DIO_12 | GPIO_DO_NOT _CONFIG、/* Button 0 */
    
    }; 

    在 CC2640R2_LAUNCHXL.h 中:

    typedef 枚举 CC2640R2_LAUNCHXL_GPIOName{
    CC2640R2_LAUNCHXL_GPIO_S1 = 0、
    CC2640R2_LAUNCHXL_GPIO_S2、
    CC2640R2_LAUNCHXL_SPI_MASTER_READY、
    CC2640R2_LAUNCHXL_SPI_SLAVE_READY、
    CC2640R2_LAUNCHXL_GPIO_LED_GREEN、
    CC2640R2_LAUNCHXL_GPIO_LED_RED、
    CC2640R2_LAUNCHXL_GPIO_SPI_FLASH_CS、
    CC2640R2_LAUNCHXL_SDSPI_CS、
    CC2640R2_LAUNCHXL_GPIO_LCD_CS、
    CC2640R2_LAUNCHXL_GPIO_LCD_POWER、
    CC2640R2_LAUNCHXL_GPIO_LCD_ENABLE、
    CC2640R2_LAUNCHXL_GPIO_12、
    CC2640R2_LAUNCHXL_GPIOCOUNT
    }CC2640R2_LAUNCHXL_GPIOName; 

    在 empty.c 中:

    void * mainThread (void * arg0)
    {
    /* 1秒延迟*/
    uint32_t 时间= 1;
    
    /*调用驱动程序初始化函数*/
    GPIO_init();
    // I2C_init ();
    // SDSPI_init ();
    // spi_init();
    // uart_init();
    // Watchdog_init();
    
    /*配置 LED 引脚*/
    GPIO_setConfig (CC2640R2_LAUNCHXL_GPIO_12、GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
    
    /*打开用户 LED */
    GPIO_WRITE (CC2640R2_LAUNCHXL_GPIO_12、Board_GPIO_LED_ON);
    
    while (1){
    睡眠(时间);
    GPIO_TOGGLE (CC2640R2_LAUNCHXL_GPIO_12);
    }
    } 

    并且引脚正在改变状态(由逻辑分析仪观察)  

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

    再次感谢。

    这对我也很有用。 不知道为什么我这么困惑。  

    Jason