亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? mscan12.c

?? MC9S12單片機 CAN總線初始化及數據發送
?? C
字號:
//[MSCAN12.c]串行通信------------------------------------------------------*
//本文件包含:                                                              *
//    (1)CANInit:CAN通信初始化                                             *
//    (2)GetSNDBUF:查找空閑發送緩沖區                                      *
//    (3)CANSND1DFRM:CAN發送1幀數據幀(數據長度<=8字節)                     *
//    (4)CANRCV1FRM:CAN接收1幀數據幀                                       *
//-------------------------------------------------------------------------*

//頭文件
#include "MSCAN12.h"    //CAN通信頭文件

//CANInit:CAN通信初始化----------------------------------------------------*
//功  能:CAN初始化                                                         *
//參  數:無                                                                *
//返  回:無                                                                *
//說  明:在9.83M 外部晶振頻率下將總線速率設為200kbps,節點標識符為0        *
//       雙濾波方式,工作在查詢方式                                        *
//-------------------------------------------------------------------------*
void CANInit(void)
{
    CAN0CTL1 |= (1 << CANE);    //MSCAN12模塊使能
    
    //初始化模式請求,并判斷初始化應答位,INITACK為1則CAN模塊已進入初始化
    CAN0CTL0 |= (1 << INITRQ);    // INITRQ=1,初始化請求
    //等待應答
    while ((CAN0CTL1 & (1<<INITACK)) == 0)
    {
    }
    
    CAN0CTL1 &= ~(1 << CLKSRC);    //MSCAN12時鐘源選擇外部晶振fmscan=9.83M
    CAN0CTL1 |= (1 << LOOPB);      //回環自測模式
    CAN0CTL1 &= ~(1 << LISTEN);    //禁止只聽模式
    
    CAN0BTR0 = CAN0BTR0V;    //同步跳轉寬度為1,預分頻因子為5
    CAN0BTR1 = CAN0BTR1V;    //將位速率設置成 197kbps
    CAN0IDAC = CAN0IDACV;    //兩個32位驗收過濾器
   
    CAN0IDAR0 = CAN0IDAR0V;    //給接收驗證碼寄存器0-1賦值
    CAN0IDAR1 = CAN0IDAR1V;
    CAN0IDMR0 = CAN0IDMR0V;    //給接收驗證屏蔽寄存器0-1賦值
    CAN0IDMR1 = CAN0IDMR1V;
    CAN0TIER = CAN0TIERV;      //設置中斷方式
    CAN0TIER = CAN0TIERV;
    
    CAN0CTL0 &= ~(1<<INITRQ);   //INITRQ=0,退出初始化模式
    //等待應答
    while ((CAN0CTL1 | (1<<INITACK)) == 1)
    {
    }
}

//CANSND1DFRM:CAN發送1幀數據-----------------------------------------------*
//功  能:CAN發送1幀數據(數據長度<=8)                                       *
//參  數:ID---報文標識符                                                   *
//       DataBUF---報文數據區首址                                          *
//       LEN---報文數據長度                                                *
//返  回:INT8U CANsnd1DFrm --- 發送成功與否標志,                          *
//       =0,沒有空閑發送緩沖區,發送不成功;=1,發送成功                  *
//說明:在發送數據之前,先查詢是否有空閑發送緩沖區,若無則不能發送,返回0   *
//-------------------------------------------------------------------------*
INT8U CANSND1DFRM(INT16U ID,INT8U * DataBUF, INT8U LEN)
{
    INT8U i;
    INT8U * addr;               //發送緩沖區
    INT8U BufNum = 0xFF;        //空閑的發送緩沖區號
    BufNum = GetSNDBUF();       //查找空閑的發送緩沖區   
    if (BufNum == 0xFF)         //若返回0xff,則沒有空閑的發送緩沖區
        return 0;               //沒有空閑的發送緩沖區,發送不成功,返回0
    switch(BufNum)
    {
    case 0:
        CAN0TBSEL |= (1<<TXS0);    //選中發送緩沖區0
        break;
    case 1:
        CAN0TBSEL |= (1<<TXS1);    //選中發送緩沖區1
        break;
    case 2:
        CAN0TBSEL |= (1<<TXS2);    //選中發送緩沖區2
        break;
    default:
        break;
    }
    addr=(INT8U *)(&CAN0TXFG);  //獲得發送前臺緩沖區首地址 
    //---------------------------------------------------------------------
    //將報文按CAN格式進行封裝并存入空閑發送緩沖區等待發送
    addr[0] = (INT8U)(ID >> 8); //11位報文標識符高8位
    addr[1] = ((INT8U)(ID));    //低3位
    addr[1] &= ~(1 << RTR);     //RTR=0,數據幀
    addr[1] &= ~(1 << IDE);     //IDE位=0      
    for(i = 0; i < LEN; i++)
        addr[i+4] = DataBUF[i]; //數據賦值   
    addr[12] = LEN;             //數據長度
    //---------------------------------------------------------------------
    //發送緩沖區相應TXE位寫1清除該位來通知MSCAN12發送數據
    switch(BufNum)
    {
    case 0:
        CAN0TFLG |= (1<<TXF0);       //發送緩沖區0準備就緒
        break;
    case 1:
        CAN0TFLG |= (1<<TXF1);       //發送緩沖區1準備就緒
        break;
    case 2:
        CAN0TFLG |= (1<<TXF2);       //發送緩沖區2準備就緒
        break;
    default:
        break;
    }
    return (1);                 //數據成功寫入空閑緩沖區,返回1
}
 

