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.

[参考译文] TMS570LS0432:启动 LED 闪烁程序

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1313546/tms570ls0432-starting-led-blinking-program

器件型号:TMS570LS0432
主题中讨论的其他器件: HALCOGEN

您好、TI 社区、

我正在执行一个程序以 打开 TMS570LS0432 Launch Pad 中的 led、   我在这里找到一个 YouTube 视频 www.youtube.com/watch 我针对每个视频执行了相同的操作、但 CCS 抛出了错误、  

"....>"/source/sys_main.c、第90行:错误#148:声明与"void gioNotification (gioPORT_t *、uint32)"不兼容

我已包含 gio.h、也请查找以下代码:

/* USER CODE BEGIN (0) */
#include "het.h"
/* USER CODE END */

/* Include Files */

#include "sys_common.h"
#include "gio.h"

/* USER CODE BEGIN (1) */
/* USER CODE END */

int main(void)
{
/* USER CODE BEGIN (3) */
   // set port pins to output
   //gioPORTA.DIR |= (1U << 2);
   gioSetDirection(hetPORT1, 0xFFFFFFFF);

       while (1)
       {
           // Turn on the LED
          //gioPORTA.DSET = (1U << 2);
          gioSetBit(hetPORT1, 5, 1); // GIOA2 //on 5th pin led present
       }

/* USER CODE END */

 //   return 0;
}


/* USER CODE BEGIN (4) */

 void gioNotification(int bit)
{
    return;
}

void esmGroup1Notification(int bit)
{
    return;
}

void esmGroup2Notification(int bit)
{
    return;
}

请帮助我解决这个问题、我是税务仪器控制器的新手。

此致、

