• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 淺談Small RTOS51 下CAN總線數(shù)據(jù)收發(fā)實(shí)現(xiàn)

    淺談Small RTOS51 下CAN總線數(shù)據(jù)收發(fā)實(shí)現(xiàn)

    作者: 時(shí)間:2011-09-03 來源:網(wǎng)絡(luò) 收藏
    (1)實(shí)例部分代碼實(shí)現(xiàn)

      void main(void)

      {

      CpuInit(); //微控制器初始化

      UserTickTimer(void);//系統(tǒng)時(shí)鐘節(jié)拍的初始化

      OSStart();//啟動(dòng)small rtos操作系統(tǒng)

      SendData();//發(fā)送數(shù)據(jù)任務(wù)

      { unsigned char data status;

      unsigned char i;

      unsigned char xdata *p =CAN1_SJA_BaseAdr+REG_CAN_SR ;

      unsigned char xdata *p1;

      status=SJAInit();//初始化can控制器

      if(status!=0){

      OSSendSignal(2); //喚醒錯(cuò)誤處理任務(wù)

      }

      P_SJAFrameStructApp =(P_SJAFrameStruct )BufCan2[0];

      IT0 =0;//電平觸發(fā)模式

      EX0=1;//使能CAN中斷

      BufCan2[0]=0x88;

      P_SJAFrameStructApp->FrameID=0x11111111;

      while(1)

      {

      OSWait(K_TMO,2);//系統(tǒng)等待函數(shù),每?jī)蓚€(gè)時(shí)鐘周期發(fā)送一次數(shù)據(jù)

      P_SJAFrameStructApp->FrameID++;

      p1=(unsigned char xdata *)P_SJAFrameStructApp->FrameID;

      for(i=0;i4;i++) //發(fā)送測(cè)試數(shù)據(jù)

      BufCan2[1+i] =*(p1+i);// 0x55;

      for(i=0;i4;i++)

      BufCan2[5+i] =*(p1+i);// 0x55;

      for(i=0;i4;i++)

      BufCan2[9+i] =*(p1+i);// 0x55;

      status=SJASendData(BufCan2,0x10);//向發(fā)送數(shù)據(jù),所發(fā)送數(shù)據(jù)的首地址是BufCan2

      if(status!=0) //表示發(fā)送數(shù)據(jù)錯(cuò)誤

      OSSendSignal(2);喚醒錯(cuò)誤處理任務(wù)

      }

      }

      void DisPlay(void)

      {

      while(1){

      OSWait(K_TMO,1);

      ShowLED(); // led顯示處理

      }

      }

      Error();// 錯(cuò)誤信息處理任務(wù)

      }

      (2) 測(cè)試結(jié)果:

      如果運(yùn)行正確:數(shù)碼管會(huì)顯示依次加1的數(shù)值,否則:數(shù)碼管會(huì)顯示E-xx的錯(cuò)誤代碼

      5 結(jié)束語

      的產(chǎn)生與發(fā)展控制器局部網(wǎng)(CAN-CONTROLLER AREA NETWORK)是BOSCH公司為現(xiàn)代汽車應(yīng)用領(lǐng)先推出的一種多主機(jī)局部網(wǎng),由于其高性能、高可靠性、實(shí)時(shí)性等優(yōu)點(diǎn)現(xiàn)已廣泛應(yīng)用于工業(yè)自動(dòng)化、多種控制設(shè)備、交通工具、醫(yī)療儀器以及建筑、環(huán)境控制等眾多部門。控制器局部網(wǎng)將在我國(guó)迅速普及推廣。

      隨著計(jì)算機(jī)硬件、軟件技術(shù)及集成電路技術(shù)的迅速發(fā)展,工業(yè)控制系統(tǒng)已成為計(jì)算機(jī)技術(shù)應(yīng)用領(lǐng)域中最具活力的一個(gè)分支,并取得了巨大進(jìn)步。由于對(duì)系統(tǒng)可靠性和靈活性的高要求,工業(yè)控制系統(tǒng)的發(fā)展主要表現(xiàn)為:控制面向多元化,系統(tǒng)面向分散化,即負(fù)載分散、功能分散、危險(xiǎn)分散和地域分散。

      本文作者創(chuàng)新點(diǎn)是實(shí)現(xiàn)了在實(shí)時(shí)操作系統(tǒng)Small 上數(shù)據(jù)的接收與發(fā)送,用一個(gè)簡(jiǎn)單的實(shí)例來說明了CAN總線的接收、發(fā)送原理。


    上一頁 1 2 3 下一頁

    評(píng)論


    相關(guān)推薦

    技術(shù)專區(qū)

    關(guān)閉
    主站蜘蛛池模板: 龙井市| 萝北县| 二连浩特市| 左权县| 吉林市| 石河子市| 汝州市| 开远市| 五原县| 芮城县| 东阿县| 鸡泽县| 五华县| 北票市| 凯里市| 和硕县| 吉水县| 横峰县| 聂荣县| 武邑县| 北票市| 金华市| 凤翔县| 东乡县| 仁布县| 大埔区| 云龙县| 隆尧县| 台东县| 乐昌市| 得荣县| 公安县| 辽宁省| 惠水县| 顺义区| 西丰县| 普陀区| 锡林郭勒盟| 华容县| 古田县| 日土县|