首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

大家有没有遇到这样的问题!(CAN)

#include /* common defines and macros */ #include /* derivative information */ #pragma LINK_INFO DERIVATIVE "mc9s12dp256b" void MSCAN3Trans(unsigned char *ID, unsigned char * msgout) { CAN3TXIDR0 = *ID; /* 设置ID寄存器,数组ID是用户设置*/ CAN3TXIDR1 = *(ID+1); CAN3TXIDR2 = *(ID+2); CAN3TXIDR3 = *(ID+3); CAN3TXDSR0 = *msgout; /* 设置数据寄存器,数组msgout是用户设置*/ CAN3TXDSR1 = *(msgout+1); CAN3TXDSR2 = *(msgout+2); CAN3TXDSR3 = *(msgout+3); CAN3TXDSR4 = *(msgout+4); CAN3TXDSR5 = *(msgout+5); CAN3TXDSR6 = *(msgout+6); CAN3TXDSR7 = *(msgout+7); CAN3TXDLR = 8; /*设置数据长度*/ CAN3TXTBPR = 0; /*设置发送缓存优先级*/ CAN3TFLG_TXE0=1; /*清除TxE位,发送CAN消息*/ } void main(void) { /* put your own code here */ /*变量定义*/ unsigned char ID[3]; unsigned char msgout[7]; unsigned int i; /*CAN初始化*/ CAN3CTL0_INITRQ=1; /* 请求进入初始化工作模式 */ while(!CAN3CTL1_INITAK){} /* 等待进入初始化模式 */ CAN3CTL1 = 0x80; /*CAN使能且CAN0CTL1_LISTEN=0*/ CAN3BTR0 = 0xc0; /* 设置SJW=2, 预分频为16*/ CAN3BTR1 = 0xbb; /* 设置波特率为500kbps */ CAN3IDMR0 = 0xFF; /*设置滤波器,全部设为1表示没有滤波*/ CAN3IDMR1 = 0xFF; CAN3IDMR2 = 0xFF; CAN3IDMR3 = 0xFF; CAN3IDMR4 = 0xFF; CAN3IDMR5 = 0xFF; CAN3IDMR6 = 0xFF; CAN3IDMR7 = 0xFF; CAN3CTL0_INITRQ=0; /* 请求进入正常工作模式 */ while(CAN3CTL1_INITAK) /* 等待退出初始化模式 */ CAN3RIER = 0x01; /* 接受中断使能 */ MSCAN3Trans(ID,msgout); EnableInterrupts; for(;;) { for(i=0;i<65535;i++){ } MSCAN3Trans(ID,msgout); } /* wait forever */ }
返回列表