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

[求助]mc9s12中can的使用问题

[求助]mc9s12中can的使用问题

我的can发送函数如下:

void CAN_Transmit(unsigned char CAN_Num,unsigned int CAN_Tr_IDR,unsigned char * CAN_Tr_Data){
  unsigned char Hit = 4;
  if(CAN_Num == 0){
    //选取发送缓冲
    if(CAN0TFLG_TXE0 == 1){
      Hit = 0;
      CAN0TBSEL_TX0 = 1;
    }
    else if(CAN0TFLG_TXE1 == 1){
      Hit = 1;
      CAN0TBSEL_TX1 = 1;
    }
    else if(CAN0TFLG_TXE2 == 1){
      Hit = 2;
      CAN0TBSEL_TX2 = 1;
    }   
    //送ID
    CAN0RXIDR0 = 0x00;/*(unsigned char)((CAN_Tr_IDR >> 8) & 0x00ff);*/
    CAN0RXIDR1 = 0x20;/*(unsigned char)(CAN_Tr_IDR & 0x00ff);*/
    CAN0RXIDR2 = 0x00;
    CAN0RXIDR3 = 0x00;
    //送数据
    CAN0RXDSR0 = 0;
    CAN0RXDSR1 = 0;
    CAN0RXDSR2 = 0;
    CAN0RXDSR3 = 0;
    CAN0RXDSR4 = 0;
    CAN0RXDSR5 = 0;
    CAN0RXDSR6 = 0;
    CAN0RXDSR7 = 0;
   
    CAN0RXDLR = 0x08;   
    //写1清除TXE标志
    CAN0TFLG &= (1 << Hit);
      }
 }

这个函数在908中是绝对能用的,但是我发现在这里我对这些寄存器赋值,根本不能改变它们的值,不知道为什么,请做过CAN的朋友赐教。谢谢。

CAN总线的浪涌ESD保护:

BA151N+ MSM014+BS0250MS

深圳市浪拓电子技术有限公司

0755-26334565张

返回列表