DIY:給單片機寫個實時操作系統(tǒng)內核!
//線程2讓PC口閃爍
void Test2(void *p)
{
uint8_t i;
DDRC=0xff;
PORTC=0XFF;
SREG|=0X80 ;
while(1)
{
for(i=0;i<8;i++)PORTC=1<
}
}
//線程3讓PD口閃爍
void Test3(void *p)
{
uint8_t i;
DDRD=0XFF;
PORTD=0xff;
SREG|=0X80;
while(1)
{
for(i=0;i<8;i++)PORTD=1<
}
}
//MAIN函數(shù)
int main(void)
{
uint8_t i = 0x77;
//初始化操作系統(tǒng)
OS_Init();
//初始化線程控制塊并創(chuàng)建任務
OS_ThreadInit(&Task1,Test1Stack,STACK_SIZE,5,0);
OS_ThreadCreate(&Task1,Test1,&i);
OS_ThreadInit(&Task3,Test3Stack,STACK_SIZE,5,0);
OS_ThreadCreate(&Task3,Test3,&i);
OS_ThreadInit(&Task2,Test2Stack,STACK_SIZE,5,0);
OS_ThreadCreate(&Task2,Test2,&i);
//初始化定時器
OS_TimerInit();
//啟動內核
OS_KernelStart();
//正常的話程序永遠不會執(zhí)行到這里?。。?/div>
while(1);
}
OK,開始調試咯!打開PROTEUS連線,LOAD程序,然后運行。。。。
本文引用地址:http://2s4d.com/article/201611/323486.htm
成功同時運行三個流水燈程序!太棒了!接下來在這個內核的支持下你就可以創(chuàng)作你的應用程序了,使用內核提供的線程創(chuàng)建函數(shù)你可以創(chuàng)建N多個線程,當然了,必須在內存可接受的范圍內。利用內存分配函數(shù)你可以動態(tài)申請和釋放內存了。再也不用為DELAY()這種浪費CPU效率的作法郁悶很久了。

上面所說的所有代碼都開源
,想看的同學發(fā)郵件到我EMAIL: wfm2012@126.com 索要

下次有空再作一些應用范例來玩玩
關鍵詞:
DIY單片機實時操作系統(tǒng)內
評論