硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4289|回复: 4
收起左侧

[RL-RTX] 自己写的LEd闪烁程序有问题,

[复制链接]

5

主题

16

回帖

5

积分

新手上路

积分
5
发表于 2016-4-20 13:35:20 | 显示全部楼层 |阅读模式
#include "includes.h"

static void LEDtwinkleTask(void);
__task void Taskstart(void);
__task void Taskcreat(void);
__task void LEDtwinkle11111Task(void);

/*
**********************************************************************************************************
                                             ±äá¿
**********************************************************************************************************
*/

static uint64_t LEDtwinkleTaskStk[256/8]; //èÎÎñÕ»
static uint64_t TaskstartStk[256/8];           
static uint64_t TaskcreatStk[256/8];   
static uint64_t LEDtwinkle11111TaskStk[256/8]; /* èÎÎñÕ» */

OS_TID HandleLEDtwinkleTask = NULL;
OS_TID HandleLEDtwinkle11111Task = NULL;




/*
*********************************************************************************************************
*    oˉ êy Ãû: main
*    1|ÄüËμÃ÷: ±ê×¼c3ìDòèë¿ú¡£
*    DΠ   2Î: ÎT
*    ·μ »Ø Öμ: ÎT
*********************************************************************************************************
*/
int main (void)
{   
    /* 3õê¼»ˉíaéè */
     LED_Init();
  os_sys_init_user (Taskstart,         /* èÎÎñoˉêy           Æô¶ˉèÎÎñ*/
                      3,                        /* èÎÎñóÅÏ輶 */
                     &TaskstartStk,         /* èÎÎñÕ» */
                     sizeof(TaskstartStk)); /* èÎÎñÕ»′óD¡£¬μ¥λ×Ö½úêy */
    while(1);

}


__task void Taskstart(void)
{

Taskcreat();
    while(1)
    {        
os_dly_wait(10);
    }
}





__task void Taskcreat(void)
{

HandleLEDtwinkleTask=os_tsk_create_user(LEDtwinkleTask,              //èÎÎñoˉêy  
                                         1,                          //èÎÎñóÅÏ輶
                                          &LEDtwinkleTaskStk,          //èÎÎñÕ»
                                          sizeof(LEDtwinkleTaskStk)); //èÎÎñÕ»′óD¡£¬μ¥λ×Ö½úêy
HandleLEDtwinkle11111Task=os_tsk_create_user(LEDtwinkle11111Task,              //èÎÎñoˉêy  
                                         2,                          //èÎÎñóÅÏ輶
                                         &LEDtwinkle11111TaskStk,          //èÎÎñÕ»
                                    sizeof(LEDtwinkle11111TaskStk)); //èÎÎñÕ»′óD¡£¬μ¥λ×Ö½úêy
os_dly_wait(10);
}







/*
*********************************************************************************************************
*    oˉ êy Ãû: LEDtwinkleTask
*    1|ÄüËμÃ÷: LEDéá˸   
*    DΠ   2Î: ÎT
*    ·μ »Ø Öμ: ÎT
*   óÅ Ïè ¼¶: 1
*********************************************************************************************************
*/



__task void LEDtwinkleTask(void)
{
    while(1)
    {
     LED0=0;
         LED1=1;
       os_dly_wait(200);
            }
        }        
        





__task void LEDtwinkle11111Task(void)
{
    while(1)
    {
     LED0=1;
            LED1=0;
       os_dly_wait(100);
            }
        
        }        

#include "includes.h"

static void LEDtwinkleTask(void);
__task void Taskstart(void);
__task void Taskcreat(void);
__task void LEDtwinkle11111Task(void);

/*
**********************************************************************************************************
                                             ±äá¿
**********************************************************************************************************
*/

static uint64_t LEDtwinkleTaskStk[256/8]; //èÎÎñÕ»
static uint64_t TaskstartStk[256/8];           
static uint64_t TaskcreatStk[256/8];   
static uint64_t LEDtwinkle11111TaskStk[256/8]; /* èÎÎñÕ» */

OS_TID HandleLEDtwinkleTask = NULL;
OS_TID HandleLEDtwinkle11111Task = NULL;




