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.

[参考译文] CCS:用于 MSP430的 TI-RTOS 2.20.00.06不能运行

Guru**** 2589265 points
Other Parts Discussed in Thread: MSP-EXP430F5529LP

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/965005/ccs-ti-rtos-2-20-00-06-for-msp430-doesn-t-run

Thread 中讨论的其他器件:MSP-EXP430F5529LPSYSBIOS

工具/软件:Code Composer Studio

尊敬的所有人:

我在以下链接上下载了 TI-RTOS 2.20.00.06 (2016年6月22日): http://downloads.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/tirtos/index.html

我通过 TI-Resource Explorer 将 TI-RTOS 放在 Code Composer Studio 8.3.1.00004上。

我使用的是 launchpad MSP-exp430F5529lp。

当我为该 Launchpad 导入空项目时、我很好地完成了以下操作:

导入示例项目--- >确定。

构建导入的项目--- >确定。------ >编译器 TI v 18.1.5 LTS。

调试器配置--- >确定--- >TI MSP430USB1。

调试配置--- >确定。 调试导入的工程。

当我完成调试时、我会等待 LED 闪烁、对吧?但这不会发生? 为什么? 问题出在哪?

此外、控制台上不显示文本。 为什么?它仅显示文本:

MSP430: 闪存/FRAM 的使用为17431字节。 RAM 使用量为3624字节。

为什么?

但是、代码如下:

(empty.c):


/

/*
*==== empty.c ======
*
/* XDCtools 头文件*/
#include
#include

/* BIOS 头文件*/
#include
#include

/* TI-RTOS 头文件*/
#include
//#include
//#include
//#include
//#include
//#include
//#include

/*板头文件*/
#include "Board.h"

#define TASKSTACKSIZE 512

Task_Structtask0Struct;
char task0stack[TASKSTACKSIZE];

/*
*==== 心跳 Fxn ====
*切换 Board_LED0。 Task_sleep 由 arg0确定、而 arg0是由哪个值决定的
*已针对心跳任务实例进行配置。
*
空心跳 Fxn (UARg arg0、UARg arg1)

while (1){
Task_sleep (unsigned int) arg0);
GPIO_TOGGLE (Board_LED0);

/*
*==== main ====
*
int main (空)

Task_Params taskParams;

/*呼叫板初始化函数*/
Board_initGeneral();
Board_initGPIO();

/*构造心跳任务线程*/
Task_Params_init (&taskParams);
taskParams.arg0 = 1000;
taskParams.STACKSIZE = TASKSTACKSIZE;
taskParams.stack =_task0Stack;
Task_construct(&task0Struct,(Task_FuncPtr)心跳 BeatFxn、&taskParams、NULL);

/*打开用户 LED */
GPIO_WRITE (Board_LED0、Board_LED_ON);

system_printf ("启动示例\n 系统提供程序设置为 SysMin。 "
"暂停目标以查看 ROV 中的任何 SysMin 内容。\n");---------------------------------- >此选项应该出现在控制台上,对吧?
/* SysMin 仅在您调用 flush 或 exit 时才会打印到控制台*/
system_flush();

/*启动 BIOS */
BIOS_start();

返回(0);

问题出在哪?

提前感谢

非常感谢您的回答。

谢谢

Francesco Pugliese

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

    尊敬的 Francesco:

    关于 LED 不切换、我在代码中看不到任何切换函数。 我看到这一行:

    /*打开用户 LED */
    GPIO_WRITE (Board_LED0、Board_LED_ON); 

    但这看起来不像切换功能。  

    关于未出现在控制台上的文本、是否可以在这行代码之前放置断点?

    system_printf ("启动示例\n 系统提供程序设置为 SysMin。) 

    放置断点将有助于找出代码卡在何处。  

    同时、我将下载 TI-RTOS 示例、并查看明天是否可以重现此问题。

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

    您好、Aaron、

    感谢您的快速回复。

    但是、我用于使 LED 闪烁任务:

    此函数为:

    空心跳 Fxn (UARg arg0、UARg arg1)

    while (1){
    Task_sleep (unsigned int) arg0);
    GPIO_TOGGLE (Board_LED0);

    这是 main 中的任务:

    Task_construct(&task0Struct,(Task_FuncPtr)心跳 BeatFxn、&taskParams、NULL);

    现在、我用粗体显示、以便更好地看到:

    *
    *==== 心跳 Fxn ====
    *切换 Board_LED0。 Task_sleep 由 arg0确定、而 arg0是由哪个值决定的
    *已针对心跳任务实例进行配置。
    *
    空心跳 Fxn (UARg arg0、UARg arg1)

    while (1){
    Task_sleep (unsigned int) arg0);
    GPIO_TOGGLE (Board_LED0);

    /*
    *==== main ====
    *
    int main (空)

    Task_Params taskParams;

    /*呼叫板初始化函数*/
    Board_initGeneral();
    Board_initGPIO();

    /*构造心跳任务线程*/
    Task_Params_init (&taskParams);
    taskParams.arg0 = 1000;
    taskParams.STACKSIZE = TASKSTACKSIZE;
    taskParams.stack =_task0Stack;
    Task_construct(&task0Struct,(Task_Functr)BeatFxn,&taskParams,NULL);--------------- >任务构造

    /*打开用户 LED */
    GPIO_WRITE (Board_LED0、Board_LED_ON);

    //GPIO_TOGGLE (Board_LED0);------------------ >注释、这里不是任务  

    system_printf ("启动示例\n 系统提供程序设置为 SysMin。 "
    "暂停目标以查看 ROV 中的任何 SysMin 内容。\n");---------------------------------- >此选项应该出现在控制台上,对吧?
    /* SysMin 仅在您调用 flush 或 exit 时才会打印到控制台*/
    system_flush();

    /*启动 BIOS */
    BIOS_start();---- >操作系统启动

    返回(0);

    但是、我还提出了以下几点:

    -gpio_toggle (Board_LED0); 在 main 中,而不是 在任务中,结果是 LED 不闪烁;--- 您可以在上面的代码中看到(我添加注释)。

    -中的断点:

    system_printf ("正在启动示例\n......) 程序不会停止。 为什么?

    在我看来,该程序运行得不是很好。 为什么? 问题出在哪?

    提前感谢

    非常感谢您的回答。

    谢谢

    Francesco Pugliese

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

    尊敬的 Aaron:

    我想指定一个东西。

     我忘记了一件事。 我还取出  GPIO_toggle (Board_LED0)(不在任务中)中的注释; 在主函数中、结果不起作用。

    为什么?

    打扰一下指定。 我忘记了。

    提前感谢。

    Francesco Pugliese

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

    尊敬的 Francesco:

    在 main()中,GPIO_toggle ()只是一次调用,因此您不会看到 LED 闪烁。  在 BeatFxn()函数内,它处于 while {}循环中,因此您应该会看到 LED 闪烁。