[LOOK] LOOK在助学板上两个任务简单例程

[复制链接]
 楼主| hotpower 发表于 2011-5-11 01:23 | 显示全部楼层 |阅读模式
LED, TE, TI, ST, ANTI
本帖最后由 hotpower 于 2011-5-23 19:05 编辑

1.LED.H
  1. #include "look_config.h"
  2. #include <look.h>
  3. #include <instantiate>

  4. // 任务类 task_led1_t 的定义
  5. class task_led1_t : public task_t {
  6. public:
  7. task_led1_t() __OPT_ATTR__; // 构造函数

  8. protected:
  9. void routine(); // 任务例程
  10. };

  11. // 任务类 task_led1_t 的构造函数
  12. __OPT_INLINE__ task_led1_t::task_led1_t()
  13. {
  14. // TODO: 在此初始化 task_led1_t 的类成员
  15. }

  16. //extern instantiate::task<task_led1_t, LOOK_STACK_SIZE> task_led1;

  17. // 任务类 task_led2_t 的定义
  18. class task_led2_t : public task_t {
  19. public:
  20. task_led2_t() __OPT_ATTR__; // 构造函数

  21. protected:
  22. void routine(); // 任务例程
  23. };

  24. // 任务类 task_led2_t 的构造函数
  25. __OPT_INLINE__ task_led2_t::task_led2_t()
  26. {
  27. // TODO: 在此初始化 task_led2_t 的类成员
  28. }

  29. extern instantiate::task<task_led1_t, LOOK_STACK_SIZE> task_led1;
  30. extern instantiate::task<task_led2_t, LOOK_STACK_SIZE> task_led2;
2.LED.CPP
  1. #include "NUC1xx.h"
  2. #include "NUC1xxM051Seriescfg.h"
  3. #include "led.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. data &= 0b111000;
  12. data <<= 1;
  13. data += data >> 3;
  14. GPIOAs.DMASK.Regs = ~0b111000;
  15. GPIOAs.DOUT.Regs = data;
  16. delay(LOOK_TICKS_PER_SEC / 2);
  17. }
  18. }
  19. // 任务类 task_led_t 的例程
  20. void task_led2_t::routine()
  21. {
  22. // TODO: 在此编写 task_led_t 例程的内容
  23. uint32_t data = 0b100;
  24. while (true) {
  25. // TODO: 在此编写 task_led_t 例程的内容
  26. GPIOAs.DMASK.Regs = ~0b100;
  27. GPIOAs.DOUT.Regs = data;
  28. data ^= 0b100;
  29. delay(LOOK_TICKS_PER_SEC / 10);
  30. }
  31. }

  32. #ifdef LOOK_SCHEDULING_PRIORITY
  33. instantiate::task<task_led1_t, LOOK_STACK_SIZE> task_led1(0);
  34. instantiate::task<task_led2_t, LOOK_STACK_SIZE> task_led2(0);
  35. #else
  36. instantiate::task<task_led1_t, LOOK_STACK_SIZE> task_led1;
  37. instantiate::task<task_led2_t, LOOK_STACK_SIZE> task_led2;
  38. #endif
3.LOOK_LED.rar

本帖子中包含更多资源

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

×
Swallow_0322 发表于 2011-5-11 07:32 | 显示全部楼层
顶!昨晚只跑一个任务,下载到学习板四个小灯刚跑起来,还没来得急看老师的程序,小区就突然断电了!
正起劲呢,就被掐了,郁闷!
只有今天晚上回去重新温故了!
 楼主| hotpower 发表于 2011-5-11 07:43 | 显示全部楼层
昨晚做了两个任务的look。
感觉不错,只要知道如何增加任务类即可。
实际只需折腾两个文件,即led.h和led.cpp
john_lee 发表于 2011-5-11 12:16 | 显示全部楼层
老哥出手了,这个要顶。
 楼主| hotpower 发表于 2011-5-11 14:50 | 显示全部楼层
惭愧,想在单位继续,文件没拷全,好像4.12也可以look
 楼主| hotpower 发表于 2011-5-14 11:42 | 显示全部楼层
本帖最后由 hotpower 于 2011-5-14 11:44 编辑

LOOK_config.h
注意第14行的:
// <o> CPU 时钟频率 <1000000-50000000:1000000>

老师生成时为:
// <o> CPU 时钟频率 <25000000-50000000:25000000>

  1. #ifndef __LOOK_CONFIG_H
  2. #define __LOOK_CONFIG_H

  3. //*** <<< Use Configuration Wizard in Context Menu >>> ***
  4. // <o> 调度算法
  5. //                <0=> 协作(Co-operative)
  6. //                <1=> 时间片轮转(Round-Robin)
  7. //                <2=> 固定优先级(Fixed Priority)
  8. //                <3=> 最早截止期优先(Earliest Deadline First)
  9. //                <4=> 多级队列(Multi-Level Queue)
  10. //                <5=> 多级队列+时间片轮转(Multi-Level Queue & Round-Robin)
  11. #define LOOK_SCHEDULING_VAL                1

  12. // <o> CPU 时钟频率 <1000000-50000000:1000000>
  13. #define F_CPU                                        12000000

  14. // <o> 系统节拍频率 <1-1000>
  15. #define LOOK_TICKS_PER_SEC                1000

  16. // <o> 采用“时间片轮转”调度方式时,默认的时间片 <1-1000>
  17. #define LOOK_DEFAULT_TIMESLICE        10

  18. // <o> 默认任务栈大小 <0-100>
  19. #define LOOK_STACK_SIZE                        40
  20. //*** <<< end of configuration section >>> ***

  21. #if LOOK_SCHEDULING_VAL == 0
  22. #define LOOK_SCHEDULING_H        <co>
  23. #elif LOOK_SCHEDULING_VAL == 1
  24. #define LOOK_SCHEDULING_H        <rr>
  25. #elif LOOK_SCHEDULING_VAL == 2
  26. #define LOOK_SCHEDULING_H        <fp>
  27. #elif LOOK_SCHEDULING_VAL == 3
  28. #define LOOK_SCHEDULING_H        <edf>
  29. #elif LOOK_SCHEDULING_VAL == 4
  30. #define LOOK_SCHEDULING_H        <mlq>
  31. #else
  32. #define LOOK_SCHEDULING_H        <mlqrr>
  33. #endif
  34. #endif
timthorpe.ly 发表于 2011-5-15 00:17 | 显示全部楼层
必须顶,看这里更觉我的渺小了
 楼主| hotpower 发表于 2011-5-16 11:01 | 显示全部楼层
刚做了一个look唤醒
将某任务用delay()阻塞,另一个任务wakeup()唤醒那个自己阻塞的任务
nayaix 发表于 2011-7-23 19:16 | 显示全部楼层
顶起.....
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:[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

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