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

📄 pelirtos.c

📁 Small RTOS 下SJA1000驱动程序的编写。主要介绍了在实时操作系统Small RTOS下
💻 C
字号:
/*
 ********************************************************************************************************************
 *描述:    独立的CAN 控制器SJA1000PeliCAN在small rtos中的应用示例
 *文件名:   PELIRTOS.c
 *应用语言: KEIL C51
 *应用系统:	small rtos
 *版本 :    V1.0
 *广州周立功单片机发展有限公司 保留所有的版权
 ********************************************************************************************************************
 */
#define		 _TIME_MODULE_H
#define		_SERIAL_H

/*
************************************************************************************************************************
**                           导入头文件
************************************************************************************************************************
*/

#include	"..\inc\INCLUDES.h"

/*
************************************************************************************************************************
**                          	系统定时中断处理
************************************************************************************************************************
*/
void UserTickTimer(void)
{
	TMOD = (TMOD & 0XF0) | 0X01;
	TL0 = 0x30;
	TH0 = 0xf8;
	TR0 = 1;
	ET0 = 1;
	TF0 = 0;
}
/*
************************************************************************************************************************
**                          	微处理器初始化
************************************************************************************************************************
*/
void	CpuInit(void)
{	
	CKCON=1;				//应用6clock
   	SJA_CS_Point =&CAN1_SJA_BaseAdr;			//重置操作指针
	P_structDisplayLedApp=&structDisplayLedApp;
	P_CanIntFlagApp 	=&CanIntFlagApp;
	P_Can1IntFlagApp	=(P_CAN_INT_FLAG)(&CAN1_SJA_BaseAdr+REG_CAN_IR);
	P_Can2IntFlagApp	=(P_CAN_INT_FLAG)(&CAN2_SJA_BaseAdr+REG_CAN_IR);

}

/*
************************************************************************************************************************
**                          main
************************************************************************************************************************
*/

void		main(void)
{	
	CpuInit();
	TMOD = (TMOD & 0XF0) | 0X01;
	TL0 = 0x30;
	TH0 = 0xf8;
	TR0 = 1;
	ET0 = 1;
	TF0 = 0;
    OSStart();//启动small rtos
}

/*
************************************************************************************************************************
**                          can control  send task
************************************************************************************************************************
*/
void	send(void)
{	unsigned	char	data	status;
	unsigned	char	i;
	unsigned char xdata *p =&CAN1_SJA_BaseAdr+REG_CAN_SR  ;
	unsigned char xdata *p1;
	status=SJAInitConfig();			//初始化can控制器
	if(status!=0){
		OSSendSignal(2);
	}
    P_SJAFrameStructApp  =(P_SJAFrameStruct )&BufCan2[0];
	IT0 =0;					//电平触发模式
	EX0=1;					//使能can中断
    BufCan2[0]=0x88;
	P_SJAFrameStructApp->FrameID=0x11111111;
	while(1){
			OSWait(K_TMO,2);
            P_SJAFrameStructApp->FrameID++;
			p1=(unsigned char xdata *)&P_SJAFrameStructApp->FrameID;
			for(i=0;i<4;i++)				//发送测试数据
				BufCan2[1+i] =*(p1+i);// 0x55;
			for(i=0;i<4;i++)
				BufCan2[5+i] =*(p1+i);// 0x55;
			for(i=0;i<4;i++)
				BufCan2[9+i] =*(p1+i);// 0x55;	
			status=SJASendData(BufCan2,0x10);//启动can发送
			if(status!=0)
				OSSendSignal(2);
	}
}


/*
************************************************************************************************************************
**                           display task
************************************************************************************************************************
*/
void	display(void)
{

	while(1){
			OSWait(K_TMO,1);
			Show_LED();		//dp51 led显示处理
	}
}

/*
************************************************************************************************************************
**                           error task
************************************************************************************************************************
*/
void	error(void)
{
	static unsigned int xdata  ErrInfo;
   	while(1){
			OSWait(K_SIG,0);
			P_structDisplayLedApp->DisplayBuf[1]=0x0E;
			P_structDisplayLedApp->DisplayBuf[2]=0x12;
	    	P_structDisplayLedApp->DisplayBuf[4]=(unsigned char)ErrInfo&0x0f;
			P_structDisplayLedApp->DisplayBuf[3]=((unsigned char)ErrInfo&0xf0)>>4;    	
	}
}


⌨️ 快捷键说明

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