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

📄 sjaosap.c

📁 Small RTOS 下SJA1000驱动程序的编写。主要介绍了在实时操作系统Small RTOS下
💻 C
字号:
/*
 ********************************************************************************************************************
 *描述:    USB-to-CAN项目sja1000应用函数
 *文件名:   sjaosap.C
 *应用语言: KEIL C51
  *版本 :    V1.0
 *广州周立功单片机发展有限公司 保留所有的版权
 ********************************************************************************************************************
 */
 #define	_GLOBAL_SJAOSAP_

 /*
************************************************************************************************************************
**                           导入头文件
************************************************************************************************************************
*/
#include	"sjaosap.h"
#include	"SJA1000_PELI_APP.H"
#include    "rtosmain.H"
#include    "DISPLAY_LED.H"

#include	<intrins.h>	


/*
 ********************************************************************************************************************
 *                          函数原型
 ********************************************************************************************************************
 */	

void	sjacan1_isr(void)  interrupt  0  using  3
{
	unsigned char xdata *p =&CAN1_SJA_BaseAdr+REG_CAN_CMR ;
	unsigned char i;
	SJA_CS_Point =&CAN1_SJA_BaseAdr;			//重置操作指针
	*P_CanIntFlagApp = *P_Can1IntFlagApp;		//度取中断标志
	if(P_CanIntFlagApp->RcvIntFlag){		//接收数据
		for(i=0;i<13;i++){
			BufCan1[i] =*(SJA_CS_Point+REG_CAN_RXFMINFO +i);	
		}
		*p= RRB_BIT;
		P_structDisplayLedApp->DisplayBuf[2]=BufCan1[7]&0x0f;
	    P_structDisplayLedApp->DisplayBuf[1]=BufCan1[7]>>4;
		P_structDisplayLedApp->DisplayBuf[4]=BufCan1[8]&0x0f;
	    P_structDisplayLedApp->DisplayBuf[3]=BufCan1[8]>>4;
	}
	if(P_CanIntFlagApp->TsIntFlag){	
		SJATxOK();
	}
	if(P_CanIntFlagApp->EiIntFlag){
		SJAEIPrg();
	}
	if(P_CanIntFlagApp->DoiIntFlag){
		SJADOIPrg();
	}
	if(P_CanIntFlagApp->WuiIntFlag){
		SJAWUIPrg();
	}
	if(P_CanIntFlagApp->EpiIntFlag){
		SJAEPIPrg();
	}
	if(P_CanIntFlagApp->AliIntFlag){
		SJAALIPrg();
	}
	if(P_CanIntFlagApp->BeiIntFlag){
		SJABEIPrg();
	}
	
}	

/*
void	sjacan2_isr(void)  interrupt  1  using  3
{
	
}
*/	
 /*
 ********************************************************************************************************************
 *                         发送结束
 ********************************************************************************************************************
 */		
 void	SJATxOK(void){

 }

 /*
 ********************************************************************************************************************
 *                        错误报警
 ********************************************************************************************************************
 */		
 void	SJAEIPrg(void){

 }

 /*
 ********************************************************************************************************************
 *                        数据溢出
 ********************************************************************************************************************
 */		
 void	SJADOIPrg(void){

 }

 /*
 ********************************************************************************************************************
 *                       唤醒中断
 ********************************************************************************************************************
 */		
 void	SJAWUIPrg(void){

 }

 /*
 ********************************************************************************************************************
 *                      消极错误处理
 ********************************************************************************************************************
 */		
 void	SJAEPIPrg(void){
		ReadECCReg();
 }

 /*
 ********************************************************************************************************************
 *                      仲裁丢失处理
 ********************************************************************************************************************
 */		
 void	SJAALIPrg(void){
		ReadALCReg();
 }

 /*
 ********************************************************************************************************************
 *                      总线错误处理
 ********************************************************************************************************************
 */		
 void		SJABEIPrg(void){

 }

 /*
 ********************************************************************************************************************
 *                      sja初始化处理
 ********************************************************************************************************************
 */		
 char	SJAInitConfig(void){
	unsigned	char	status;
		if(SJATestRstMode()){                                //处于工作模式
		status = SJAEntryResetMode();			
	}
	if(status == 0){ 
    	status =SJAEntryPeliCANMode();
		status = SJASetClockDivision(0xc8);
		if(status!=0){
			return   status;		
		}
	/*	status = SJAQuitResetMode();
		if(status!=0){
			return   status;		
		}
		status = SJAEntryResetMode();
        if(status!=0){
			return   status;		
		}*/
		status = SJASetOutControl(0xAA);
		if(status!=0){
			return   status;		
		}
		status = SJASetAccCode(33,44,55,55);
		if(status!=0){
			return   status;		
		}
	  	status = SJASetAccMask(0xff,0xff,0xff,0xff);
		if(status!=0){
			return   status;		
		}
		status = SJASetBandRateStandard(ByteRate_1000k);
		if(status!=0){
			return   status;		
		}
       WriteSJAReg(REG_CAN_MOD,0x1c);	
 	   status = SJAQuitResetMode();
		if(status!=0){
			return   status;		
		}
	   WriteSJAReg(REG_CAN_IER,0xff);
	}	
	return  status;
 }

/*
 ********************************************************************************************************************
 *                          sja应用函数 定义结束
 ********************************************************************************************************************
 */

⌨️ 快捷键说明

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