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

📄 core.c

📁 关于嵌入式操作系统TRON的一个机械控制的例子
💻 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 + -