2813|0

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求解答,ucos 任务不能再 节拍中断下切换? [复制链接]

 刚学习 ucos, 请各位大侠解答啊, 感谢
main  函数 如下, 将延时 改成 OSTimeDlyHMSM 后 两个灯都闪了,用 延时vDelayNms的话只有 LED1闪,pp2任务都没运行LED2点不亮, 中断函数不能切换啊?

void vDelayNms(WORD16 i)
{
    WORD32 k = 11000 * i / 3;
    while (k--);
}

void pp1(void * pdata)
{
        pdata = pdata;
GPIO_OUT(LED1,LOW);    //先点亮
        while(1)
        {
                GPIO_BitToggle(LED1);
                   vDelayNms(333);
                   //OSTimeDlyHMSM(0, 0, 0, 333);
        }
}
void pp2(void * pdata)
{
        pdata = pdata;
GPIO_OUT(LED2,LOW);     //先点亮
        while(1)
        {
                GPIO_BitToggle(LED2);
                   vDelayNms(444);
                   //OSTimeDlyHMSM(0, 0, 0, 444);
        }
}

/*
    节拍中断 入口函数
*/
void OSTimeTickISR(void)
{
   RTC->ILR = 0x3;
   //OSIntExit();
   OSTimeTick();
   //OS_Sched();
   //UART0->RBR_THR_DLL='a';
}

void TaskStart(void * pdata)
{
pdata = pdata;
RTC_vInit();                                             /* 初始化系统时钟节拍,10ms */

  OSTaskCreate(pp1,(void *)0, &tpp1[TASK_STK_SIZE-1], 1);
  OSTaskCreate(pp2,(void *)0, &tpp2[TASK_STK_SIZE1-1], 2);

  OSTaskDel(OS_PRIO_SELF);
  
}

int main(void)
{
  OSInit();
  OSTaskCreate(TaskStart,(void *)0, &TaskStartStk[TASK_START_STK_SIZE-1], 5);
  OSStart();
}

[ 本帖最后由 cldr 于 2013-5-1 11:56 编辑 ]
点赞 关注
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
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
快速回复 返回顶部 返回列表