本帖最后由 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个显示。
|