|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
uC/OS-II移植到51時(shí)遇到的一個(gè)問題 |
| 作者:Herowa 欄目:嵌入式系統(tǒng) |
任務(wù)代碼如下: void TestTask4(void *os_pdata) reentrant { INT16U Ver; os_pdata = os_pdata; Ver=OSVersion(); while(1) { LED=0; OSTimeDly(OS_TICKS_PER_SEC/2); LED=1; printf ("TASK-4\n"); OSTimeDly(OS_TICKS_PER_SEC/2); printf ("%d\n",Ver); } } 這樣任務(wù)不能正常運(yùn)行(系統(tǒng)崩潰。 但是,如果將Ver定義成全局變量或者在定義局部變量Ver的同時(shí)再多定義一個(gè)其他變量,例如:INT16U Ver2,Ver; (Ver2在任務(wù)中不使用) 這兩種情況下,任務(wù)都可以正常運(yùn)行。 請(qǐng)問大蝦們這是什么原因?qū)е拢?br> |
| 2樓: | >>參與討論 |
| 作者: Herowa 于 2005/7/5 9:45:00 發(fā)布:
出錯(cuò)的提示 上面的問題在Keil中仿真時(shí)的錯(cuò)誤提示為:error 65: access violation at C:0xD080 : no 'execute/read' permission |
|
| 3樓: | >>參與討論 |
| 作者: Herowa 于 2005/7/5 9:57:00 發(fā)布:
加了一個(gè)延時(shí)后,問題也解決 程序如下: void TestTask4(void *os_pdata) reentrant { INT16U Ver; os_pdata = os_pdata; Ver=OSVersion(); OSTimeDly(OS_TICKS_PER_SEC/2); //加了一個(gè)延時(shí) while(1) { LED=0; OSTimeDly(OS_TICKS_PER_SEC/2); LED=1; printf ("TASK-4\n"); OSTimeDly(OS_TICKS_PER_SEC/2); printf ("%d\n",Ver); } } 現(xiàn)在越來越搞不懂了,大蝦快指點(diǎn)迷津。 |
|
| 4樓: | >>參與討論 |
| 作者: 阿南 于 2005/7/5 10:56:00 發(fā)布:
可能是任務(wù)指針不夠用 |
|
| 5樓: | >>參與討論 |
| 作者: Herowa 于 2005/7/5 11:09:00 發(fā)布:
To 阿南 任務(wù)指針不夠用是怎么看出來的,怎么將這個(gè)問題解決呢? |
|
| 6樓: | >>參與討論 |
| 作者: Herowa 于 2005/7/5 14:58:00 發(fā)布:
又發(fā)現(xiàn) 將原來的延時(shí)語句OSTimeDly(OS_TICKS_PER_SEC/2); 改成OSTimeDly(0); 即不延時(shí),結(jié)果還是可以很好的運(yùn)行 怪了??? |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |