查看: 3826|回复: 5

[求助] ucOSII在OS_TaskIdle里打转

[复制链接]
  • TA的每日心情

    2018-3-21 13:20
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    16

    主题

    124

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    249
    最后登录
    2023-10-24
    发表于 2015-8-25 15:56:17 | 显示全部楼层 |阅读模式
    本帖最后由 zico1998 于 2015-8-25 17:08 编辑

    我从网上找到的KL25/26的一个例子移植后,两个子任务运行一遍,然后就在空闲任务OS_TaskIdle里打转,请教是怎么回事。或者有哪位高手给份KL25的ucOSII的例子对照下。感谢!

    主程序部分代码是:
    int main(void)
    {
        OSInit();
        OSTaskCreate(task0,(void *)0,(OS_STK*)&task0_stk[64-1],0);   
        OSStart();   
        return 0;
    }

    static void task0(void *pvalue)
    {
        pvalue=pvalue;
        irq_off();       //关总中断
        main_init();     //目标板初始化
    #if(0<OS_TASK_STAT_EN)
    //    OSStatInit();   //任务统计初始化,不加,否则延迟处有问题
    #endif   
        event_create();  //事件的建立,建立子任务的响应事件
        task_create();   //系统多任务的建立(不用了,为空)
        irq_enable(PIT_NUM);
        irq_enable(UART0_NUM);
        irq_enable(UART1_NUM);
        irq_on();    //开总中断      
        while(1)
        {
        //参数:(1)建立任务(2)数据指针、传递给任务的参数(3)指向任务堆栈顶的指针(4)任务优先级
            OSTaskCreate(task1,(void *)0,(OS_STK*)&task1_stk[63],2);  
            OSTaskCreate(task2,(void *)0,(OS_STK*)&task2_stk[63],3);   
            OSTaskSuspend(OS_PRIO_SELF);
        }
    }

    static void task1(void *pvalue)
    {
        pvalue=pvalue;  //为避免出现警告而用,函数里没用到,没实际意义
        while(1)
        {  
            GPIOE_PTOR |= (1<<3);    //PTE3翻转
            OSTimeDlyHMSM(0,0,0,500); //延迟0小时0分0秒500毫秒
        }     
    }
    static void task2(void *pvalue)
    {
        pvalue=pvalue;
        while(1)
        {
         GPIOE_PTOR |= (1<<4);    //PTE4翻转
            OSTimeDlyHMSM(0,0,0,200); //延迟0小时0分0秒200毫秒
        }     
    }

    --------
    已经解决,没设置好滴答

    我知道答案 目前已有5人回答

    ucosii_KL25.rar

    1.1 MB, 下载次数: 2, 下载积分: 威望 1

    我的练习

    评分

    参与人数 1NXP金币 +15 收起 理由
    小七 + 15 打赏!

    查看全部评分

    我今天最想说
    回复

    使用道具 举报

  • TA的每日心情

    2018-3-21 13:20
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    16

    主题

    124

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    249
    最后登录
    2023-10-24
     楼主| 发表于 2015-8-25 15:57:41 | 显示全部楼层
    中断里,我添加如下:
    extern uint32_t __vector_table[];
    extern unsigned long _estack;
    extern void __thumb_startup(void);
    ...
    extern void OS_CPU_PendSVHandler();
    extern void OS_CPU_SysTickHandler();
    屏蔽如下:
    //void PendSV_Handler() __attribute__ ((weak, alias("PENDSV_ISR")));   //软中断
    //void SysTick_Handler() __attribute__ ((weak, alias("SYSTICK_ISR"))); //滴答定时器


    os_cfg.h里我设置
    #define OS_MAX_TASKS 10 //最大10个任务
    我今天最想说
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2018-3-21 13:20
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    16

    主题

    124

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    249
    最后登录
    2023-10-24
     楼主| 发表于 2015-8-25 16:36:30 | 显示全部楼层
    本帖最后由 zico1998 于 2015-8-25 16:40 编辑

    排查出一个问题,在OSTimeDlyHMSM函数里
       ticks = ((INT32U)hours * 3600uL + (INT32U)minutes * 60uL + (INT32U)seconds) * OS_TICKS_PER_SEC
              + OS_TICKS_PER_SEC * ((INT32U)ms + 500uL / OS_TICKS_PER_SEC) / 1000uL;
    这个涉及到浮点了。我给OS_TICKS_PER_SEC定义1000u或200u都不行。
    我直接改为ticks=(INT32U)(ms);
    这里通过了,但依然是在空闲任务里打转。
    我今天最想说
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2018-3-21 13:20
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    16

    主题

    124

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    249
    最后登录
    2023-10-24
     楼主| 发表于 2015-8-25 17:04:40 | 显示全部楼层
    解决了,滴答没打开
    我今天最想说
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-23 21:04
  • 签到天数: 103 天

    连续签到: 1 天

    [LV.6]常住居民II

    228

    主题

    5379

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    16715
    最后登录
    1970-1-1
    发表于 2015-8-26 00:01:32 | 显示全部楼层
    自己解决了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2015-8-26 09:48:45 | 显示全部楼层
    感谢楼主的解决方法分享~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-28 11:53 , Processed in 0.099599 second(s), 27 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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