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

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

?? mscan12.c

?? dg128 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一区二区三区蜜臀| 国产精品欧美精品| 精品999在线播放| 制服.丝袜.亚洲.中文.综合| 91麻豆精品一区二区三区| 自拍偷拍欧美激情| 国产精品丝袜在线| 精品国偷自产国产一区| 7777精品伊人久久久大香线蕉超级流畅 | 亚洲国产综合视频在线观看| 中文字幕va一区二区三区| 91国模大尺度私拍在线视频| 高清shemale亚洲人妖| 久久av资源网| 美女看a上一区| 亚洲第一激情av| 一区二区三区 在线观看视频| 中文字幕在线不卡视频| 中文字幕一区视频| 综合久久久久久久| 亚洲精品视频在线观看网站| 亚洲欧洲三级电影| 综合欧美亚洲日本| 亚洲欧美国产三级| 一区二区三区在线观看网站| 亚洲一区二区三区视频在线播放| 亚洲欧美日韩久久| 亚洲国产cao| 天天操天天色综合| 六月婷婷色综合| 三级不卡在线观看| 国产最新精品免费| 成人午夜电影小说| 日本韩国视频一区二区| 欧洲国内综合视频| 91麻豆精品国产无毒不卡在线观看 | 成人美女在线视频| 91美女视频网站| 欧美色视频在线| 日韩欧美中文字幕制服| 久久久久国产精品厨房| 国产精品女同互慰在线看 | 亚洲狠狠丁香婷婷综合久久久| **性色生活片久久毛片| 亚洲动漫第一页| 麻豆国产欧美日韩综合精品二区 | 日本 国产 欧美色综合| 国产精品中文字幕一区二区三区| 国产在线视频精品一区| 9色porny自拍视频一区二区| 欧美吻胸吃奶大尺度电影| 日韩一区二区三区视频| 久久亚洲影视婷婷| 欧美精品一二三四| 国产欧美日韩精品在线| 日韩精品视频网| 色吧成人激情小说| 国产精品美女一区二区三区| 麻豆91精品视频| 欧美日韩一区二区电影| 亚洲色图20p| 成人a区在线观看| 久久精品欧美一区二区三区不卡 | 欧美性大战久久久久久久蜜臀| 精品剧情v国产在线观看在线| 亚洲午夜一区二区| 色屁屁一区二区| 成人欧美一区二区三区小说| 国产成人av资源| 国产日韩欧美在线一区| 国产suv精品一区二区三区| 久久综合久久综合九色| 经典三级在线一区| 精品福利一二区| 国内成人精品2018免费看| 日韩一区二区三区免费看 | 亚洲成人av电影在线| 色爱区综合激月婷婷| 亚洲欧美日韩小说| 欧美在线免费观看视频| 亚洲国产一区二区三区| 91国内精品野花午夜精品| 亚洲一区二区三区在线播放| 在线观看av不卡| 日韩精品电影一区亚洲| 欧美一区二区性放荡片| 美女高潮久久久| 久久精品一区二区三区不卡| 成人在线视频一区二区| 亚洲欧美一区二区三区孕妇| 欧洲一区在线电影| 日本欧美一区二区三区乱码| 精品精品国产高清一毛片一天堂| 激情综合色丁香一区二区| 国产女人18水真多18精品一级做| fc2成人免费人成在线观看播放| 亚洲视频精选在线| 欧美另类变人与禽xxxxx| 久久疯狂做爰流白浆xx| 亚洲电影中文字幕在线观看| 日韩欧美高清在线| 成人激情动漫在线观看| 亚洲国产你懂的| 久久亚洲影视婷婷| 色哟哟在线观看一区二区三区| 视频一区二区欧美| 国产午夜精品一区二区三区四区| 色综合欧美在线| 激情图区综合网| 一区二区三区中文字幕精品精品 | 亚洲图片另类小说| 欧美乱熟臀69xxxxxx| 国产成人小视频| 日韩精品一二三区| 亚洲欧美日韩国产一区二区三区| 欧美一区二区三区免费大片| 成人av动漫在线| 久久成人免费电影| 亚洲成人7777| 亚洲日本欧美天堂| 久久久久久9999| 91精品国产综合久久久久久久 | 日韩国产欧美在线播放| 国产精品久久久久久久岛一牛影视 | av亚洲精华国产精华| 日韩国产一区二| 另类小说欧美激情| 夜夜嗨av一区二区三区网页| 久久你懂得1024| 欧美精品高清视频| 91视视频在线观看入口直接观看www| 欧美96一区二区免费视频| 亚洲欧洲另类国产综合| 久久久精品综合| 欧美剧情片在线观看| 99久免费精品视频在线观看| 国产精品一区在线| 六月婷婷色综合| 美女性感视频久久| 日日夜夜免费精品视频| 亚洲va欧美va人人爽| 亚洲欧美日本在线| 国产精品久久久久桃色tv| 久久免费看少妇高潮| 精品福利在线导航| 精品国产乱码91久久久久久网站| 在线视频欧美精品| 91极品美女在线| 日本高清免费不卡视频| 91亚洲永久精品| 日本精品一级二级| 欧美日韩一区精品| 777欧美精品| 精品国产凹凸成av人网站| 欧美zozo另类异族| 2017欧美狠狠色| 欧美国产精品中文字幕| 国产精品成人在线观看| 国产精品久久精品日日| 综合中文字幕亚洲| 夜色激情一区二区| 视频一区二区不卡| 久久99最新地址| 成人午夜电影久久影院| 91香蕉视频在线| 精品视频一区二区不卡| 欧美巨大另类极品videosbest | 亚洲人妖av一区二区| 亚洲伦理在线精品| 午夜视频久久久久久| 免费日本视频一区| 成人综合婷婷国产精品久久蜜臀| 成人一道本在线| 欧洲av在线精品| 精品少妇一区二区三区在线视频| 国产亚洲欧洲997久久综合| 亚洲三级电影全部在线观看高清| 伊人开心综合网| 麻豆91小视频| 色噜噜久久综合| 日韩视频免费观看高清在线视频| 久久精品视频免费| 午夜精品视频一区| 国产精品羞羞答答xxdd| 91久久奴性调教| 久久久蜜桃精品| 亚洲一区二区三区四区在线免费观看 | 不卡av在线免费观看| 777久久久精品| 国产精品成人网| 久久99久久久久久久久久久| 97久久超碰精品国产| 日韩三级伦理片妻子的秘密按摩| 国产精品高潮呻吟久久| 手机精品视频在线观看| 99久久精品国产毛片| 精品美女在线播放| 偷拍亚洲欧洲综合|