6357|5

12

帖子

1

TA的资源

一粒金砂(初级)

楼主
 

请教KL25移植ucOSII时,一直在空闲任务打转 [复制链接]

  本帖最后由 em78447 于 2015-8-25 16:15 编辑

移植后,两个子任务运行一遍,然后就在空闲任务OS_TaskIdle里打转,请教是怎么回事

主程序部分代码是:
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 //    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毫秒
    }     
}

最新回复

大神求分享,碰到了一样的问题  详情 回复 发表于 2017-12-12 16:35
点赞 关注
 

回复
举报

12

帖子

1

TA的资源

一粒金砂(初级)

沙发
 
中断里,我添加如下:
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"))); //滴答定时器
 
 
 

回复

12

帖子

1

TA的资源

一粒金砂(初级)

板凳
 
排查出一个问题,在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);
这里通过了,但依然是在空闲任务里打转。
 
 
 

回复

12

帖子

1

TA的资源

一粒金砂(初级)

4
 
解决了,滴答,没打开

点评

我也碰到了一个和你类似的问题,我使用的单片机是MSP430F2418,你所谓的滴答没有打开是指没有打开系统时钟中断吗??? 求分享  详情 回复 发表于 2015-9-2 21:03
 
 
 

回复

103

帖子

0

TA的资源

一粒金砂(中级)

5
 
em78447 发表于 2015-8-25 17:05
解决了,滴答,没打开

我也碰到了一个和你类似的问题,我使用的单片机是MSP430F2418,你所谓的滴答没有打开是指没有打开系统时钟中断吗???
求分享
 
 
 

回复

1

帖子

0

TA的资源

一粒金砂(初级)

6
 
大神求分享,碰到了一样的问题
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条
电源解决方案和技术 | DigiKey 应用探索站
当月好物、电源技术资源、特色活动、DigiKey在线实用工具,干货多多~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表