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

📄 can.c

📁 2407模版程序
💻 C
字号:
#include "can.h"

#define TREG1	(0x4<<2)
#define TREG2	(0x3)
#define	SAM		(0x1<<7)
#define SJW		(0x1<<8)
#define SBG		(0x1<<10)

int init_can()
{
	*CANIMR = 0xbfff;	/*Enable all CAN interrupt*/
	*CANMDER = 0x0000;
	//*CANLAM0H = 0x9ad9;
	//*CANLAM0L = 0x64d2;
	*CANLAM0H = 0xffff;
	*CANLAM0L = 0xffff;
	*CANMDER = 0x0000;	
	*CANMSGID5H = 0x8e15;
	*CANMSGID5L = 0xdc35;
	*CANMSGID0H = 0xcc91;
	*CANMSGID0L = 0xd9f9;	
	*CANMSGCTRL5 = 0x0008;
	*CANMDER = 0x0021;
	*(CANMCR) = 0x1000;	
	while ( !(*(CANGSR) & 0x0010) )
		kickdog();
	*CANBCR2 = 3;
	*CANBCR1 = TREG1 | TREG2 | SAM | SJW | SBG;
	*CANMCR = 0x0000;
	while ( *CANGSR & 0x0010 )
		kickdog();
}

int can_tx(unsigned int *txdata)
{
	int i;
	/*for (i=0;i<4;i++){
		*(mbxbase+i)=*(txdata+i);*/
	*CANMBX5A = *txdata;
	*CANMBX5B = *(txdata+1);
	*CANMBX5C = *(txdata+2);
	*CANMBX5D = *(txdata+3);
	*CANTCR = 0x0080;
}

int can_rx(unsigned int *rxdata)
{
	while ( !(*CANRCR & 0x0010) )
		kickdog();
	*rxdata = *CANMBX0A;
	*(rxdata+1) = *CANMBX0B;
	*(rxdata+2) = *CANMBX0C;
	*(rxdata+3)= *CANMBX0D;
	*CANRCR |= 0x0010;
}
	

⌨️ 快捷键说明

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