[Cortex-M0技术交流] 偷学菜农LOOK例子(IAR)

[复制链接]
 楼主| 发表于 2011-5-28 12:43 | 显示全部楼层 |阅读模式
IAR, LED, pi, gp, IO
菜农代码:

  1. // 任务类 task_led_t 的例程
  2. void task_led1_t::routine()
  3. {
  4. // TODO: 在此编写 task_led_t 例程的内容
  5. uint32_t data = ~0b1000;
  6. while (true) {
  7. // TODO: 在此编写 task_led_t 例程的内容
  8. data &= 0b111000;
  9. data <<= 1;
  10. data += data >> 3;
  11. GPIOAs.DMASK.Regs = ~0b111000;
  12. GPIOAs.DOUT.Regs = data;
  13. delay(LOOK_TICKS_PER_SEC / 2);
  14. }
  15. }
  16. // 任务类 task_led_t 的例程
  17. void task_led2_t::routine()
  18. {
  19. // TODO: 在此编写 task_led_t 例程的内容
  20. uint32_t data = 0b100;
  21. while (true) {
  22. // TODO: 在此编写 task_led_t 例程的内容
  23. GPIOAs.DMASK.Regs = ~0b100;
  24. GPIOAs.DOUT.Regs = data;
  25. data ^= 0b100;
  26. delay(LOOK_TICKS_PER_SEC / 10);
  27. }
  28. }


#include "proj_incs.h"

TSK_Implement(0)    //任务0
{
    __enable_interrupt();  
   
    uint32 data=~_BV(3);
            
    while(1)
   {   
          data &= _BV(3)|_BV(4)|_BV(5);
          data <<= 1;
          data += data >> 3;
          GPIOA->DMASK= ~(_BV(3)|_BV(4)|_BV(5));
          GPIOA->DOUT=data;
      
          TSK_Delay(HS_TICKS_PER_SEC/2);      
   }
}

TSK_Implement(1)    //任务1
{
    __enable_interrupt();  
   
    uint32 data=_BV(2);
            
    while(1)
   {   
          GPIOA->DMASK= ~_BV(2);
          GPIOA->DOUT=data;
          data^=_BV(2);
         
          TSK_Delay(HS_TICKS_PER_SEC/10);      
   }
}

int main()
{  
    __disable_interrupt();                   //任务开始调度前,要关中断
   // while(1);
   
     LED_1.MakeOutput();     //LED_1设置为输出
     LED_2.MakeOutput();     //LED_2设置为输出
     LED_3.MakeOutput();     //LED_3设置为输出
     LED_4.MakeOutput();     //LED_4设置为输出
   
     HS_HeapInit();               //初始化堆   
     SysTick_Config(SystemCoreClock/HS_TICKS_PER_SEC);           //系统节拍初始化
              
     TSK_Init(0,0,200);      //任务0,优先级0,堆栈200
     TSK_Init(1,0,200);      //任务1,优先级0,堆栈200
     
     TSK_Start();          //任务开始调度(开始调度由空闲任务主函数切换到用户任务)

     __enable_interrupt();   //空闲任务主函数开中断,空闲任务主函数也有自己单独的总中断标志位
        
     while(1)              //任务空闲时,运行这里
     {                    
          //SleepIdle();       //空闲休眠   
     }
}

发表于 2011-5-28 13:03 | 显示全部楼层
原来是你自己的多线程
发表于 2011-5-30 11:25 | 显示全部楼层
不是C++啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:该死的ST,还不赶快出STM8L小FLASH片子

0

主题

262

帖子

1

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