<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > kinetis的UART串口(DMA模式)

          kinetis的UART串口(DMA模式)

          作者: 時間:2012-11-05 來源:網(wǎng)絡(luò) 收藏

          _TCD0_SOFF = 1;//每次操作完源地址,源地址增加1

          _TCD0_DOFF = 0;//每次操作完目標地址,目標地址不增加

          _TCD0_SLAST = 0;//DMA完成一次輸出之后即major_loop衰減完之后不更改源地址

          DMA_TCD0_DLASTSGA = 0;//DMA完成一次輸出之后即major_loop衰減完之后不更改目標地址

          DMA_TCD0_CITER_ELINKNO = 100;

          DMA_TCD0_BITER_ELINKNO = 100;

          DMA_TCD0_CSR = 0;

          DMA_TCD0_CSR |= DMA_CSR_INTMAJOR_MASK;

          DMA_TCD0_CSR |= DMA_CSR_DREQ_MASK;

          NVICISER0 |= 10;//;//使能中斷NVICISERn=1

          DMA_ERQ |= (1 0);//啟動

          }

          void dma1_init()

          {

          //SIM_SCGC6 |= SIM_SCGC6_DMAMUX_MASK;

          DMAMUX_CHCFG1 = (17) | 12;

          //SIM_SCGC7 |= SIM_SCGC7_DMA_MASK;

          //DMA_CR = 0;

          DMA_TCD1_SADDR = (unsigned long)5_D;//DMA源地址

          DMA_TCD1_DADDR = (unsigned long)uart_rx.buf[0];//DMA目的地址

          DMA_TCD1_NBYTES_MLNO = 1;

          DMA_TCD1_ATTR = 0;//8位傳送

          DMA_TCD1_SOFF = 0;//每次操作完源地址,源地址不增加

          DMA_TCD1_DOFF = 1;//每次操作完目標地址,目標地址增加1

          DMA_TCD1_SLAST = 0;//DMA完成一次輸出之后即major_loop衰減完之后不更改源地址

          DMA_TCD1_DLASTSGA = 0;//DMA完成一次輸出之后即major_loop衰減完之后不更改目標地址

          DMA_TCD1_CITER_ELINKNO = 100;

          DMA_TCD1_BITER_ELINKNO = 100;

          DMA_TCD1_CSR = 0;

          DMA_TCD1_CSR = ~DMA_CSR_INTMAJOR_MASK;

          DMA_TCD1_CSR |= DMA_CSR_DREQ_MASK;

          DMA_ERQ |= (1 1);//啟動

          }

          int main(void)

          {

          int i;

          MCG_Init();

          dma0_init();

          dma1_init();

          _Init();

          for(i=0;i100;i++)

          {

          uart_tx.buf[i] = i;

          uart_rx.buf[i] = 0;

          }

          uart_tx.index = 1;

          uart_rx.index = 0;

          printf(Hello (Kinetis) World in 'C' from MK60DX256Z derivative! nr);

          5_C2 |= 13;

          for(;;)

          {

          }

          return 0;

          }

          void dam0_isr(void)

          {

          static unsigned char cnt=0;

          DMA_INT = 0x1; // clear dma int flag

          cnt++;

          memset(uart_tx.buf,cnt,100);

          DMA_TCD0_SADDR = (unsigned long)uart_tx.buf[0];//DMA源地址

          DMA_ERQ |= (1 0);//啟動

          //與UART接收對應(yīng)的DMA1未使用中斷,在這里也同時對其重設(shè)目的地址并啟動

          DMA_TCD1_DADDR = (unsigned long)uart_rx.buf[0];

          DMA_ERQ |= (1 1);//啟動

          }

          將“_sysinit.c”的“__vect_table”中16號中斷“(tIsrFunc)UNASSIGNED_ISR”換成“(tIsrFunc)dam0_isr”


          上一頁 1 2 下一頁

          關(guān)鍵詞: 模式 DMA 串口 UART kinetis

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();