八木市

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

    您好、Tyagi、

    按如下方式修改代码并进行测试

    /* USER CODE BEGIN (0) */
    #include "het.h"
    #include "esm.h"
    /* USER CODE END */
    
    /* Include Files */
    
    #include "sys_common.h"
    #include "gio.h"
    
    /* USER CODE BEGIN (1) */
    /* USER CODE END */
    
    int main(void)
    {
    /* USER CODE BEGIN (3) */
       // set port pins to output
       //gioPORTA.DIR |= (1U << 2);
       gioSetDirection(hetPORT1, 0xFFFFFFFF);
    
           while (1)
           {
               // Turn on the LED
              //gioPORTA.DSET = (1U << 2);
              gioSetBit(hetPORT1, 5, 1); // GIOA2 //on 5th pin led present
           }
    
    /* USER CODE END */
    
     //   return 0;
    }
    
    
    /* USER CODE BEGIN (4) */
    
     void gioNotification(gioPORT_t *port, uint32 bit)
    {
        return;
    }
    
    void esmGroup1Notification(esmBASE_t *esm, uint32 channel)
    {
        return;
    }
    
    void esmGroup2Notification(esmBASE_t *esm, uint32 channel)
    {
        return;
    }
    /* USER CODE END */

    --
    谢谢。此致、
    Jagadish。

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

    Jagdish、您好!

    我尝试过此方法、但同样的错误仍然存在。

    "../source/sys_main.c", line 41: error #148: declaration is incompatible with "void esmGroup1Notification(uint32)" 
    "../source/sys_main.c", line 46: error #148: declaration is incompatible with "void esmGroup2Notification(uint32)" 

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

    您好、Tyagi、

    还需要做另外一个小的修改、此处是您尝试写入的代码

    /* USER CODE BEGIN (0) */
    #include "het.h"
    #include "esm.h"
    /* USER CODE END */
    
    /* Include Files */
    
    #include "sys_common.h"
    #include "gio.h"
    
    /* USER CODE BEGIN (1) */
    /* USER CODE END */
    
    int main(void)
    {
    /* USER CODE BEGIN (3) */
       // set port pins to output
       //gioPORTA.DIR |= (1U << 2);
       gioSetDirection(hetPORT1, 0xFFFFFFFF);
    
           while (1)
           {
               // Turn on the LED
              //gioPORTA.DSET = (1U << 2);
              gioSetBit(hetPORT1, 5, 1); // GIOA2 //on 5th pin led present
           }
    
    /* USER CODE END */
    
     //   return 0;
    }
    
    
    /* USER CODE BEGIN (4) */
    
     void gioNotification(gioPORT_t *port, uint32 bit)
    {
        return;
    }
    
    void esmGroup1Notification(uint32 channel)
    {
        return;
    }
    
    void esmGroup2Notification(uint32 channel)
    {
        return;
    }
    /* USER CODE END */

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

    Jagdish、您好!  

    我正在共享该构建的输出、但在此之前、我想确认、在行号25上、我已给出5个引脚编号并将分配的值设置为高电平1、因此这是正确的执行此操作的方法、或者我需要更改它。

    error #10234-D: unresolved symbols remain
    error #10010: errors encountered during linking; "GIO.out" not built
     
    >> Compilation failure
    makefile:150: recipe for target 'GIO.out' failed
    gmake[1]: *** [GIO.out] Error 1
    makefile:146: recipe for target 'all' failed
    gmake: *** [all] Error 2
    
    **** Build Finished ****
    
     

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

    尊敬的 Vishal:

    我看不到完整的版本、我看不到缺失的符号名称。

    我已给出5个引脚编号并分配的值高至1

    第5个引脚意味着控制器第5个引脚您有 LED 吗?

    如果可能、您能否在所连接的确切位置分享 LED 原理图。

    或者、只需提供您正在使用的电路板的详细信息并提及您要打开的 LED。 以便我打开相应的原理图并验证引脚编号。

    --
    谢谢。此致、
    Jagadish。

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

    当然、Jagdish:

    请在以下链接中查找电路板详细信息  

    https://www.ti.com/lit/ug/spnu612a/spnu612a.pdf?ts = 170540947474734&ref_url=https%253A%252F%252Fwww.google.com%252F

    LED 的位置位于5号引脚的 GIOA2上。

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

    您的基本问题是您的原型(您没有向我们展示)不同意您的函数。

    您的函数具有

    void esmGroup1Notification (esmbase_t * ESM、uint32通道)

    但您的原型被指示为:

    "void esmGroup1通知(UINT32)"

    函数中有两个参数、但原型中只有一个。

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

    Keith、您好

    IN 函数  

    void esmGroup1Notification(uint32 channel)
    {
    return;
    }

    是的、我只传递一个参数、 因为 函数定义在声明中也具有相同的参数。  

    我将共享完整的构建结果以供参考。

    **** Build of configuration Debug for project GIO ****
    
    "C:\\ti\\ccs1250\\ccs\\utils\\bin\\gmake" -k -j 8 all -O 
     
    Building target: "GIO.out"
    Invoking: Arm Linker
    "C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/bin/armcl" -mv7R4 --code_state=32 -g --diag_warning=225 --diag_wrap=off --display_error_number --enum_type=packed --abi=eabi -z -m"GIO.map" --heap_size=0x800 --stack_size=0x800 -i"C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/lib" -i"C:/ti/ccs1250/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include" --reread_libs --diag_wrap=off --display_error_number --warn_sections --xml_link_info="GIO_linkInfo.xml" --rom_model --be32 -o "GIO.out" "./source/dabort.obj" "./source/errata_SSWF021_45.obj" "./source/esm.obj" "./source/notification.obj" "./source/pinmux.obj" "./source/sys_core.obj" "./source/sys_intvecs.obj" "./source/sys_main.obj" "./source/sys_mpu.obj" "./source/sys_pcr.obj" "./source/sys_phantom.obj" "./source/sys_pmu.obj" "./source/sys_selftest.obj" "./source/sys_startup.obj" "./source/sys_vim.obj" "./source/system.obj" "../source/sys_link.cmd"  -llibc.a 
    <Linking>
     
     undefined       first referenced     
      symbol             in file          
     ---------       ----------------     
     gioSetBit       ./source/sys_main.obj
     gioSetDirection ./source/sys_main.obj
     
    error #10234-D: unresolved symbols remain
    error #10010: errors encountered during linking; "GIO.out" not built
     
    >> Compilation failure
    makefile:150: recipe for target 'GIO.out' failed
    gmake[1]: *** [GIO.out] Error 1
    makefile:146: recipe for target 'all' failed
    gmake: *** [all] Error 2
    
    **** Build Finished ****
    
     

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

    您好、Tyagi、

    实际上、您的做法是错误的。

     gioSetBit (hetPORT1、5、1);// GIOA2 //第5个引脚上 LED 存在

    上面的行不正确而是设置 GIOA2、实际上它将设置 HET 端口5引脚、即 N2HET[5]。 这是因为您要将  hetPORT1作为第一个参数传递给 gioSetBit 函数、而第二个参数是第5位、这意味着您要设置 N2HET 的第5位。

    所以、这是不正确的。 如果你真的想设置 GIOA2位、那么执行以下操作。

      

    您应该将第一个参数作为 gioPORTA 传递、第二个参数作为2传递给 gioSetBit  函数、如果这样做、则它将设置 GIOA2位。

    我可能会看到您还遇到 gioSetBit 和 gioSetDirection 函数的未定义符号错误、对吗? 这是因为您没有从 HALCoGen 生成 GIO 驱动程序、那么只会出现此错误。

    确保您在 HALCoGen 中启用了 GIO 驱动程序。

    此外、确保在启用驱动程序后生成代码。

    我为您的需求创建了一个项目。 请使用此项目作为参考、您也可以直接使用此项目来测试 GIOA2。

    e2e.ti.com/.../LED_5F00_TEST_5F00_TMS570LS0432.zip

    我构建了这个项目、但是我没有看到任何 错误:

    但我没有测试这个项目、因为我没有 TMS570LS0432板、所以请对其进行测试并告诉我结果。

    --
    谢谢。此致、
    Jagadish。

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

    Jagdish、您好!

    感谢您的详细答复

    我修改了更改并构建了项目、它没有显示任何错误、但在刷写时、LED 未亮起、我尝试使用与您共享的项目文件同样 LED 未亮起、我已在以下链接中检查了电路板的原理图:

    https://www.ti.com/lit/ug/spnu612a/spnu612a.pdf?ts = 170540947474734&ref_url=https%253A%252F%252Fwww.google.com%252F

    这 已确认 LED 位置在第5个引脚编号(GIOA2)上。

    我厌倦了添加这些线  

    void gioNotification(gioPORT_t *port, uint32 bit)
    {
        return;
    }
    
    void esmGroup1Notification(uint32 channel)
    {
        return;
    }
    
    void esmGroup2Notification(uint32 channel)
    {
        return;
    }

    但 LED 未亮起。

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

    您好、Tyagi、

    代码应该起作用。 正如我说过的、我没有用于测试它的板。

    您是否可以安排与我的会议、显示屏幕、我将为您提供指导。

    在我们组织内、我们将使用 WebEx 召开会议。

    如果您对此感到满意、请告知您方便的会议时间。

    --
    谢谢。此致、
    Jagadish。

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

    Jagdish、您好!

    请安排今天下午3点开会。

    我的电子邮件 ID 是 vishal.tyagi1@vvdntech.in 

    谢谢。此

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

    您好、Tyagi、

    我今天下午3点向您发送了会议邀请、请确认。

    --
    谢谢。此致、
    Jagadish。

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

    Jagdish、您好!

    感谢您分享邀请、我收到了邀请 。

    谢谢。此致、
    八木市

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

    问题得到解决。

    问题是、如果我们尝试使用"gioSetDirection"而不使用"gioInit"来改变方向、那么我们应该手动包括以下行以使 GIO 退出复位。

    gioREG->GCR0 = 1U;
    gioREG->ENACLR = 0xFFU;
    gioREG->LVLCLR = 0xFFU;

    如果我们没有使用这些线、那么 GIO 仍然只会处于复位模式、并且不会发生方向变化。

    --
    谢谢。此致、
    Jagadish。

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

    感谢 Jagdish 的及时支持和指导。