| 
在线时间10 小时
UID307659
注册时间2011-7-23
NXP金币0 
 该用户从未签到 中级会员  
 
 
	积分207 
最后登录1970-1-1 | 
 
 
 楼主|
发表于 2011-12-28 11:55:41
|
显示全部楼层 
RE:安版主  这是我的CAN程序  麻烦您看一下!!
| 好像粘贴是有点出错了,再发一次(程序死在了这里while(!CANTFLG);): /***CAN初始化*******************************************************/
 void CAN_Init(void){
 CANCTL0_INITRQ = 1; //启动CAN初始化
 while(!CANCTL1_INITAK) //等待初始化响应
 ;
 CANCTL1 = 0x80; //CAN工作模式的设置 选择24M总线时钟
 CANBTR0_SJW = 3; //同步跳跃脉宽设置 4Tq
 CANBTR0_BRP = 2; //预分频数设置为3
 CANBTR1_SAMP = 0; //采样数为1
 CANBTR1_TSEG_20 = 3;
 CANBTR1_TSEG_10 = 10; //相位缓冲段SEG1、SEG2长度设置 4,11个Tq
 CANIDAC_IDAM = 1; //选择消息的接受模式
 CANIDAR0 = 0x00;CANIDMR0 = 0x00;
 CANIDAR1 = 0x00;CANIDMR1 = 0x00;
 CANIDAR2 = 0x00;CANIDMR2 = 0x00;
 CANIDAR3 = 0x00;CANIDMR3 = 0x00;
 CANIDAR4 = 0x00;CANIDMR4 = 0x00;
 CANIDAR5 = 0x00;CANIDMR5 = 0x00;
 CANIDAR6 = 0x00;CANIDMR6 = 0x00;
 CANIDAR7 = 0x00;CANIDMR7 = 0x00; //接受所有的地址的消息
 CANCTL0_INITRQ = 0; //关闭CAN初始化
 while(CANCTL1_INITAK) //等待关闭初始化响应
 ;
 //while(!CANCTL0_SYNCH) //等待CAN同步
 // ;
 CANRFLG_RXF = 1; //清空消息接受缓冲器
 CANRIER_RXFIE = 1; //使能接收消息中断
 }
 /***CAN发送函数*****************************************************/
 void CAN_send(mscan_T_msg msg){    //发送8个数
 byte Txbuffer,i;
 //if(CANCTL0_SYNCH == 1){
 
 Txbuffer = 0;
 while(!CANTFLG)             //等待发送缓冲器可用
 ;
 CANTBSEL = CANTFLG;
 Txbuffer = CANTBSEL;        //选择可用的buffer
 
 CANTXIDR0 = (byte) (msg.Tx_ID>>8);
 CANTXIDR1 = (byte) msg.Tx_ID;
 CANTXDLR = msg.Tx_Length;
 CANTXTBPR = msg.Tx_Prio;
 for(i=0;i
 | 
 |