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