📄 can_test.c
字号:
#include "SEED-DSK2407.h"
#include "CAN.h"
Uint16 can_receive_flag;
Uint16 receive_deal_flag;
Uint16 mail_data[4];
void main()
{
DINT;
can_receive_flag = 0;
receive_deal_flag = 0;
SystemInit();
CanInit();
*IFR = 0x3f;
*IMR = 0x10;
EINT;
for(;;)
{
if(can_receive_flag == 1)
{
can_receive_flag = 0;
receive_deal_flag = 1;
}
*CANTCR = 0x20;
while(can_receive_flag == 0)
{
if((*CANTCR & 0x2000) == 0x2000)
{
break;
}
}
*CANTCR = 0x2000;
}
}
void SystemInit(void)
{
WSGR = 0;
*WDCR = 0xe8;
*SCSR1 = 0x02fe;
}
void CanInit(void)
{
/* 设置CANTX和CANRX为CAN功能口 */
*MCRB = *MCRB | 0xc0;
/* 邮箱2为接收方式、邮箱3为发送方式 */
*CANMDER = 0x40;
/* 设置ID屏蔽位 */
*CANLAM1H = 0x7fff;
*CANLAM1L = 0xffff;
/* 设置配置请求,系统为自闭环模式 */
*CANMCR = 0x1040;
/* 判断CCR的配置是否为1,可以对BCR1和BCR2寄存器修改 */
while((*CANGSR & 0x10) == 0);
/* CAN波特率为1M */
*CANBCR2 = 0x27;
/* */
*CANBCR1 = 0x13;
/* 关闭CCR,配置请求 */
*CANMCR = *CANMCR & 0xefff;
/* 判断CCR的配置是否为0,可以对BCR1和BCR2寄存器修改 */
while((*CANGSR & 0x10) == 0x10);
/* 邮箱2为接收方式、邮箱3为发送方式 */
*CANMDER = 0x40;
/* cdr = 1,数据区改变请求 */
*CANMCR = 0x143;
/* 设置邮箱2的控制字和ID */
*CANMSGID2H = 0x4447;
*CANMSGID2L = 0;
/* */
*CANMSGCTRL2 = 0x08;
/* 清邮箱2 */
*CANMBX2A = 0;
*CANMBX2B = 0;
*CANMBX2C = 0;
*CANMBX2D = 0;
/* 设置邮箱3的控制字和ID */
*CANMSGID3H = 0x2447;
*CANMSGID3L = 0;
/* */
*CANMSGCTRL3 = 0x08;
/* 清邮箱2 */
*CANMBX3A = 0x3210;
*CANMBX3B = 0x7654;
*CANMBX3C = 0xba98;
*CANMBX3D = 0xfedc;
/* */
*CANMCR = 0x4c0;
/* me3和me2使能 */
*CANMDER = 0x4c;
/* 清CAN中断标志 */
*CANIFR = 0xFFFF;
/**/
*CANIMR = 0xf7ff;
}
interrupt void PHANTOM(void)
{
}
interrupt void c_int5(void)
{
if((*PIVR & 0x40) == 0x40)
{
can_receive_flag = 1;
*CANRCR = 0x40;
*CANIFR = 0xffff;
*CANMDER = 0;
*CANMCR = 0x140;
mail_data[0] = *CANMBX2A;
mail_data[1] = *CANMBX2B;
mail_data[2] = *CANMBX2C;
mail_data[3] = *CANMBX2D;
*CANMBX3A = mail_data[0] + 1;
*CANMBX3B = mail_data[1] + 1;
*CANMBX3C = mail_data[2] + 1;
*CANMBX3D = mail_data[3] + 1;
*CANMCR = 0x4c0;
*CANMDER = 0x4c;
}
/* *IFR = 0x02;*/
EINT;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -