| 本帖最后由 ddllxxrr 于 2015-3-27 22:04 编辑 
 PDC 是Peripheral DMA Controller的缩写就是平时的DMA,只不过Atmle换一了个说法。
 
 DMA有很多好处比如可以让CPU休息,而节省的开销,同时DMA可以外设到内存,内存到内存,内存到外设传输。
 
 平分方便。
 
 这个例程是把接收缓冲设为5等到5个进,就发生中断,然后再由UART发出去。
 
 #define BUFFER_SIZE  5
 
 
 PDC的配置如下:
 
 
 //! [pdc_config]
        /* Get pointer to UART PDC register base */
        g_p_uart_pdc = uart_get_pdc_base(CONSOLE_UART);
        /* Initialize PDC data packet for transfer */
        g_pdc_uart_packet.ul_addr = (uint32_t) g_uc_pdc_buffer;
        g_pdc_uart_packet.ul_size = BUFFER_SIZE;
        /* Configure PDC for data receive */
        pdc_rx_init(g_p_uart_pdc, &g_pdc_uart_packet, NULL);
        /* Enable PDC transfers */
        pdc_enable_transfer(g_p_uart_pdc, PERIPH_PTCR_RXTEN | PERIPH_PTCR_TXTEN);
        //! [pdc_config]
 而设USART中断如下:
 
 
 运行结果:/* Enable UART IRQ */
        //! [uart_irq]
        uart_enable_interrupt(CONSOLE_UART, UART_IER_RXBUFF);
        //! [uart_irq]
        /* Enable UART interrupt */
        //! [uart_nvic_irq]
        NVIC_EnableIRQ(CONSOLE_UART_IRQn);
        //! [uart_nvic_irq]
 
 
 
 我每输到5个字符,程序马上发送出去。在屏幕上看到5个5个显示。
 
 |