📄 main.c
字号:
//main.c
#include ".\Core\includes.h"
#define N_TASKS 3 // Number of tasks
#define TASK_STK_SIZE 64 // Stack size, in sizeof OS_STK, or int 16bit
OS_STK TaskStk[N_TASKS][TASK_STK_SIZE]; // Tasks stacks
void Task1(void *p);
void TaskStart(void *p);
void InitTick(void){
*P_TimeBase_Setup = 0x0000; // set time base 2 128Hz
*P_Timebase_Clear = 0x55aa;
*P_INT_Ctrl = 0x0001; // only enable TMB2 interrupt
//asm("irq on");
}
OS_EVENT *sem1;
int main()
{
//add your code here
//__asm("int off");
//__asm("irq on");
INT16U TaskStartP;
*P_IOA_Data = 0xffff;
*P_IOA_Attrib = 0xffff;
*P_IOA_Dir = 0xffff;
*P_IOA_Data = 0x0001;
*P_IOA_Data = 0x0002;
*P_IOA_Data = 0x0004;
*P_IOA_Data = 0x0008;
*P_IOA_Data = 0xffff;
OSInit();
TaskStartP = 0x1111;
OSTaskCreate(TaskStart, &TaskStartP, &TaskStk[0][TASK_STK_SIZE-1], 3);
OSStart();
return 0;
}
void TaskStart(void *p){
INT16U Task1P;
INT16U data;
INT8U err;
data = *((INT16U *)p); //check parameter corrected.
Task1P = 0x2222;
InitTick();
sem1 = OSSemCreate(0);
OSTaskCreate(Task1, &Task1P, &TaskStk[1][TASK_STK_SIZE-1], 9);
while (1){
*P_IOA_Data = 0x0001;
OSSemPend(sem1, 0, &err);
*P_IOA_Data = 0x0001;
OSTimeDly(4);
}
}
void Task1(void *p){
int i;
//asm("irq on");
while (1){
*P_IOA_Data = 0x0002;
OSSemPost(sem1);
*P_IOA_Data = 0x0002;
OSTimeDly(2);
// for (i = 0; i < 10000; i++){
// }
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -