📄 core.c
字号:
/****************************************Copyright (c)**************************************************
**
** UCOMSOFT
**
** http://www.ucomsoft.com
**
**--------------文件信息--------------------------------------------------------------------------------
**文 件 名: core.c
**创 建 人:
**最后修改日期: 2004年8月24日
**描 述: HOS系统核心文件
**
**--------------历史版本信息----------------------------------------------------------------------------
** 创 建 人:
** 版 本: v1.0
** 日 期: 2004年8月24日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
** 修 改 人:
** 版 本:
** 日 期:
** 描 述:
**
**--------------当前版本修订------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
** 描 述:
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#include "core.h"
#include "stdio.h"
#include "defs.h"
void init (void)
{
U32 i;
SYSCLK = 0;
lastclk = 0;
for (i=0;i<MAXTSKNUM;i++)
{
TaskDly[i].t0 = 0;
TaskDly[i].wait = 0;
}
usr_init();
}
U32 juge(U32 k)
{
/*
U8 tmp,flag=0;
if(SYSCLK!=lastclk)
{
flag=1;
tmp=SYSCLK-lastclk;
lastclk=SYSCLK;
}*/
/*
if((TaskDly[curtsk].wait!=0))//&&flag)
TaskDly[curtsk].t0++;//+=tmp;
*/
if(TaskDly[curtsk].t0==0&&TaskDly[curtsk].wait==0)
return 1;
else if(TaskDly[curtsk].t0==TaskDly[curtsk].wait)
{
TaskDly[curtsk].t0=TaskDly[curtsk].wait=0;
return 1;
}
else
return 0;
}
void dly_tsk(U32 k)
{
TaskDly[curtsk].t0=0;
TaskDly[curtsk].wait=k;
}
U32 GetTime(void)
{
return SYSCLK;
}
void SetTime(U32 k)
{
SYSCLK = k;
}
//////////////////////////////////
void __irq ISRTimer(void) // 1ms
{
U32 i;
for (i=0;i<MAXTSKNUM;i++)
{
if(TaskDly[i].wait!=0)
TaskDly[i].t0++;
}
SYSCLK++;
clr_int_pend();
}
///////////for no timer////////////////
void dely(void)//delay 1ms CPU 60MHz
{
int i,j;
for(i=0;i<600;i++)
for(j=0;j<2;j++)
;
}
void delay(int Period)
{
int i;
for(i=0;i<Period;i++)
{
dely();
}
}
///////////////////////////////////////
int Main(int argc, char* argv[])
{
S32 (*f)(S32);
init();
while(1)
{
for(curtsk=0;curtsk<MAXTSKNUM;curtsk++)
{
if(juge(curtsk))
{
//TaskN[curtsk](0);
//(*TaskN[curtsk])(0);
f=(function)(TaskN[curtsk]);
f(0);
}
}
//delay(1);SYSCLK++; // no timer
}
return 0;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -