📄 test1.c
字号:
/*
*/
#define Test1_GLOBALS
#include "includes.h"
//******************************************************************************
// Variablen
OS_STK Task2Stack[OS_TASK_DEF_STK_SIZE]; // startup task stack
OS_STK Task3Stack[OS_TASK_DEF_STK_SIZE];
//*****************************************************************************
// Prototypes
void Task2(void *pdata);
void Task3(void *pdata);
//*****************************************************************************
//*****************************************************************************
// Interrupt Timer/Counter0 Overflow
// OVF_Takt: 4MHz / 1024 / 39 = 10ms
#pragma interrupt_handler OSTickISR:8
//#pragma interrupt_handler test_OSTickISR0:8
void main()
{
CLI();//close interrupt
ProgramRest(FLASH_WHEN_RESET);
OSInit(); // OS init
//check OSTCBFreeList;
if(OSRunning || (0==OSTCBFreeList))//stack destroyed
goto OSTASKCREATE_ERROR;
if(OS_NO_ERR!=OSTaskCreate(Task2,
(void *)(int)'2',
&Task2Stack[OS_TASK_DEF_STK_SIZE-1],
TaskStartPrio))
goto OSTASKCREATE_ERROR;
if(OSRunning || (0==OSTCBFreeList))//stack destroyed
goto OSTASKCREATE_ERROR;
if(OS_NO_ERR!=OSTaskCreate(Task3,
(void *)(int)'3',
&Task3Stack[OS_TASK_DEF_STK_SIZE-1],
TaskStartPrio+1))
goto OSTASKCREATE_ERROR;
TC2_Init();
SEI();
//check OSTCBCur
//if(0==OSTCBCur)goto OSTASKCREATE_ERROR;
OSStart(); // start multitasking
//error
OSTASKCREATE_ERROR:
//dead loop
ProgramError();
}
//*****************************************************************************
void Task2(void *data){
Task2_porta(data);
}
void Task2_porta(void *data){
INT8U i,j=0;
DDRA=0xff;
while(1)
{
i++;
PORTA=i;
OSTimeDly(10);
}
}
void Task3(void *data){
unsigned char i,j,k;
while(1)
{
DDRC=0xff;
SEI();
for(i=0;i<8;i++)
{
j=1;
for(k=0;k<=i;k++)
j*=2;
asm("com %j");
PORTC=j;
OSTimeDly(10);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -