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.

[参考译文] TMS320F28379D:关于 CPU2运行的 GPIO

Guru**** 2611705 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/980734/tms320f28379d-regarding-gpio-run-by-cpu2

器件型号:TMS320F28379D
主题中讨论的其他器件:C2000WARE

我正在处理一个需要使用上述 MCU 的两个 CPU 的项目。 而我已配置 CPU2的引脚 GPIO 57所有者。  

它作为输出引脚正常运行,但当我更改引脚方向并检查引脚作为输入时,它不起作用。 它始终提供1。   我检查了引脚上的实际值是否为低电平。  

我还使用 CPU1进行检查、它的工作正常、输入和输出均正常。

如果不能用作 CPU2所拥有的输入、可能的原因是什么。  

我还为您提供代码以供参考。  

#define                 TEST4_GPIO_CFG               GPIO_57_GPIO57
#define                 TEST4_GPIO_PIN                57个 U

CPU1 GPIO 配置 :  

 GPIO_writePin (TEST4_GPIO_PIN、0);
 GPIO_setPinConfig (TEST4_GPIO_CFG);
 GPIO_setDirectionMode (TEST4_GPIO_PIN、GPIO_DIR_MODE_IN);
 GPIO_setPadConfig (TEST4_GPIO_PIN、GPIO_PIN_TYPE_STD);
 GPIO_setQualificationMode (TEST4_GPIO_PIN、GPIO_QUAL_异 步);
 GPIO_setMasterCore (TEST4_GPIO_PIN、GPIO_CORE_CPU2);

CPU2正在检查 GPIO 是否为高电平/低电平

for (;;)

//
//打开 LED
//

READ_57 = GPIO_READPin (57);
//
//延迟一位。
//
DEVICE_DELAY_US (50000);
//
//关闭 LED
//

//
//延迟一位。
//
DEVICE_DELAY_US (50000);

/*

其中  READ_57 是一个32位变量、始终为我提供0x01。

*

如果我错了、请告诉我正确答案。

Amosh Bhshutatt

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

    初始化完成后、CPU1会执行什么操作?

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

    CPU1进入无限 while 循环。

    while (1)

    {}

    你还期待别的吗??

    Amosh Bhshutatt

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

    不、我只是确保它不会复位/执行任何其他会使其反向的操作。

    NIMA

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

    我刚才从名为.C:\ti\c2000\C2000Ware_3_03_00_00\driverlib\f2837xd\examples\dual\led 的 driverlib 中获取了示例。  

    并添加额外的引脚 GPIO57作为 CPU2的输入。  

    当作为引脚输出时,它工作正常,但当使引脚作为输入时,不工作。 如果您愿意、只需在设置中将一个引脚作为输入、然后将文件或项目共享给我。 对于内核2。 这对我很有帮助。  

    我知道这个问题非常愚蠢、但我无法找到我出错的地方。 甚至我也在为您共享两个 CPU 的代码文件。  

    Apshutosh e2e.ti.com/.../led_5F00_ex1_5F00_blinky_5F00_cpu1.ce2e.ti.com/.../led_5F00_ex1_5F00_blinky_5F00_cpu2.c

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

    我刚才从名为.C:\ti\c2000\C2000Ware_3_03_00_00\driverlib\f2837xd\examples\dual\led 的 driverlib 中获取了示例。  

    并添加额外的引脚 GPIO57作为 CPU2的输入。  

    当作为引脚输出时,它工作正常,但当使引脚作为输入时,不工作。 如果您愿意、只需在设置中将一个引脚作为输入、然后将文件或项目共享给我。 对于内核2。 这对我很有帮助。  

    我知道这个问题非常愚蠢、但我无法找到我出错的地方。 甚至我也在为您共享两个 CPU 的代码文件。  

    Apshutosh e2e.ti.com/.../0317.led_5F00_ex1_5F00_blinky_5F00_cpu1.ce2e.ti.com/.../2664.led_5F00_ex1_5F00_blinky_5F00_cpu2.c

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

    我可以看一下。 请给我一点时间。 我目前正在从事其他项目。

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

    它工作得非常好...

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

    CPU1代码:

    //########################################################################################################################
    //
    ////文件:led_ex1_blinky_cpu1.c
    //
    //标题:LED Blinky 示例
    //
    ! \addtogroup driver_dual_example_list
    //! 

    LED Blinky 示例

    //! //! 此示例演示了如何使用 CPU1使 LED 闪烁并使另 一个//! 使用 CPU2的 LED (LED_ex1_blinky_CPU2.c)。 //! //! b 外部连接\n //! -无。 //! //! b 监视\b 变量\n //! -无。 //! // //########################################################################################################################## //$TI 发布:F2837xD 支持库 v3.12.00.00 $// $发布 日期:星期五2月12日19:03:23 IST 2021 $// 版权所有: //版权所有(C) 2013-2021 Texas Instruments Incorporated - http://www.ti.com/ // 只要 满足以下条件,就允许以源代码和二进制形式重新分发和使用//修改或不修改//: // //重新分发源代码必须保留上述版权 //声明、此条件列表和以下免责声明。 // //二进制形式的再发行必须复制上述版权 //声明、此条件列表和// 分发随附的//文档和/或其他材料中的以下免责声明。 //// 未经 事先书面许可,不能使用德州仪器公司的名称或//其贡献者的名称来认可或推广源自此软件的产品//。 //// 本软件由版权所有者和贡献者提供 //“按原样”,不 承认任何明示或暗示的保证,包括但不限于//适销性和对//特定用途适用性的暗示保证。 在任何情况下、版权 //所有者或贡献者都不对任何直接、间接、偶然、 //特殊、模范、 或相应的损害(包括但不 限于采购替代产品或服务;丧失使用、 //数据或利润; 或业务中断)、无论 出于何种原因使用 本软件(即使被告知可能会造成此类损坏)、还是出于任何原因而产生的任何//责任理论(无论是合同、严格责任还是侵权行为)//(包括疏忽或其他)。 //$ //######################################################################################################################## // //包含的文件 // #include "driverlib.h" #include "device.h" // Main // void main (void) { // //初始化设备时钟和外设 // DEVICE_INIT(); #ifdef _standalone #ifdef _FLASH // //发送引导命令以允许 CPU2应用程序开始执行 // DEVICE_BOOTCPU2 (C1C2_Brom_BOOTMODE_BOOT_FROM _FLASH); #else // //发送引导命令以允许 CPU2应用程序开始执行 // DEVICE_BOOTCPU2 (C1C2_Brom_BOOTMODE_BOOT_FROM _RAM); #endif //_FLASH #endif //_standalone // //初始化 GPIO 并将 GPIO 引脚配置为推挽输出 // DEVICE_initGPIO(); GPIO_setPadConfig (DEVICE_GPIO_PIN_LED1、GPIO_PIN_TYPE_STD); GPIO_setDirectionMode (DEVICE_GPIO_PIN_LED1、GPIO_DIR_MODE_OUT); GPIO_setPadConfig (0、GPIO_PIN_TYPE_PULLUP); GPIO_setDirectionMode (0、GPIO_DIR_MODE_IN); // //配置 CPU2以控制 LED GPIO // GPIO_setMasterCore (DEVICE_GPIO_PIN_LED1、GPIO_CORE_CPU2); GPIO_setMasterCore (0、GPIO_CORE_CPU2); // //初始化 PIE 并清除 PIE 寄存器。 禁用 CPU 中断。 // interrupt_initModule(); // //使用指向 shell 中断的指针初始化 PIE 矢量表 //服务例程(ISR)。 // interrupt_initVectorTable(); // //启用全局中断(INTM)和实时中断(DBGM) // EINT; ERTM; // //永久循环 // for (;;) { // //延迟一位。 // DEVICE_DELAY_US (50000); } } // //文件结束 //

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

    CPU2代码

    //########################################################################################################################
    //
    ////文件:led_ex1_blinky_cpu2.c
    //
    //标题:LED Blinky 示例
    //
    

    LED Blinky 示例(CPU2)

    // //此示例演示了如何使用 CPU2使 LED 闪烁。 // //\b 外部\b 连接\n //-无。 // //\b 监视\b 变量\n// -无。 // // //////////############################################################################################################################ //$TI 发布:F2837xD 支持库 v3.12.00.00 $// $发布 日期:星期五2月12日19:03:23 IST 2021 $// 版权所有: //版权所有(C) 2013-2021 Texas Instruments Incorporated - http://www.ti.com/ // 只要 满足以下条件,就允许以源代码和二进制形式重新分发和使用//修改或不修改//: // //重新分发源代码必须保留上述版权 //声明、此条件列表和以下免责声明。 // //二进制形式的再发行必须复制上述版权 //声明、此条件列表和// 分发随附的//文档和/或其他材料中的以下免责声明。 //// 未经 事先书面许可,不能使用德州仪器公司的名称或//其贡献者的名称来认可或推广源自此软件的产品//。 //// 本软件由版权所有者和贡献者提供 //“按原样”,不 承认任何明示或暗示的保证,包括但不限于//适销性和对//特定用途适用性的暗示保证。 在任何情况下、版权 //所有者或贡献者都不对任何直接、间接、偶然、 //特殊、模范、 或相应的损害(包括但不 限于采购替代产品或服务;丧失使用、 //数据或利润; 或业务中断)、无论 出于何种原因使用 本软件(即使被告知可能会造成此类损坏)、还是出于任何原因而产生的任何//责任理论(无论是合同、严格责任还是侵权行为)//(包括疏忽或其他)。 //$ //######################################################################################################################## // //包含的文件 // #include "driverlib.h" #include "device.h" // Main // void main (void) { // //初始化设备时钟和外设 // device_init(); // //初始化 GPIO 并将 GPIO 引脚配置为推挽输出 // //这由 CPU1配置 // //初始化 PIE 并清除 PIE 寄存器。 禁用 CPU 中断。 // interrupt_initModule(); // //使用指向 shell 中断的指针初始化 PIE 矢量表 //服务例程(ISR)。 // interrupt_initVectorTable(); // //启用全局中断(INTM)和实时中断(DBGM) // EINT; ERTM; // //永久循环 // for (;;) { // //打开 LED // GPIO_writePin (device_GPIO_PIN_LED1、GPIO_readPin (0)); // //延迟一位。 // DEVICE_DELAY_US (50000); } } // //文件结束 //

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

    在我的 LaunchPad 上运行这个。 LED 和 GPIO0 (输入均由 CPU2控制)。 LED 完全跟随 GPIO0输入。

    请单击所有帖子上的"验证答案"绿色按钮、查看代码和此回复。

    NIMA

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

    是的、它工作正常。 主要问题已解决。  

    但实际发生的情况是、我无法在 CCS 10中对内核2进行调试。 第一个内核因响应另一个内核而卡住。  

    当我退出调试会话并手动复位控制器时、它开始工作。  

    那么、我如何从 CCS 调试内核2现在这就是我要提出新线程或在同一个线程中引导我的问题吗?  

    奥什托什

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

    对 CPU1项目进行注释调试。 然后在内核运行时、连接到 CPU2、加载代码并运行。 我昨天在我的 Launchpad 上进行了此操作、一切都正常。 您在一次调试运行中连接并运行到两者。

    NIMA