⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 IAR_ATMega16_UCOS_II.rar
💻 C
字号:
#include <iom16.h>
#include "ucos_ii.h"

#define  TASK_STK_SIZE 100 

extern void IntEnter(void);
extern void IntExit(void);

typedef struct os_icb
{
  unsigned int CSTACK;
  unsigned int RSTACK;
  unsigned int frame;
}OS_ICB;
OS_ICB OSICB;

OS_STK          Task1Stk[TASK_STK_SIZE];
OS_STK          Task2Stk[TASK_STK_SIZE];
OS_STK          Task3Stk[TASK_STK_SIZE];
OS_STK          Task4Stk[TASK_STK_SIZE];

void AvrInit(void);
void Task1(void *);
void Task2(void *);
void Task3(void *);
void Task4(void *);

void main (void)
{
  AvrInit();
  OSInit();
  OSTaskCreate(Task1, (void *)0, (void *)&Task1Stk[TASK_STK_SIZE - 1], 0);
  OSTaskCreate(Task2, (void *)0, (void *)&Task2Stk[TASK_STK_SIZE - 1], 1);
  OSTaskCreate(Task3, (void *)0, (void *)&Task3Stk[TASK_STK_SIZE - 1], 2);
  OSTaskCreate(Task4, (void *)0, (void *)&Task4Stk[TASK_STK_SIZE - 1], 3);  
  OSStart(); 
}

void AvrInit(void)
{
//以下为全局设定
  DDRB=0xFF;
  PORTB=0;
  DDRD=0xFF;
  PORTD=0;
  DDRC=0xFF;
  PORTC=0;
  DDRA=0xFC;
  PORTA=0;
  //以下为ADC的初始化设定
  ADMUX=0;
  ADCSRA=0x8E;      //使能ADC,ADC预分频因子为64,使能ADC中断
}

void Task1(void * data)
{
  data=data;
  //WDTCR=1;                  //enable watchdog and set the time in 32ms 
  //以下为定时器0的初始化设定,并启动定时器0
  TCCR0=0x05;       //定时器0设定为普通模式,输入时钟1024分频,正常的端口操作,
                    //不与OC0相连接,定时器0的周期为32.768ms
  TIMSK_TOIE0=1;    //使能定时器0的溢出中断
  while(1)
  {
    OSTimeDly(100);
    ADCSRA_ADSC=1;  
  }
}

void Task2(void * data)
{
  data=data;
  while(1)
  {
    OSTimeDly(240);
  }
}
void Task3(void * data)
{
  data=data;
  while(1)
  {
    OSTimeDly(333);
  }
}
void Task4(void * data)
{
  data=data;
  while(1)
  {
    OSTimeDly(473);
  }
}
__C_task __root void timer0_interrupt_routine(void)
{
  IntEnter();
  __enable_interrupt();
  OSTimeTick();
  __disable_interrupt();
  OSIntExit();
  IntExit();
}

__C_task __root void ADC_interrupt_routine(void)
{
  IntEnter();
  __enable_interrupt();
  //DoSomething
  __disable_interrupt();
  OSIntExit();
  IntExit(); 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -