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

📄 schedule.c

📁 此程序为DP256的SPI实验程序,已经通过实验证明
💻 C
字号:
#define  LIN_SCHEDULE_GLOBALS

#include "LIN_Header.h"

const LIN_Sch_Cnst	LIN_Schedule_TblA[]	=
{
	{0x97,2,2/* 10ms, 5ms/Timer Tick */},
	{0x5b,1,2},
	{0x00,0,0},
};

const LIN_Sch_Cnst	LIN_Schedule_TblB[]	=
{
	{0xd8,4,3},//1
	{0x11,4,3},//2
	{0x50,2,2},//3
	{0x9c,4,3},//4
	{0xd6,5,3},//5
	{0x55,5,3},//6
	{0x14,4,3},//7
	{0xd8,4,3},//8
	{0x92,3,3},//9
	{0xd3,2,2},//10
	{0x11,4,4},//11
	{0x50,2,2},//12
	{0x9c,4,3},//13
	{0xd6,5,3},//14
	{0x55,5,3},//15
	{0x14,4,3},//16
	{0x99,2,2},//17
	{0x1a,2,2},//18
	{0x0,0,0},//End of Schedule
};//Unconditional Frame Schedule

void	LIN_Schedule(void)
{
	//	LIN_MSG_NODATA		0x01
	//	LIN_MSG_NOCHANGE	0x02
	//	LIN_MSG_UPDATED		0x20
	/*
		1.query Schedule_TblA for event trigerred frame transmit
		2.qurey Schedule_TblB for normal frame transmit
		
	*/
	//L_U8	index;
	if(LIN_Schedule_TblA[LIN_Schedule_IndexA].Frame_PID != LIN_NULL_FRAME)
	{
		LIN_Frame_Index = (LIN_Schedule_TblA[LIN_Schedule_IndexA].Frame_PID & 0x3f);
		if(LIN_MsgStatus[LIN_Frame_Index] == LIN_MSG_UPDATED)
		{//the data have been updated since last transmision
			if(LIN_Frame_Index == 0x17)
			{
				Msg_17_Encode();
				LIN_SetTimer(LIN_Schedule_TblA[LIN_Schedule_IndexA].Timeout);
				LIN_SendBreak();//start Frame transmission
			}
			else if(LIN_Frame_Index == 0x1b)
			{
				Msg_1B_Encode();
				LIN_SetTimer(LIN_Schedule_TblA[LIN_Schedule_IndexA].Timeout);
				LIN_SendBreak();
			}
		}
		else if(LIN_Schedule_TblB[LIN_Schedule_IndexB].Frame_PID != LIN_NULL_FRAME)
		{
			LIN_Frame_Index = (LIN_Schedule_TblB[LIN_Schedule_IndexB].Frame_PID & 0x3f);
			
			LIN_TX_Buf[LIN_INDEX_ID]	= LIN_Schedule_TblB[LIN_Schedule_IndexB].Frame_PID;
			
			LIN_SetTimer(LIN_Schedule_TblB[LIN_Schedule_IndexB].Timeout);
			LIN_SendBreak();
		}
		else
		{
			
		}
	}
	else if(LIN_Schedule_TblB[LIN_Schedule_IndexB].Frame_PID != LIN_NULL_FRAME)
	{
		LIN_Frame_Index = (LIN_Schedule_TblB[LIN_Schedule_IndexB].Frame_PID & 0x3f);
		
		LIN_TX_Buf[LIN_INDEX_ID]	= LIN_Schedule_TblB[LIN_Schedule_IndexB].Frame_PID;
		
		LIN_SetTimer(LIN_Schedule_TblB[LIN_Schedule_IndexB].Timeout);
		LIN_SendBreak();
	}
}

⌨️ 快捷键说明

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