📄 can.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 + -