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

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

?? mscan12.c

?? dg128c的mscan自測試程序
?? 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一区二区三区免费野_久草精品视频
中文字幕中文字幕一区| 精品亚洲成a人| 久久精品国产久精国产爱| 成人开心网精品视频| 欧美精品v国产精品v日韩精品| 国产亚洲欧美在线| 青青草97国产精品免费观看| 91在线观看视频| 国产欧美日韩久久| 午夜精品一区二区三区电影天堂| 丁香一区二区三区| 精品福利二区三区| 日韩高清在线电影| 色噜噜夜夜夜综合网| 欧美国产精品v| 国产一区二区三区高清播放| 欧美伦理视频网站| 夜夜爽夜夜爽精品视频| 成人免费观看视频| 国产人妖乱国产精品人妖| 青青青爽久久午夜综合久久午夜| 在线亚洲一区二区| 一区二区三区波多野结衣在线观看| 成人网男人的天堂| 国产清纯美女被跳蛋高潮一区二区久久w | 久久久午夜精品理论片中文字幕| 午夜日韩在线电影| 欧美视频在线观看一区二区| 亚洲三级电影全部在线观看高清| 成人高清伦理免费影院在线观看| www久久精品| 韩国三级中文字幕hd久久精品| 欧美一区二区三区色| 免费欧美在线视频| 精品人在线二区三区| 理论电影国产精品| 久久亚洲影视婷婷| 国产成人精品一区二区三区四区 | 国内成+人亚洲+欧美+综合在线| 4438x亚洲最大成人网| 午夜精品福利一区二区蜜股av| 欧美中文字幕一区| 亚洲成人1区2区| 宅男在线国产精品| 精品一区二区三区免费毛片爱| 久久久午夜精品理论片中文字幕| 一本一道久久a久久精品综合蜜臀| 一区二区中文视频| 欧美在线观看视频在线| 视频在线在亚洲| 久久影音资源网| 成人免费高清在线观看| 亚洲精品成人a在线观看| 欧美日精品一区视频| 免费人成在线不卡| 国产日韩欧美a| 色婷婷激情综合| 亚洲成国产人片在线观看| 日韩欧美电影一区| 成人免费高清视频| 一区二区三区精品视频| 欧美丰满一区二区免费视频| 激情综合色丁香一区二区| 国产精品乱码一区二区三区软件 | 久久久久免费观看| 成人深夜在线观看| 午夜国产不卡在线观看视频| 久久综合狠狠综合| 91激情在线视频| 麻豆精品在线观看| 亚洲视频一二区| 91精品国产色综合久久| 成人免费视频caoporn| 午夜视频在线观看一区| 国产日韩欧美激情| 91精品国产手机| 99久久久无码国产精品| 免费一级片91| 伊人夜夜躁av伊人久久| 日韩免费视频一区| 欧美人与禽zozo性伦| 成人美女视频在线观看| 久久精品国产久精国产| 亚洲国产一区二区视频| 中文字幕+乱码+中文字幕一区| 欧美久久一二三四区| 99久久精品国产一区二区三区| 免费人成网站在线观看欧美高清| 一区二区三区自拍| 国产精品素人视频| 精品国产第一区二区三区观看体验| 91在线观看免费视频| 国产成人一区在线| 国产一区日韩二区欧美三区| 日产国产欧美视频一区精品| 亚洲一区二区黄色| 亚洲日本一区二区三区| 欧美激情一区三区| 久久精品人人做| 欧美变态tickle挠乳网站| 欧美另类高清zo欧美| 日本黄色一区二区| 色哟哟一区二区在线观看| 成人一区二区三区中文字幕| 国产一区二区三区美女| 久88久久88久久久| 麻豆一区二区三| 日韩二区三区在线观看| 日韩精品每日更新| 一级日本不卡的影视| 亚洲视频一区二区在线| 亚洲特级片在线| 国产精品入口麻豆九色| 国产精品视频一区二区三区不卡| 久久久久88色偷偷免费| 精品国产欧美一区二区| 亚洲精品一线二线三线无人区| 欧美一区二区三区四区在线观看| 7777精品伊人久久久大香线蕉完整版 | 粉嫩在线一区二区三区视频| 国产精品996| 成人一区二区三区视频在线观看| 国产精品1区2区| 国产精品白丝jk白祙喷水网站| 国产一本一道久久香蕉| 国产成人免费av在线| 高清不卡在线观看| 色婷婷亚洲综合| 欧美日韩国产一级片| 日韩欧美另类在线| 久久久天堂av| 中文字幕亚洲一区二区va在线| 亚洲视频一区在线| 婷婷激情综合网| 国内精品第一页| 91一区二区三区在线播放| 欧美综合视频在线观看| 日韩一级完整毛片| 欧美精品一区二区精品网| 国产欧美视频在线观看| 亚洲免费av在线| 蜜桃久久av一区| 国内精品伊人久久久久影院对白| 国产盗摄精品一区二区三区在线| 91麻豆福利精品推荐| 欧美电影在线免费观看| 中文字幕第一页久久| 美美哒免费高清在线观看视频一区二区| 久久精品国产色蜜蜜麻豆| 国产91丝袜在线18| 欧美色老头old∨ideo| www激情久久| 亚洲一区二区三区三| 精品一区二区免费| 99re热视频精品| 精品国产百合女同互慰| 亚洲激情av在线| 精品一区二区三区不卡| 欧美中文字幕不卡| 国产午夜久久久久| 日韩经典一区二区| av激情亚洲男人天堂| 欧美精品xxxxbbbb| 亚洲婷婷国产精品电影人久久| 美女高潮久久久| 欧美午夜在线观看| 国产精品免费aⅴ片在线观看| 视频在线观看国产精品| av在线免费不卡| 久久综合久久99| 婷婷开心久久网| 色综合欧美在线| 国产日韩精品一区二区三区 | 亚洲欧美区自拍先锋| 免费欧美日韩国产三级电影| 色婷婷av久久久久久久| 国产亚洲成年网址在线观看| 日韩精品国产精品| 欧美亚洲动漫精品| 亚洲精品一卡二卡| 成人福利视频网站| 久久久99精品免费观看不卡| 日韩va欧美va亚洲va久久| 欧美三级中文字幕在线观看| 亚洲视频在线观看三级| 99精品视频中文字幕| 国产精品福利一区| 国产成+人+日韩+欧美+亚洲| 欧美成人精品高清在线播放 | 亚洲一卡二卡三卡四卡五卡| 成人网男人的天堂| 国产精品美女久久久久av爽李琼| 国产在线播放一区| 欧美精品一区二区三区很污很色的 | 中文字幕国产一区| 国产精品 欧美精品| 国产亚洲欧洲997久久综合| 国产精品一区在线观看乱码| 久久精品日韩一区二区三区| 国产九色精品成人porny|