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

📄 mytry.c

📁 基于DSP2407的CAN程序
💻 C
字号:
 #include "240x_c.h"

void system_init(void); 
void MailBox0_INIT(void);
void Can_Send(void);
void inline disable()
{
	asm(" setc INTM");
} 


//open the interrupt
void inline enable()
{ 
	asm(" clrc INTM");
}      



int ReceiveDataA , ReceiveDataB , ReceiveDataC , ReceiveDataD;
int SendDataA , SendDataB , SendDataC , SendDataD;
int CAN_Flag=0;
int testreg=0,k;  

interrupt void c_int5()            
{   CAN_Flag = 1; 
testreg = *PIVR;
k++;
	*CANRCR		= 0x0010; 
	*CANIFR = 0xFFFF; 
	
}  



main()
{   disable();   
   	system_init();  
   	MailBox0_INIT();
    
   	
   	SendDataA	= 0X1122;
   	SendDataB	= 0X3344;
   	SendDataC	= 0X5566;
   	SendDataD	= 0X7788;
   	ReceiveDataA = 0;
   	ReceiveDataB = 0;
   	ReceiveDataC = 0;
   	ReceiveDataD = 0;
   	CAN_Flag	=0;
   	
   	enable();
   	Can_Send();
   	
   	while(1)
   	{ testreg = *CANRCR;  
   	testreg = *CANTCR;
        if(CAN_Flag == 1) 
        {
         	CAN_Flag = 0; 
         	
         	ReceiveDataA = *CANMBX0A;
   			ReceiveDataB = *CANMBX0B;
   			ReceiveDataC = *CANMBX0C;
   			ReceiveDataD = *CANMBX0D; 
   			*CANRCR		= 0x0010;
   			
        
   			*CANMDER	= 0x0000;            /*enable mailbox*/
   			*CANMCR		= 0x0100;            /*CDR=1,change data request*/ 
   		
   			SendDataA	= ReceiveDataA + 1;
   			SendDataB	= ReceiveDataB + 1;
   			SendDataC	= ReceiveDataC + 1;
   			SendDataD	= ReceiveDataD + 1;  
   		
   			*CANMCR	    = 0x04C0;           /*DBO=1,CDR=0,ABO=1,STM=1*/ 
   			*CANMDER    = 0x0001;            /*enable mailbox0,4*/ 
   			
   			Can_Send(); 
   	    }
   	}                            
} 



//////////////////////////////////
void system_init()
{
	
	asm(" setc SXM ");           /*符号位扩展有效*/   
	asm(" clrc OVM ");           /*累加器结果正常溢出*/
	asm(" clrc CNF ");           /*B0被配置为数据空间*/ 
	
	
	*SCSR1 	= 0x81FE;          /*CLKIN=6M,CLKOUT=24M,*SCSR1	= 0x81FE;,*/
	*WDCR	= 0xE8;            /*不使能看门狗*/ 	
	*IMR 	= 0x0010;          /*开CAN中断,int5*/
	*IFR 	= 0xFFFF;          /*清除所有中断标志*/
}

//////////////////////////////////
void MailBox0_INIT()
{   
	/*设置IOPC6\IOPC7 位CANRX,CANTX*/ 
 	*MCRB	= 0x00C0;              /**MCRB | 0x00C0; */
 	
 	/*CAN寄存器配置*/      
 	 	
 	*CANIFR		= 0xFFFF;       /*clear can int lable*/
 	*CANLAM0H=0x9FFF;			/* LAM0 */
	*CANLAM0L=0xFFFF;			/* recv any mail */ 
 	
 	/*设置位定时器*/ 
 	*CANMCR	= 0x1000;           /*CCR=1,reset mode*/ 
 	while((*CANGSR & 0x0010)!=0x0010);  /* CCE=1? */                             
 	                            /*CCE=1,change BCR2,BCR1 enable*/ 
 	*CANBCR2	= 0X0003;
 	*CANBCR1	= 0X005E;			/*125k*/ 
 	*CANMCR		= 0X0000;      /*CCR=0,CPU work normal*/  
 
 	while((*CANGSR & 0x0010)!=0x0000);	/* CCE=0? */                             
 	                            /*CCE=0,BCR2,BCR1 change ok*/  
 	                            
 	/*初始化邮箱:messagebox0 as recv*/                             
 	*CANMDER	= 0x0000;            /*disable mailbox */ 
 	*CANMCR		= 0x0100;           /*CDR=1,change ID request*/  
 	*CANMSGID0H = 0x40A0;           /* ID*/ 
 	                            /*IDE=0,AME=0,AAM=0,standard frame*/ 
 	
 	*CANMCR		= 0x04C0;            /* test mode */
    *CANMDER	= 0x0001;			/*  enable MessageBox0 */
	 
 	*CANIMR = 0x81c0;               /* low lever int ,enable recv int*/  

 	*CANIFR = 0xFFFF; 
}


void Can_Send()
{
	
	*CANMCR		= 0x0100;			/* Data change request */
	
	*CANMSGID4H	= 0x00A0;         /*ID,standard frame*/
	*CANMSGCTRL4 = 0x0008;		/* data frame,DLC=8 */
	*CANMBX4A	= SendDataA;
	*CANMBX4B	= SendDataB;
	*CANMBX4C	= SendDataC;
	*CANMBX4D	= SendDataD; 

	*CANMCR		= 0x04C0;			/* normal:0x0480 ,test:0x04C0*/ 
	*CANMDER    = *CANMDER | 0x0010;/* enable mailBox4*/
	 
	*CANIFR=0xFFFF;  
	*CANTCR		= 0x0040;			/* MailBox4,send */
    while((*CANTCR & 0x4000)!=0x4000);  
    
                            
 	*CANTCR 	= *CANTCR | 0x4000; 
    testreg = *CANTCR;
}







 interrupt void nothing() 
 {;}












              

⌨️ 快捷键说明

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