新闻中心

EEPW首页>嵌入式系统>设计应用> DIY:给单片机写个实时操作系统内核!

DIY:给单片机写个实时操作系统内核!

作者: 时间:2016-11-29 来源:网络 收藏

//线程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函数
int main(void)
{
uint8_t i = 0x77;
//初始化操作系统
OS_Init();

//初始化线程控制块并创建任务
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();

//正常的话程序永远不会执行到这里!!!
while(1);
}


OK,开始调试咯!打开PROTEUS连线,LOAD程序,然后运行。。。。

本文引用地址: //m.amcfsurvey.com/article/201611/323486.htm

成功同时运行三个流水灯程序!太棒了!接下来在这个内核的支持下你就可以创作你的应用程序了,使用内核提供的线程创建函数你可以创建N多个线程,当然了,必须在内存可接受的范围内。利用内存分配函数你可以动态申请和释放内存了。再也不用为DELAY()这种浪费CPU效率的作法郁闷很久了。
上面所说的所有代码都开源 ,想看的同学发邮件到我EMAIL: wfm2012@126.com 索要
下次有空再作一些应用范例来玩玩

上一页 1 2 3 4 下一页

评论


技术专区

关闭