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/CC3220SF-LAUNCHXL:CC3220SF-LAUNCHXL

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/906838/ccs-cc3220sf-launchxl-cc3220sf-launchxl

器件型号:CC3220SF-LAUNCHXL
主题中讨论的其他器件:CC3220SFUNIFLASH

工具/软件:Code Composer Studio

大家好、我希望您能帮我解决以下问题。
我使用 cc3220SF
我还使用 FreeRTOS
软件版本。
UniFlash:5.2.0
Code Composer Studio 9.3.0
问题:我使用开箱即用示例,我使用 xtaskcreate()创建单独的任务,当我添加任务和.c 文件时,开箱即用示例不会运行,因为我的 LaunchPad 上的红色 LED 不闪烁,我无法进行配置。
对任务进行注释、即可解决问题。

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

    您好、Carlos、

    创建新任务时、是否将其优先级设置为高于配置任务的优先级(优先级=1)?

    如果是、请尝试为其提供低于或等于配置任务优先级的优先级。

    此致、

    Paul

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

    感谢你的帮助。
    将优先级设置为2、但仍有相同的问题。

    代码示例。

    MAIN_FreeRTOS


    extern void * mainThread (void * arg0);
    extern void *doorToggle (void *arg0);
    /*以字节为单位的栈大小*/
    #define THREADSTACKSIZE 4096

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

    pthread_t 线程;
    pthread_attr_t pAttrs;
    struct sched_param primParam;
    int retc;
    int detachState;

    /*呼叫板初始化函数*/
    Board_init();
    xTaskCreate (DoorToggle、"门开关"、1000、NULL、2、NULL);
    /*设置优先级和堆栈大小属性*/
    pthread_attr_init (&pAttrs);
    priParam.sched_priority = 1;

    detachState = pthread_create_detached;
    retc = pthread_attr_setdetachstate (&pAttrs、detachState);
    if (retc!= 0)

    /* pthread_attr_setdetachstate()失败*/
    while (1)

    门.c

    /*
    *==== mainThread ====
    *
    void *doorToggle (void *arg0)

    temporizadorPuertas[0]=10;
    Tiempos[0]= 10;
    pinesRelay[0]=10;
    pinesRelay[1]=11;
    pinesRelay[2]=12;
    puertaenPrueba[0]= 1;
    错误 Maximos[0]=10;
    // GPIO_setConfig (10、GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);
    GPIO_WRITE (10、(1));
    while (1){

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

    您好、Carlos、

    当调度线程时、较高的整数值意味着较高的优先级。 因此、在您提供的示例中、您为 DoorToggle (priority=2)提供的优先级高于 mainThread (priority=1)。 这意味着、从线程调度器的角度来看、如果 DoorToggle 可运行、它将始终优先于运行中的 mainThread。

    根据您提供的代码、它看起来像是 DoorToggle 在不产生结果的情况下运行。 这意味着 DoorToggle 一旦 开始运行、除非优先级更高的任务优先于它、否则它不会停止。 由于 DoorToggle 的优先级高于 mainThread、因此 mainThread 永远不会被调度、因此永远不会运行。

    解决此问题的快速方法是添加

    usleep(1000); 

    开关 while 循环的底部。 这将强制它在每个循环中休眠/产生1ms 的时间、从而允许调度其他任务。

    此致、

    Paul