• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 手機與無線通信 > 設計應用 > 基于dsPIC33FJ128MC506的CAN通信(07-100)

    基于dsPIC33FJ128MC506的CAN通信(07-100)

    ——
    作者:山東省科學院自動化研究所 張云 李明強 莊汝科 時間:2009-03-04 來源:電子產品世界 收藏

      接收過濾寄存器和屏蔽寄存器的設置

    本文引用地址:http://www.czjhyjcfj.com/article/92042.htm

      /* 下面的函數用來設置接收過濾器"n" ,各輸入參數的意義分別為:

      n-> 過濾器號,范圍為[0-15]

      identifier-> 合法的標識符

      exide -> 是否擴展數據幀,"0" 表示為標準數據幀,"1"表示為擴展數據幀

      bufPnt -> 過濾后的信息存放的緩沖區,范圍為[0-15]

      maskSel -> 關連的屏蔽寄存器[0-3] */

      void ecan1WriteRxAcptFilter(int n, long identifier, unsigned int exide, unsigned int bufPnt, unsigned int maskSel)

      {

      /*定義局部變量*/

      unsigned long sid10_0=0, eid15_0=0, eid17_16=0;

      unsigned int *sidRegAddr,*bufPntRegAddr,*maskSelRegAddr, *fltEnRegAddr;

      /*因為將要設置的特殊寄存器要與別的寄存器共用地址,所以需設置控制位WIN*/

      C1CTRL1bits.WIN=1;

      /* 根據輸入的參數,計算出相應寄存器的地址,包括濾波器n的地址、緩沖指針寄存器地址、相關的屏蔽寄存器的地址及接收過濾使能寄存器的相關位*/

      // 接過過濾寄存器的地址

      sidRegAddr = (unsigned int *)(&C1RXF0SID + (n << 1));

      //報文緩沖區地址

      bufPntRegAddr = (unsigned int *)(&C1BUFPNT1 + ((n >> 2)*2) ) ;

      //屏蔽寄存器地址

      maskSelRegAddr = (unsigned int *)(&C1FMSKSEL1 + ((n >> 3)*2));

      //過濾器使能地址



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 绥宁县| 吉水县| 合肥市| 上饶市| 凌海市| 台安县| 宜阳县| 龙胜| 武宣县| 怀仁县| 游戏| 东明县| 九江县| 唐海县| 视频| 平陆县| 梧州市| 乌拉特后旗| 建宁县| 万全县| 吴堡县| 咸阳市| 宜州市| 永德县| 雷州市| 霍山县| 随州市| 香河县| 皋兰县| 铜陵市| 乡城县| 红桥区| 明光市| 庄浪县| 大港区| 铜陵市| 大余县| 五大连池市| 叙永县| 兴国县| 清远市|