//GetSNDBUF:查找空閑發送緩沖區---------------------------------------------*
//功能:查找空閑發送緩沖區                                                 *
//入口:無                                                                 *
//出口:空閑區號或0xFF                                                     *
//-------------------------------------------------------------------------*
INT8U GetSNDBUF(void)
{   
   INT8U bufbit = 0xFF;         //空閑區號

   //查找空閑的發送緩沖區
   if ((CAN0TFLG & (1 << TXE0)) != 0)
   {  //發送緩沖區0空      
      bufbit = 0;  
   }
   else if ((CAN0TFLG & (1 << TXE1)) != 0) 
   {  //發送緩沖區1空      
      bufbit = 1; 
   }
   else if ((CAN0TFLG & (1 << TXE2)) != 0) 
   {  //發送緩沖區2空
      bufbit = 2;
   }  

   return bufbit;//返回空閑區號
}

//CANRCV1FRM:CAN接收1幀數據------------------------------------------------*
//功  能:CAN接收1幀子程序                                                  *
//參  數:無                                                                *
//返  回:INT8U CANRCV1FRM---函數名,表示接收幀的情況,                     *
//       =0xFF,未收到幀;=1,收到數據幀;=2,收到遠程幀                   *
//       CANRCVBUF--若收到報文,為16字節報文緩沖區的首地址                 *
//說  明:無                                                                *
//-------------------------------------------------------------------------*
INT8U CANRCV1FRM(INT8U * CANRCVBUF)
{   
    INT8U i;
    INT8U IDEFlag;              //IDE標志
    INT8U RTRFlag;              //RTR標志
    INT8U FrameFlag;            //幀標志
    INT8U * addr;               //接收幀首地址
    if ((CAN0RFLG &(1 << RXF)) == 0) 
        return 0xFF;            //未收到數據,返回0xFF
    //RXF=1,表示收到數據,取數據處理
    addr = (INT8U *)(&CAN0RXFG);   
    for(i = 0; i < 16; i++)
        CANRCVBUF[i] = addr[i]; //將CAN接收緩沖區中的數據取到臨時緩沖區  
    CAN0RFLG = 0xFF;            //清所有接收標志     
    //------判斷是標準幀還是擴展幀-----------------------------------------
    IDEFlag = (CANRCVBUF[1] & (1 << IDE)); //取標識符中IDE標志
    if (IDEFlag == 0)           //標準幀
    {  
        RTRFlag = (CANRCVBUF[1] & (1 << RTR)); //取標識符中RTR標志
        //判斷是數據幀還是遠程幀
        FrameFlag = ((RTRFlag == 0)?DataFrm:RemoteFrm);  
    }
    else                        //擴展幀
    {   
        RTRFlag = (CANRCVBUF[3] & (1 << ERTR)); //取標識符中RTR標志
        //判斷是數據幀還是遠程幀
        FrameFlag = ((RTRFlag == 0)?DataFrm:RemoteFrm);  
    } 
    return FrameFlag;           //返回數據幀標志(1)或遠程幀(2)標志
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国内精品伊人久久久久av影院| 天天综合天天综合色| 精品久久久久99| 51精品视频一区二区三区| 在线亚洲+欧美+日本专区| www.色综合.com| 成人教育av在线| hitomi一区二区三区精品| 国产精品中文字幕欧美| 国产精品亚洲午夜一区二区三区 | 开心九九激情九九欧美日韩精美视频电影| 中文字幕在线不卡视频| 亚洲你懂的在线视频| 亚洲乱码中文字幕综合| 亚洲一区二区三区四区五区中文 | 99久久久国产精品| 色综合欧美在线视频区| 在线免费av一区| 91麻豆精品国产91久久久久久久久| 在线播放国产精品二区一二区四区| 欧美久久高跟鞋激| 久久美女高清视频| 亚洲欧美日韩在线不卡| 丝袜诱惑亚洲看片| 国产乱淫av一区二区三区| 成人精品高清在线| 欧美日韩免费电影| 久久日一线二线三线suv| 中文字幕中文在线不卡住| 亚洲国产wwwccc36天堂| 激情国产一区二区| 91在线看国产| 3d成人h动漫网站入口| 久久精品一级爱片| 一区二区三区四区亚洲| 黄页视频在线91| 91福利在线免费观看| 欧美xxxx老人做受| 亚洲丝袜美腿综合| 久久99最新地址| 欧美图区在线视频| 国产性色一区二区| 日韩在线一区二区三区| 成人动漫一区二区| 欧美一区中文字幕| 亚洲欧洲中文日韩久久av乱码| 六月丁香婷婷色狠狠久久| 成人免费不卡视频| 日韩一区二区电影| 亚洲午夜电影在线观看| 成人一区二区三区在线观看| 欧美一区日韩一区| 亚洲图片有声小说| 成人激情av网| 久久人人爽人人爽| 强制捆绑调教一区二区| 欧洲一区二区三区在线| 国产精品久久久久久久久免费樱桃 | 久久婷婷成人综合色| 婷婷综合另类小说色区| 色婷婷av一区二区三区gif| 久久日一线二线三线suv| 免费一区二区视频| 欧美日韩精品欧美日韩精品一| 中文字幕在线一区| 懂色一区二区三区免费观看| 日韩视频免费观看高清完整版| 精品少妇一区二区| 性欧美疯狂xxxxbbbb| 色域天天综合网| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 国产精品不卡一区| 成人精品视频一区二区三区尤物| 欧美成人a∨高清免费观看| 日韩精品一二三四| 日韩一区二区三区免费观看| 婷婷开心久久网| 欧美日韩一区二区三区不卡| 亚洲一二三专区| 欧美日韩综合在线| 五月婷婷综合网| 欧美日本一区二区三区| 日本中文在线一区| 欧美大片国产精品| 黑人精品欧美一区二区蜜桃| 欧美va亚洲va| 国产成人免费视频精品含羞草妖精| 2021久久国产精品不只是精品| 国产一区二区三区最好精华液| 久久久久久免费毛片精品| 激情图区综合网| 国产精品无遮挡| 99re热这里只有精品视频| 一区二区成人在线| 宅男噜噜噜66一区二区66| 极品少妇xxxx精品少妇| 欧美国产精品中文字幕| 色偷偷久久人人79超碰人人澡| 亚洲国产日韩精品| 日韩欧美久久一区| 风间由美中文字幕在线看视频国产欧美| 国产日韩欧美不卡| 欧美三级欧美一级| 黄色成人免费在线| 综合自拍亚洲综合图不卡区| 欧美日韩精品系列| 国产黄人亚洲片| 夜色激情一区二区| 欧美mv日韩mv国产网站| 99久久久久久99| 青青草成人在线观看| 中文字幕av资源一区| 欧美在线免费观看亚洲| 国产一区视频网站| 亚洲国产色一区| 久久精品夜色噜噜亚洲a∨| 欧美午夜精品电影| 国产成人精品亚洲日本在线桃色 | 成人一区二区三区视频 | 久久精品日韩一区二区三区| 91蜜桃在线免费视频| 精品一区二区三区免费视频| 一区二区三区**美女毛片| 精品美女一区二区三区| 色94色欧美sute亚洲线路一ni | 欧美日产在线观看| 成人av网站在线观看| 美日韩一区二区| 亚洲在线观看免费| 国产精品久久久久久久久晋中| 欧美剧在线免费观看网站| 91在线国产观看| 国产高清久久久久| 成人黄色国产精品网站大全在线免费观看| 视频一区欧美日韩| 亚洲美女免费视频| 中文字幕在线不卡视频| 国产日韩欧美电影| 久久久久久久av麻豆果冻| 欧美一区二区三区在线观看视频 | www国产亚洲精品久久麻豆| 色呦呦国产精品| 成人激情免费网站| 国产精品一区二区久久精品爱涩| 日本特黄久久久高潮| 亚洲不卡在线观看| 一区二区国产视频| 亚洲视频 欧洲视频| 国产精品美女久久久久久久| 国产亚洲一二三区| 久久久久久久久久久久电影| 精品国产污污免费网站入口 | 国产高清成人在线| 国产成人午夜精品影院观看视频 | 国产精品高潮久久久久无| 国产午夜精品一区二区三区四区| 精品国产91洋老外米糕| 欧美不卡在线视频| 久久亚洲二区三区| 国产欧美一区二区精品秋霞影院 | 一区二区三区在线观看动漫| 亚洲美女免费视频| 亚洲午夜免费视频| 亚洲国产一区在线观看| 亚洲国产视频直播| 青青草国产成人99久久| 老司机精品视频一区二区三区| 久久99深爱久久99精品| 国产成人亚洲综合a∨猫咪| 成人综合激情网| 91久久久免费一区二区| 欧美视频三区在线播放| 欧美一级在线免费| 久久久久久久久久久久久女国产乱 | 免费xxxx性欧美18vr| 精品一区二区三区在线视频| 国产精品白丝av| 99精品国产一区二区三区不卡| 色婷婷狠狠综合| 日韩色在线观看| 亚洲欧洲av色图| 亚洲大片一区二区三区| 麻豆精品视频在线观看免费 | 亚洲欧美日韩小说| 青草国产精品久久久久久| 福利一区二区在线观看| 91久久香蕉国产日韩欧美9色| 欧美一区二区三区免费观看视频| 久久久久国产精品免费免费搜索| 亚洲欧美怡红院| 日本伊人精品一区二区三区观看方式| 精品无人码麻豆乱码1区2区 | 日韩你懂的电影在线观看| 欧美国产日韩一二三区| 亚洲成人av一区二区| 国产美女娇喘av呻吟久久| 欧美日韩一卡二卡三卡| 国产欧美1区2区3区| 日韩**一区毛片| 在线观看免费亚洲|