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.
工具/软件: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