[LOOK] LOOK菜鸟yield应用例程

[复制链接]
 楼主| hotpower 发表于 2011-5-25 18:56 | 显示全部楼层 |阅读模式
点击下载LOOK_YIELD:



1.LOOK_YIELD.H

  1. #ifndef __LOOK_YIELD_H
  2. #define __LOOK_YIELD_H
  3. #include "look_config.h"
  4. #include <look.h>
  5. #include <instantiate>
  6. // 任务类 task_LOOK_YIELD1_t 的定义
  7. class task_LOOK_YIELD1_t : public task_t {
  8. public:
  9. task_LOOK_YIELD1_t() __OPT_ATTR__; // 构造函数

  10. protected:
  11. void routine();  // 任务例程
  12. private:
  13. };
  14. // 任务类 LOOK_YIELD1 的构造函数
  15. __OPT_INLINE__ task_LOOK_YIELD1_t::task_LOOK_YIELD1_t()
  16. {
  17. // TODO: 在此初始化 task_LOOK_YIELD1_t 的类成员
  18. }
  19. // 任务类 task_LOOK_YIELD1_t 的定义
  20. class task_LOOK_YIELD_t : public task_t {
  21. public:
  22. task_LOOK_YIELD_t() __OPT_ATTR__; // 构造函数
  23. protected:
  24. void routine();  // 任务例程
  25. private:
  26. };
  27. // 任务类 LOOK_YIELD 的构造函数
  28. __OPT_INLINE__ task_LOOK_YIELD_t::task_LOOK_YIELD_t()
  29. {
  30. // TODO: 在此初始化 task_LOOK_YIELD_t 的类成员
  31. }
  32. // 任务类 task_LOOK_YIELD2_t 的定义
  33. class task_LOOK_YIELD2_t : public task_t {
  34. public:
  35. task_LOOK_YIELD2_t() __OPT_ATTR__; // 构造函数

  36. protected:
  37. void routine();  // 任务例程
  38. private:
  39. };
  40. // 任务类 LOOK_YIELD2 的构造函数
  41. __OPT_INLINE__ task_LOOK_YIELD2_t::task_LOOK_YIELD2_t()
  42. {
  43. // TODO: 在此初始化 task_LOOK_YIELD2_t 的类成员
  44. }
  45. extern instantiate::task<task_LOOK_YIELD1_t, LOOK_STACK_SIZE> task_LOOK_YIELD1;
  46. extern instantiate::task<task_LOOK_YIELD2_t, LOOK_STACK_SIZE> task_LOOK_YIELD2;
  47. #endif // __LOOK_YIELD_H

2.LOOK_YIELD.CPP

  1. #include "LOOK_YIELD.h"
  2. #include "NUC1xx.h"
  3. #include "NUC1xxM051Seriescfg.h"
  4. // 任务类 task_LOOK_YIELD1_t 的例程
  5. void task_LOOK_YIELD1_t::routine()
  6. {
  7. // TODO: 在此编写 task_LOOK_YIELD1_t 例程的内容
  8. while (true) {
  9.   // TODO: 在此编写 task_LOOK_YIELD1_t 例程的内容
  10.   GPIOAs.DMASK.Regs = ~0b100000;//只控制GPA5即LED4
  11.   for (unsigned int i = 0; i < 0x88888; i++) asm volatile("nop");//独占CPU
  12.   GPIOAs.DOUT.Bits.Pin5 ^= 1;//LED4闪烁
  13.   scheduler.yield();//让出CPU资源,任务主动切换交出控制权给task_LOOK_YIELD2_t
  14. }
  15. }
  16. // 任务类 task_LOOK_YIELD2_t 的例程
  17. void task_LOOK_YIELD2_t::routine()
  18. {
  19. // TODO: 在此编写 task_LOOK_YIELD2_t 例程的内容
  20. unsigned int count = 0;
  21. while (true) {
  22.   // TODO: 在此编写 task_LOOK_YIELD2_t 例程的内容
  23.   for (unsigned int i = 0; i < 3; i++) {//LED1~LED3组成跑马灯
  24.    GPIOAs.DMASK.Regs = ~0b011100;//只控制GPA2~GPA4即LED1~LED3
  25.    for (unsigned int j = 0; j < 0x48888; j++) asm volatile("nop");//独占CPU
  26.    GPIOAs.DOUT.Regs = (count << 2) ^ 0b011100;
  27.    count++;
  28.   }
  29.   scheduler.yield();//让出CPU资源,任务主动切换交出控制权给task_LOOK_YIELD1_t
  30. }
  31. }
  32. #ifdef LOOK_SCHEDULING_PRIORITY
  33. instantiate::task<task_LOOK_YIELD1_t, LOOK_STACK_SIZE> task_LOOK_YIELD1(0);
  34. instantiate::task<task_LOOK_YIELD2_t, LOOK_STACK_SIZE> task_LOOK_YIELD2(0);
  35. #else
  36. instantiate::task<task_LOOK_YIELD1_t, LOOK_STACK_SIZE> task_LOOK_YIELD1;
  37. instantiate::task<task_LOOK_YIELD2_t, LOOK_STACK_SIZE> task_LOOK_YIELD2;
  38. #endif

本帖子中包含更多资源

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

×
weshiluwei6 发表于 2011-5-25 20:39 | 显示全部楼层
大叔学习速度惊人啊
wilsonyue 发表于 2011-5-25 20:56 | 显示全部楼层
好厉害啊
好厉害啊好厉害啊好厉害啊好厉害啊好厉害啊好厉害啊好厉害啊
 楼主| hotpower 发表于 2011-5-25 22:14 | 显示全部楼层
只说不练是不会厉害的,晕!!!
murex 发表于 2011-5-27 08:35 | 显示全部楼层
哈哈,顶加学
 楼主| hotpower 发表于 2011-5-27 09:05 | 显示全部楼层
在rtx上此操作是os_tsk_pass()
weshiluwei6 发表于 2011-5-28 20:40 | 显示全部楼层
yield 是什么都不知道 大叔应该多讲讲哈;P
 楼主| hotpower 发表于 2011-5-28 21:14 | 显示全部楼层
你认为是暂时放弃控制权,让其他任务工作
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:[url=http://www.21ic.com/tools/HotWC3_V1.23.html]

1460

主题

21619

帖子

508

粉丝
快速回复 在线客服 返回列表 返回顶部
个人签名:[url=http://www.21ic.com/tools/HotWC3_V1.23.html]

1460

主题

21619

帖子

508

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