音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

登錄 免費注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng)
驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

[求助]調(diào)試UC/OS 2遇到的奇怪問題

作者:fujiajun 欄目:嵌入式系統(tǒng)
[求助]調(diào)試UC/OS 2遇到的奇怪問題
我用2.52的源代碼移植了一下ucos-ii,在Main()函數(shù)里創(chuàng)建了Main_task,點全速運行,任務創(chuàng)建等都可以,可以從Task1切換到Taks2,可以從Task2切換到Task3,也可以從Task3切換到Main_task,但是當從Main_task再次切換到空閑任務的時候就不行了,進入OSCtxSw就出不來了,系統(tǒng)進入中止模式,何故?

優(yōu)先級:Main_task > Task1 > Task2 > Task3
void Task1_Task(void *Id)
{
     int i;
     while(1)
    {
         i++;
        OS_ENTER_CRITICAL();
        uHALr_printf(" Task1\n");
        OS_EXIT_CRITICAL();
        OSTimeDly(1000);
    }
}

void Task2_Task(void *Id)
{
      int i;
     while(1)
     {
        i++;
        OS_ENTER_CRITICAL();
        uHALr_printf("             Task2\n");
        OS_EXIT_CRITICAL();
        OSTimeDly(2000);
     }
}
void Task3_Task(void *Id)
{
   int i;
   while(1)
  {
     i++;
     OS_ENTER_CRITICAL();
     uHALr_printf("                           Task3\n");
     OS_EXIT_CRITICAL();
     OSTimeDly(3000);
   }
}
void Main_Task(void *Id)
{
ARMTargetStart();

   OSTaskCreate(Task1_Task, (void *)0, (OS_STK *)&Task1_Stack[TASK_STACK_SIZE-1],  Task1_PRIO);
   OSTaskCreate(Task2_Task, (void *)0, (OS_STK *)&Task2_Stack[TASK_STACK_SIZE-1],  Task2_PRIO);
   OSTaskCreate(Task3_Task, (void *)0, (OS_STK *)&Task3_Stack[TASK_STACK_SIZE-1],  Task3_PRIO);

while (1)
{
     OS_ENTER_CRITICAL();
     uHALr_printf("It is in main_task,notice!!\n");
     OS_EXIT_CRITICAL();
     OSTimeDly(40);
}
}

現(xiàn)象如下:
Starting target!
It is in main_task,notice!! (在Main_task運行時所打印)
OSCtxSw!  (切換到任務1時打印OSCtxSw!) ->Task1
OSCtxSw!    (切換到任務2時打印OSCtxSw!) ->Task2
OSCtxSw!    (切換到任務3時打印OSCtxSw!) ->Task3
OSCtxSw!   (切換到空閑任務時打印OSCtxSw!) ->idle task   
the task is running in idle task  (在空閑任務中運行時所打印)
the task is run   (中斷到來,進入OSTickISR)
OSIntCtxSw!      (切換到main_task時打印,我已經(jīng)設置了調(diào)用OSIntCtxSw()時打印OSIntCtxSw!)   ->main_task
It is in main_task,notice!!
OSCtxSw!  (雖然進入了OSCtxSw,但是卻切換不到空閑任務,執(zhí)行OSCtxSw最后一條指令后系統(tǒng)進入中止模式。。

請多多關照,已經(jīng)調(diào)了好幾天了,不知道錯在何處!

請多多指教!謝謝。


* - 本貼最后修改時間:2006-2-27 8:47:53 修改者:fujiajun

2樓: >>參與討論
cmswc
告訴你吧!哥們。
也不知道你會不會再來,因為你的目標板沒有初始化,在第一個任務時,必須有TargetInit();來初始化目標板,啟動中斷,時鐘節(jié)拍脈沖,
你的CODE主要是OSTimeTick();沒有執(zhí)行,也就是你的時鐘節(jié)拍沒有初始化,時鐘節(jié)拍中斷沒有發(fā)生。

參與討論
昵稱:
討論內(nèi)容:
 
 
相關帖子
進程\\線程\\任務
求ARM配套芯片!
請教:基于PCI總線的數(shù)據(jù)采集芯片
FPGA在便攜式產(chǎn)品中應用的低功耗實現(xiàn)方法《轉(zhuǎn)》
請教關于以太網(wǎng)的一個bug
免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入


Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號