搜索
bottom↓
回复: 1

VoidSched

[复制链接]

出0入0汤圆

发表于 2010-2-28 09:29:19 | 显示全部楼层 |阅读模式
点击此处下载 ourdev_535653.rar(文件大小:827K) (原文件名:VoidSched.rar)

20090228:
由原来的VoidTask改名VoidSched。
AVRGCC部分暂停维护,编译器统一IAR。


#include "config.h"

TSK_Create(A,64,32);
TSK_Create(B,64,32);
TSK_Create(C,64,32);


#define LED_A   IO_BIT_ALIAS(&PORTB,0)   //LED_A,IO口位域别名
#define LED_B   IO_BIT_ALIAS(&PORTB,1)   //LED_B,IO口位域别名
#define LED_C   IO_BIT_ALIAS(&PORTB,2)   //LED_C,IO口位域别名

TSK_Implement(A)
{
    volatile float f1=1.0;        //测试浮点运算
  
    sei();                        //任务开始开中断,每个任务都有自己单独的总中断标志位,任务开始执行时,总中断标志位是关闭的
    while(1)
   {
       f1+=0.1;                        //测试浮点运算
     
       LED_A=1;                        //LED_A写1  
       TSK_Delay(VT_TICKS_PER_SEC/2);  //延时1/2S
      
       LED_A=0;                        //LED_A写0
       TSK_Delay(VT_TICKS_PER_SEC-VT_TICKS_PER_SEC/2);  //延时1/2S
   }
}

TSK_Implement(B)
{
    volatile float f2=1.0;     //测试浮点运算
  
    sei();                     //任务开始开中断,每个任务都有自己单独的总中断标志位
    while(1)
   {  
       f2+=0.1;                        //测试浮点运算
           
       LED_B=1;                        //LED_B写1  
       TSK_Delay(VT_TICKS_PER_SEC/3);  //延时1/3S
      
       LED_B=0;                        //LED_B写0
       TSK_Delay(VT_TICKS_PER_SEC-VT_TICKS_PER_SEC/3);  //延时2/3S
   }
}

TSK_Implement(C)
{
    volatile float f3=1.0;     //测试浮点运算
  
    sei();                     //任务开始开中断,每个任务都有自己单独的总中断标志位
    while(1)
    {
       f3+=0.1;                        //测试浮点运算
     
       LED_C=1;                        //LED_C写1  
       TSK_Delay(VT_TICKS_PER_SEC/4);  //延时1/4S
      
       LED_C=0;                        //LED_C写0
       TSK_Delay(VT_TICKS_PER_SEC-VT_TICKS_PER_SEC/4);  //延时3/4S
    }
}

int main()
{
     __assert__(SIZEOF_STACK_TYPE_T==1);
   
     cli();                   //任务开始调度前,要关中断,每个任务都有自己单独的总中断标志位
         
     DDRB  |=_BV(0)|_BV(1)|_BV(2);    //LED_A,LED_B,LED_C输出
     PORTB |=_BV(0)|_BV(1)|_BV(2);    //LED_A,LED_B,LED_C写1
    // _delay_ms(1000);
     PORTB &=~(_BV(0)|_BV(1)|_BV(2)); //LED_A,LED_B,LED_C写0
         
     VT_TicksInit();                   //系统节拍初始化

#ifdef __AVR_IAR__  
     //AVR IAR使用双堆栈
     TSK_Init(TSK(A),TSK_PROC(A),0,TSK_CSTACK_BOTTOM(A),TSK_RSTACK_BOTTOM(A)); //任务A初始化,优先级0
     TSK_Init(TSK(B),TSK_PROC(B),0,TSK_CSTACK_BOTTOM(B),TSK_RSTACK_BOTTOM(B)); //任务B初始化,优先级1
     TSK_Init(TSK(C),TSK_PROC(C),0,TSK_CSTACK_BOTTOM(C),TSK_RSTACK_BOTTOM(C)); //任务C初始化,优先级2
#else
     //AVR GCC使用单堆栈
#error  "AVRGCC 暂停维护"
     
#endif
                    
    TSK_Start();           //任务开始调度(开始调度由空闲任务主函数切换到用户任务)
       
    sei();                 //空闲任务主函数开中断,空闲任务主函数也有自己单独的总中断标志位
   
  //  volatile float f0=1.0;     //测试浮点运算
      
    while(1)              //任务空闲时,运行这里
    {   
              
   //   f0=f0+0.01;         //测试浮点运算
      
     SleepIdle();        //空闲休眠
        
    }
}

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

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-2-28 11:56:57 | 显示全部楼层
下了,这个也是传说中的FREERTOS ??

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

本版积分规则

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

GMT+8, 2024-5-20 21:07

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

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