alarmtest.c.svn-base

来自「我们自己开发的一个OSEK操作系统!不知道可不可以?」· SVN-BASE 代码 · 共 92 行

SVN-BASE
92
字号
/*
 * ***********************************************************
 * 			        OSEK
 * 			COUNTER AND ALARM
 *FILE : alarmtest.c
 *BY   : mrchen
 *************************************************************
 */

#include"alarmtest.h"
#include"almapi.h"
//init programme,start at the startup of system
int taskpro1()
{
	//call the api used for activing a task,offered by shiyi fan.
	return 0;
}
int eventpro1()
{
	//call the api used for setting a event,offered by qiong zhao.
	return 0;
}
void almcallback1()
{
	//the callback of alarm,may be used for the special users.
}
void Init()
{
	int i,j;
	for(i=0;i < cnt_num;i++)
	{
		CntArrary[i].id=i;
		CntArrary[i].cntcurrent=0;
		CntArrary[i].maxallowvalue=Cntmaxval;//OIL configure
		CntArrary[i].tickcurrent=0;
		CntArrary[i].tickperbase=(i+1)*10;//OIL configure
		CntArrary[i].mincycle=Cntmincyl;//OIL configure
	}
	for(j=0;j < alm_num;j++)
	{
		AlmArrary[j].actionid=task;
		AlmArrary[j].taskpro=taskpro1;
		AlmArrary[j].almnum=(j+1)*10;//OIL configure
		AlmArrary[j].counter=j/(alm_num/cnt_num);//OIL configure
		AlmArrary[j].cycle=j%2;//OIL configure
		AlmArrary[j].state=0;
		AlmArrary[j].autostart=0;//OIL configure
		if(AlmArrary[j].autostart==1)//OIL configure
		{
			AlmArrary[j].state=1;
			AlmArrary[j].cycletime=20;
			AlmArrary[j].alarmtime=0;
		}
	}
}
//simulate user's programme to make use of alarm.
void Simulate()
{
	Setrelalarm(&AlmArrary[alm_now],30,0);
	Setabsalarm(&AlmArrary[alm_now],100,0);
}

int main()
{

	int i,j=0;
	
	ticktype temp_tick;
	tickreftype temptick=&temp_tick;

	alarmbasetype temp_cnt;
	alarmbasereftype temprefcnt;
	temprefcnt = &temp_cnt;
	
	Init();
	Simulate();
	for(i=0;i<6000;i++)
	{
		OSCounterTick();
		if(i == 50 )
		{
		  if(Getalarm(&AlmArrary[0],temptick) == E_OK);
				;//printf("tick should be 25=?%d\n",*temptick)
			Getalarmbase(&AlmArrary[0],temprefcnt);
			//printf("temprefcnt->id should be 0=?%d\n",temprefcnt->id);
			Cancelalarm(&AlmArrary[0]);
		}
	}
	
	return 0;
}

⌨️ 快捷键说明

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