打印
[Atmel]

跑一下SAM4N例程(十七):PDC_UART

[复制链接]
1083|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 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个显示。

相关帖子

沙发
okyouwin| | 2015-3-30 18:08 | 只看该作者
,前排,学习学习。多谢斑竹。

使用特权

评论回复
板凳
dirtwillfly| | 2015-3-31 17:25 | 只看该作者
感谢分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2398

主题

6948

帖子

66

粉丝