久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

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

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

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

  DMA2通道初始化為E1接收:

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

  void dma2init(void)

  {

  DMACS0=0; //清DMA控制器狀態位

  DMA2CON=0x0020; //DM為外設間接尋址模式,支持從DMA寫,并讀到外設

  DMA2PAD=0x0440; //DMA0PAD下載為E1接收寄存器的地址

  DMA2CNT=0x0007; //傳輸計數寄存器為8

  DMA2REQ=0x0022; //DMA外設REQ編號選擇位

  DMA2STA= __builtin_dmaoffset(&ecan1msgBuf[2][0]); //DMA起始地址位

  DMA2CONbits.CHEN=1;

  }

  上面程序中的“DMA0STA= __builtin_dmaoffset(ecan1msgBuf);”和“ DMA2STA= __builtin_dmaoffset(&ecan1msgBuf[2][0]); ”分別指明了DMA的起始地址位為ecan1msgBuf和(&ecan1msgBuf[2][0],ecan1msgBuf是一個兩維數組,在相關頭文件中定義,其語句為:

  E1緩沖器的設置:

  #define ECAN1_MSG_BUF_LENGTH 4 //長度為4個字

  //緩沖區為二維數據

  typedef unsigned int ECAN1MSGBUF [ECAN1_MSG_BUF_LENGTH][8];

  //數組位于DMA空間

  extern ECAN1MSGBUF ecan1msgBuf __attribute__((space(dma)));



評論


相關推薦

技術專區

關閉