搜索
bottom↓
回复: 9

protothreads有啥优点?这样使用有啥意义?

[复制链接]

出0入0汤圆

发表于 2010-1-14 11:24:31 | 显示全部楼层 |阅读模式
刚刚看protothreads,各位帮忙说说,这个东西到底有啥优点啊?


我写了个程序,不知道这样用有没有意义?
程序功能:每隔1秒亮灭一次D口LED
          每隔10秒亮灭一次b口LED


#include"pt.h"
#include"avr/io.h"
#include"util/delay.h"



static int protothread1_flag, protothread2_flag,counter,counter1;


static int
protothread1(struct pt *pt)
{

  PT_BEGIN(pt);

  
  while(1) {
   
    PT_WAIT_UNTIL(pt, counter==1);
    PORTD=~PORTD;
    counter=0;

   
  }

  
  PT_END(pt);
}





static int
protothread2(struct pt *pt)
{
  PT_BEGIN(pt);

  while(1) {
   
    protothread2_flag = 1;

   
    PT_WAIT_UNTIL(pt, counter1==10);
    counter1=0;
    PORTB = ~PORTB;
   
    protothread1_flag = 0;

   
  }
  PT_END(pt);
}





static struct pt pt1, pt2;
int
main(void)
{

  DDRD =0XFF;
  DDRB =0XFF;
  PORTD=0XFF;
  PORTB=0XFF;
  /* Initialize the protothread state variables with PT_INIT(). */
  PT_INIT(&pt1);
  PT_INIT(&pt2);
  
  /*
   * Then we schedule the two protothreads by repeatedly calling their
   * protothread functions and passing a pointer to the protothread
   * state variables as arguments.
   */
  while(1) {
    protothread1(&pt1);
    protothread2(&pt2);
    _delay_ms(1000);
        counter++;
        counter1++;
  }
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入89汤圆

发表于 2010-1-14 11:34:51 | 显示全部楼层
个人很喜欢这样写法,一直感叹,老外怎么想出来的。这个是简单而有效的方法

出0入0汤圆

发表于 2010-1-14 11:37:02 | 显示全部楼层
楼主写过eeprom的读写程序吧,写延时你用什么?

出0入0汤圆

 楼主| 发表于 2010-1-14 11:56:50 | 显示全部楼层
回复【2楼】mysde
-----------------------------------------------------------------------

写过,那时候用的是pic单片机。延时用的是gcc自带的库函数。

出0入0汤圆

发表于 2010-1-14 12:00:13 | 显示全部楼层
在使用rtos的时候,不使用延时函数,应该挂起去执行其它任务,到时间再回来执行原来的任务。

出0入0汤圆

 楼主| 发表于 2010-1-14 12:05:34 | 显示全部楼层
回复【4楼】mysde
-----------------------------------------------------------------------

我想也对啊,不然加上延时就失去使用它的意义了。
其实我觉得protothreads的意义就是使当前没有必要的任务暂时不要运行,等时机到了的时候再去运行。
好像是这个样子,有时候我们不用它的时候也用过类似的方法,可能是pt做的比我们更合理,对吧?

出0入0汤圆

发表于 2010-1-14 12:08:16 | 显示全部楼层
是的,没用这个之前我用switch语句散转。最好还是使用ucos。
最近公司要开发低成本仪表才想起用这个。

出0入0汤圆

 楼主| 发表于 2010-1-14 12:11:55 | 显示全部楼层
回复【6楼】mysde
-----------------------------------------------------------------------

我用过uC/OS-II,挺好玩的。不过据说很耗资源。我也有点感触,很消耗flash,呵呵

现在你在用protothreads呢?

出0入0汤圆

发表于 2010-1-14 12:15:49 | 显示全部楼层
protothread刚开始用,正到处找例程做实验呢,

用ucos时消耗ram很大,我的芯片只有4Kram,rom无所谓,我的64K

出0入0汤圆

发表于 2010-11-26 00:02:06 | 显示全部楼层
回复【8楼】mysde  
-----------------------------------------------------------------------

我刚接触protothread,你们有什么好的资料和例程,可以教下我吗?
你用的是STC的芯片吧,我也正在用。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 15:17

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表