新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 淺談Small RTOS51 下CAN總線數據收發實現

        淺談Small RTOS51 下CAN總線數據收發實現

        作者: 時間:2011-09-03 來源:網絡 收藏
        (1)實例部分代碼實現

          void main(void)

          {

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

          UserTickTimer(void);//系統時鐘節拍的初始化

          OSStart();//啟動small rtos操作系統

          SendData();//發送數據任務

          { 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); //喚醒錯誤處理任務

          }

          P_SJAFrameStructApp =(P_SJAFrameStruct )BufCan2[0];

          IT0 =0;//電平觸發模式

          EX0=1;//使能CAN中斷

          BufCan2[0]=0x88;

          P_SJAFrameStructApp->FrameID=0x11111111;

          while(1)

          {

          OSWait(K_TMO,2);//系統等待函數,每兩個時鐘周期發送一次數據

          P_SJAFrameStructApp->FrameID++;

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

          for(i=0;i4;i++) //發送測試數據

          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);//向發送數據,所發送數據的首地址是BufCan2

          if(status!=0) //表示發送數據錯誤

          OSSendSignal(2);喚醒錯誤處理任務

          }

          }

          void DisPlay(void)

          {

          while(1){

          OSWait(K_TMO,1);

          ShowLED(); // led顯示處理

          }

          }

          Error();// 錯誤信息處理任務

          }

          (2) 測試結果:

          如果運行正確:數碼管會顯示依次加1的數值,否則:數碼管會顯示E-xx的錯誤代碼

          5 結束語

          的產生與發展控制器局部網(CAN-CONTROLLER AREA NETWORK)是BOSCH公司為現代汽車應用領先推出的一種多主機局部網,由于其高性能、高可靠性、實時性等優點現已廣泛應用于工業自動化、多種控制設備、交通工具、醫療儀器以及建筑、環境控制等眾多部門。控制器局部網將在我國迅速普及推廣。

          隨著計算機硬件、軟件技術及集成電路技術的迅速發展,工業控制系統已成為計算機技術應用領域中最具活力的一個分支,并取得了巨大進步。由于對系統可靠性和靈活性的高要求,工業控制系統的發展主要表現為:控制面向多元化,系統面向分散化,即負載分散、功能分散、危險分散和地域分散。

          本文作者創新點是實現了在實時操作系統Small 上數據的接收與發送,用一個簡單的實例來說明了CAN總線的接收、發送原理。


        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 泸水县| 太仆寺旗| 绥芬河市| 海宁市| 思南县| 娱乐| 准格尔旗| 东方市| 林州市| 西城区| 思南县| 沙洋县| 逊克县| 东方市| 长丰县| 惠水县| 锦州市| 阳西县| 乌海市| 南昌县| 茶陵县| 沽源县| 沁水县| 来宾市| 黎平县| 资阳市| 大姚县| 平凉市| 玉树县| 蓬溪县| 昌吉市| 综艺| 汉阴县| 民丰县| 达州市| 耒阳市| 望奎县| 简阳市| 绥芬河市| 蓝田县| 濮阳市|