|
|||||||||||
| 技術(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 |
大俠幫忙看看,我的任務(wù)好像只運(yùn)行了一次 |
| 作者:zyking 欄目:嵌入式系統(tǒng) |
#include "config.h" #include "stdlib.h" #define TaskStkLengh 64 // 定義用戶任務(wù)0的堆棧長度 #define UART_BPS 115200 /* 定義通訊波特率 */ OS_STK TaskStk [TaskStkLengh]; // 定義用戶任務(wù)0的堆棧 OS_STK TaskStk1 [TaskStkLengh]; //OS_STK TaskStk2 [TaskStkLengh]; void Task0(void *pdata); //Task0 任務(wù)0 void Task1(void *pdata); /**************************************************************************** * 名稱:UART0_Ini() * 功能:初始化串口0。設(shè)置為8位數(shù)據(jù)位,1位停止位,無奇偶校驗(yàn),波特率為115200 * 入口參數(shù):無 * 出口參數(shù):無 ****************************************************************************/ void UART0_Ini(void) { uint16 Fdiv; U0LCR = 0x83; // DLAB = 1,可設(shè)置波特率 Fdiv = (Fpclk / 16) / UART_BPS; // 設(shè)置波特率 U0DLM = Fdiv / 256; U0DLL = Fdiv % 256; U0LCR = 0x03; } void UART0_SendByte(uint8 data) { U0THR = data; // 發(fā)送數(shù)據(jù) while( (U0LSR&0x40)==0 ); // 等待數(shù)據(jù)發(fā)送完畢 } int main (void) { OSInit (); OSTaskCreate (Task0,(void *)0, &TaskStk[TaskStkLengh - 1], 0); OSStart (); return 0; } /********************************************************************************************************* ** Task0 任務(wù)0 ********************************************************************************************************/ void Task0 (void *pdata) { UART0_Ini(); OSTaskCreate(Task1, (void *)0, &TaskStk1[TaskStkLengh-1], 10); /* 創(chuàng)建任務(wù) */ for (;;) { UART0_SendByte(0x01); OSTimeDlyHMSM(0, 0, 4, 0);///去掉這局,串口精靈只收到0x01 } } /********************************************************************************************************* ** Task1 任務(wù)1 ********************************************************************************************************/ void Task1 (void *pdata) { UART0_Ini(); for (;;) { UART0_SendByte(0x02); OSTimeDlyHMSM(0, 0, 2, 0);//去掉這局,串口精靈只收到0x02 } } 那兩句延時(shí)都加上的時(shí)候,在串口精靈上只收到一個(gè)0x01和0x02,好像沒有再運(yùn)行任務(wù),怎么回事?任務(wù)之間是怎么切換的? |
| 2樓: | >>參與討論 |
| 作者: jackymu128 于 2005/7/28 11:24:00 發(fā)布:
兩個(gè)任務(wù)用一個(gè)串口,要用信號(hào)量 |
|
| 3樓: | >>參與討論 |
| 作者: zyking 于 2005/7/28 16:13:00 發(fā)布:
多謝大俠 |
|
|
|
| 免費(fèi)注冊(cè)為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |