<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

            void main(void)

            {

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

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

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

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

            { 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;//電平觸發(fā)模式

            EX0=1;//使能CAN中斷

            BufCan2[0]=0x88;

            P_SJAFrameStructApp->FrameID=0x11111111;

            while(1)

            {

            OSWait(K_TMO,2);//系統(tǒng)等待函數(shù),每兩個時鐘周期發(fā)送一次數(shù)據(jù)

            P_SJAFrameStructApp->FrameID++;

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

            for(i=0;i4;i++) //發(fā)送測試數(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ù)錯誤

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

            }

            }

            void DisPlay(void)

            {

            while(1){

            OSWait(K_TMO,1);

            ShowLED(); // led顯示處理

            }

            }

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

            }

           ?。?) 測試結果:

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

            5 結束語

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

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

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


          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();