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

📄 can.c

📁 2407DSP开发应用程序实例(有14个常用模块程序)
💻 C
字号:
#include "f2407_c.h"                 //引用头部文件   
int CAN_FLAG;                        //定义标志寄存器
void system_init();                  //声明在程序中需要用到是函数
void CANMBX_ISR();
void CAN_INIT();
void inline disable()
{
   asm(" setc INTM");
}                    
void inline enable()
{
   asm(" clrc INTM");
}                    

//(1)主程序
main()
{
 system_init();                      //系统初始化子程序
 CAN_FLAG=0x00;                      //清CAN用户标志,CAN_FLAG=0表示收到数据
 CAN_INIT();                         //CAN初始化子程序
 enable();
 for(;;)
 {
   *TCR=0x20;                        //MBX3请求发送
   while(*TCR&0x2000==0)             //等待发送应答
   continue;
   *TCR=0x1000;                      //清TA3和MIF3标志位
   while(CAN_FLAG==0)                
   continue;                         //等待接收数据
   CAN_FLAG=0x0000;                  //清接收到标志
   *MDER=0X0000;                     //邮箱不使能
   *MCR=0X0140;                      //CDR=1,数据改变请求
   *MBX3A=*MBX2A+1;                  //邮箱2中数据加1用来更新3中的数据
   *MBX3B=*MBX2B+1;
   *MBX3C=*MBX2C+1;
   *MBX3D=*MBX2D+1; 
   *MCR=0X04C0;                      //DBO=1,CDR=0,AB0=1,STM=1
   *MDER=0X04C;                      //ME2=ME3=1,MBX2接收,MBX3发送
   
  }
} 

//(2) 系统初始化子程序

void system_init()
{
    asm(" setc	SXM");					// 抑制符号位扩展
	asm(" clrc	OVM");					// 累加器中结果正常溢出
	asm(" clrc	CNF");					// B0被配置为数据存储空间
	asm(" setc	INTM");					// 禁止所有中断    
	*SCSR1=0x81FE;					    // CLKIN=6M,CLKOUT=4*CLKIN=24M
	*WDCR=0x0E8;					    // 不使能看门狗,因为SCSR2中的WDOVERRIDE
		     						    // 即WD复位后的缺省值

⌨️ 快捷键说明

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