新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > kinetis的UART串口(DMA模式)

        kinetis的UART串口(DMA模式)

        作者: 時間:2012-11-05 來源:網絡 收藏

        _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接收對應的DMA1未使用中斷,在這里也同時對其重設目的地址并啟動

        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 下一頁

        關鍵詞: 模式 DMA 串口 UART kinetis

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 南丰县| 潮州市| 淮滨县| 呼图壁县| 普安县| 肃宁县| 南充市| 岐山县| 巴林右旗| 铁力市| 电白县| 渭南市| 北辰区| 河间市| 南木林县| 宁晋县| 行唐县| 图片| 德令哈市| 来凤县| 手游| 庆城县| 阿克苏市| 清远市| 嘉定区| 二连浩特市| 扶沟县| 股票| 黄平县| 南投县| 东台市| 安多县| 开化县| 登封市| 屯留县| 南丰县| 苍山县| 靖西县| 米易县| 仁寿县| 江安县|