/*
*********************************************************************************************************
*    oˉ êy Ãû: main
*    1|ÄüËμÃ÷: ±ê×¼c3ìDòèë¿ú¡£
*    DΠ   2Î: ÎT
*    ·μ »Ø Öμ: ÎT
*********************************************************************************************************
*/
int main (void)
{   
    /* 3õê¼»ˉíaéè */
     LED_Init();
  os_sys_init_user (Taskstart,         /* èÎÎñoˉêy           Æô¶ˉèÎÎñ*/
                      3,                        /* èÎÎñóÅÏ輶 */
                     &TaskstartStk,         /* èÎÎñÕ» */
                     sizeof(TaskstartStk)); /* èÎÎñÕ»′óD¡£¬μ¥λ×Ö½úêy */
    while(1);

}


__task void Taskstart(void)
{

Taskcreat();
    while(1)
    {        
os_dly_wait(10);
    }
}





__task void Taskcreat(void)
{

HandleLEDtwinkleTask=os_tsk_create_user(LEDtwinkleTask,              //èÎÎñoˉêy  
                                         1,                          //èÎÎñóÅÏ輶
                                          &LEDtwinkleTaskStk,          //èÎÎñÕ»
                                          sizeof(LEDtwinkleTaskStk)); //èÎÎñÕ»′óD¡£¬μ¥λ×Ö½úêy
HandleLEDtwinkle11111Task=os_tsk_create_user(LEDtwinkle11111Task,              //èÎÎñoˉêy  
                                         2,                          //èÎÎñóÅÏ輶
                                         &LEDtwinkle11111TaskStk,          //èÎÎñÕ»
                                    sizeof(LEDtwinkle11111TaskStk)); //èÎÎñÕ»′óD¡£¬μ¥λ×Ö½úêy
os_dly_wait(10);
}







/*
*********************************************************************************************************
*    oˉ êy Ãû: LEDtwinkleTask
*    1|ÄüËμÃ÷: LEDéá˸   
*    DΠ   2Î: ÎT
*    ·μ »Ø Öμ: ÎT
*   óÅ Ïè ¼¶: 1
*********************************************************************************************************
*/



__task void LEDtwinkleTask(void)
{
    while(1)
    {
     LED0=0;
         LED1=1;
       os_dly_wait(200);
            }
        }        
        





__task void LEDtwinkle11111Task(void)
{
    while(1)
    {
     LED0=1;
            LED1=0;
       os_dly_wait(100);
            }
        
        }        



















为什么Taskcreat(void)里面必须加个延时灯才闪烁啊~不加延时貌似程序跑不到里面啊~
回复

使用道具 举报

5

主题

16

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2016-4-20 13:35:49 | 显示全部楼层
貌似复制了两次sorry
回复

使用道具 举报

5

主题

16

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2016-4-20 13:40:15 | 显示全部楼层
_task void Taskcreat(void)
{

HandleLEDtwinkleTask=os_tsk_create_user(LEDtwinkleTask,              //èÎÎñoˉêy  
                                         1,                          //èÎÎñóÅÏ輶
                                          &LEDtwinkleTaskStk,          //èÎÎñÕ»
                                          sizeof(LEDtwinkleTaskStk)); //èÎÎñÕ»′óD¡£¬μ¥λ×Ö½úêy
HandleLEDtwinkle11111Task=os_tsk_create_user(LEDtwinkle11111Task,              //èÎÎñoˉêy  
                                         2,                          //èÎÎñóÅÏ輶
                                         &LEDtwinkle11111TaskStk,          //èÎÎñÕ»
                                    sizeof(LEDtwinkle11111TaskStk)); //èÎÎñÕ»′óD¡£¬μ¥λ×Ö½úêy
///os_dly_wait(10);
}
把这个延时注释掉就不亮了,加上延时就亮
回复

使用道具 举报

5

主题

578

回帖

593

积分

版主

Rank: 7Rank: 7Rank: 7

积分
593
发表于 2016-4-20 19:17:04 | 显示全部楼层
带os的程序,任务不能让它自己返回,要么死循环,要么主动删除任务,你这里虽然看上去像是任务正常了,其实还是留下了巨大隐患,那个返回的任务很可能会跑飞的
回复

使用道具 举报

5

主题

16

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2016-4-28 21:00:58 | 显示全部楼层
谢谢版主
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-13 01:18 , Processed in 0.170730 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表