Protothreads不错,以后就用它。
Protothreads不错,以后就用它。Protothreads本身只是几个宏文件,就能实现类似OS线程调度。
没有其他多余程序,可塑性强,打算在其内核基础上加上一些常用功能函数,打造自己的Protothreads。
Protothreads需要注意:
1.线程不能保存局部变量,需要保存保存的局部变量需要定义成静态变量。
2.阻塞函数只能在线程中调用,其他函数不能调用阻塞函数。
3.如果线程包含switch语句,switch语句内不能调用阻塞函数。
#include "config.h"
THR_Create(Thread1);
THR_Create(Thread2);
TMR_Create(timer1);
TMR_Create(timer2);
uint8 Thread1(Tpt *pt)
{
PT_BEGIN(pt);
while(1)
{
PORTA^=_BV(0);
PT_TIMER_DELAY(&timer1,500);
}
PT_END(pt);
}
uint8 Thread2(Tpt *pt)
{
PT_BEGIN(pt);
while(1)
{
PORTA^=_BV(1);
timer2.TimerSet(1000);
PT_WAIT_UNTIL(pt,timer2.TimerExpired());
}
PT_END(pt);
}
int main()
{
DDRA=_BV(0)|_BV(1);
PORTA=_BV(0)|_BV(1);
TCNT0 = TCNT0_INIT;
TCCR0 =T0_CLK_DIV256;
TIMSK|=_BV(0);
sei();
while(1)
{
PT(Thread1)->execute();
PT(Thread2)->execute();
}
}
半成品,未完成。
点击此处下载ourdev_209975.rar(文件大小:141K) 近期一个项目也要用到RTOS,不知道Protothreads占用ROM和RAM的情况如何? Protothreads不用给线程分配堆栈空间,RAM使用基本上和前后台系统一样。
ROM用量也就几百个字节。
要说明的是Protothreads本身并不是OS,但具有类似OS的线程调度。 Protothreads 推荐一个网站
Protothreads - Lightweight, Stackless Threads in C
http://www.sics.se/~adam/pt/ 怎么有两个上官金虹?你们是同一个人吗?古龙复活写外传啦? 都是我。
只是换个ID而已。 感觉上官金虹攻击性更强些,
上官先生比较文雅^_^ protothreads,我试下了,按这个思路写了个程序,感觉编译后生成的代码很大,或者说应该是非常大才对. 路过看看
页:
[1]