[新手园地] 傻瓜菜鸟LOOK第一帖——唤醒任务

[复制链接]
 楼主| weshiluwei6 发表于 2011-6-25 20:40 | 显示全部楼层 |阅读模式
LED, TI, IO, ST, ANTI
本帖最后由 weshiluwei6 于 2011-6-25 20:41 编辑

大概有半个月没玩大叔的M0了,落下了不少,这些天忙着应付老师去了,嘿嘿。
重拾LOOK,感觉很多都忘记了,一切从头开始哈。
紧跟大叔和三心大哥的脚步。



  1. #include "NUC1xx.h"
  2. #include "NUC1xxM051Seriescfg.h"
  3. #include "led4.h"
  4. // 任务类 task_led_t 的例程
  5. void task_led1_t::routine()
  6. {
  7. // TODO: 在此编写 task_led_t 例程的内容
  8. uint32_t data = ~0b1000;
  9.   while (true) {
  10.   // TODO: 在此编写 task_led_t 例程的内容
  11.   delay();//阻塞等待task_led2唤醒
  12.   data &= 0b111000;
  13.   data <<= 1;
  14.   data += data >> 3;
  15.   GPIOAs.DMASK.Regs = ~0b111000;
  16.   GPIOAs.DOUT.Regs = data;
  17. //  delay(LOOK_TICKS_PER_SEC / 2);
  18.   }
  19. }
  20. // 任务类 task_led_t 的例程
  21. void task_led2_t::routine()
  22. {
  23. // TODO: 在此编写 task_led_t 例程的内容
  24. uint32_t data = 0b100;
  25.   while (true) {
  26.   // TODO: 在此编写 task_led_t 例程的内容
  27.   GPIOAs.DMASK.Regs = ~0b100;
  28.   GPIOAs.DOUT.Regs = data;
  29.   data ^= 0b100;
  30.   delay(LOOK_TICKS_PER_SEC / 10);//阻塞100mS
  31.   task_led1.wakeup();//唤醒task_led1
  32.   }
  33. }
  34. #ifdef LOOK_SCHEDULING_PRIORITY
  35. instantiate::task<task_led1_t, LOOK_STACK_SIZE> task_led1(0);
  36. instantiate::task<task_led2_t, LOOK_STACK_SIZE> task_led2(0);
  37. #else
  38. instantiate::task<task_led1_t, LOOK_STACK_SIZE> task_led1;
  39. instantiate::task<task_led2_t, LOOK_STACK_SIZE> task_led2;
  40. #endif



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
hotpower 发表于 2011-6-25 23:20 | 显示全部楼层
好,又开始学习了。不错,放假不要玩游戏,玩物丧志的。
 楼主| weshiluwei6 发表于 2011-6-25 23:24 | 显示全部楼层
2# hotpower
晓得的 大叔
谨记大叔教诲
暑假导师有安排的
尽量少玩游戏
hotpower 发表于 2011-6-26 07:13 | 显示全部楼层
这个例程用了2个LOOK的函数:
1.delay();//延时n个节拍,定时到被唤醒继续运行。无参数或n=0表示无限延时,必须由其他任务唤醒。
2.wakeup();//唤醒其他任务被休眠的任务。

这个例程有2个任务:
1.task_led1
   LED2~LED4右移一次就休眠,必须由task_led2唤醒。
2.task_led2
   LED1每100mS即0.1S闪烁一次。并且唤醒一次task_led1任务。

注意:
在task_led1休眠,task_led2延时100mS期间,本例程的2个任务都在阻塞!!!
这时是LOOK的idle空闲任务在内部运行,用户可以覆盖即接管这个任务。
hotpower 发表于 2011-6-26 07:16 | 显示全部楼层
感觉以后应该来个网友例程笔记点评
Swallow_0322 发表于 2011-6-26 07:46 | 显示全部楼层
顶!水王 !
o(∩_∩)o 哈哈,真与250有缘分,帖子积分又拿个250大奖!
Swallow_0322 发表于 2011-6-26 07:53 | 显示全部楼层
大叔!
1.task_led1
   LED2~LED4右移一次就休眠,必须由task_led2唤醒。
应该为:直接休眠,等待唤醒,task_led2唤醒后LED2(GPA.3)~LED4(GPA.5)右移一次继续睡觉吧!
 楼主| weshiluwei6 发表于 2011-6-26 21:40 | 显示全部楼层
7# Swallow_0322


对头  三心大哥
hotpower 发表于 2011-6-27 09:33 | 显示全部楼层
水王,继续努力!
tao560532 发表于 2011-8-17 01:14 | 显示全部楼层
赞一个
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:250水王,种菜浇水,要输就输给理想,要败就败给高手。不可浮躁

7

主题

1126

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:250水王,种菜浇水,要输就输给理想,要败就败给高手。不可浮躁

7

主题

1126

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部