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

[复制链接]
1434|2
 楼主| ddllxxrr 发表于 2015-3-27 22:03 | 显示全部楼层 |阅读模式
本帖最后由 ddllxxrr 于 2015-3-27 22:04 编辑

PDC 是Peripheral DMA Controller的缩写就是平时的DMA,只不过Atmle换一了个说法。

DMA有很多好处比如可以让CPU休息,而节省的开销,同时DMA可以外设到内存,内存到内存,内存到外设传输。

平分方便。

这个例程是把接收缓冲设为5等到5个进,就发生中断,然后再由UART发出去。

#define BUFFER_SIZE  5


PDC的配置如下:

  1. //! [pdc_config]
  2.         /* Get pointer to UART PDC register base */
  3.         g_p_uart_pdc = uart_get_pdc_base(CONSOLE_UART);

  4.         /* Initialize PDC data packet for transfer */
  5.         g_pdc_uart_packet.ul_addr = (uint32_t) g_uc_pdc_buffer;
  6.         g_pdc_uart_packet.ul_size = BUFFER_SIZE;

  7.         /* Configure PDC for data receive */
  8.         pdc_rx_init(g_p_uart_pdc, &g_pdc_uart_packet, NULL);

  9.         /* Enable PDC transfers */
  10.         pdc_enable_transfer(g_p_uart_pdc, PERIPH_PTCR_RXTEN | PERIPH_PTCR_TXTEN);
  11.         //! [pdc_config]


而设USART中断如下:

  1. /* Enable UART IRQ */
  2.         //! [uart_irq]
  3.         uart_enable_interrupt(CONSOLE_UART, UART_IER_RXBUFF);
  4.         //! [uart_irq]

  5.         /* Enable UART interrupt */
  6.         //! [uart_nvic_irq]
  7.         NVIC_EnableIRQ(CONSOLE_UART_IRQn);
  8.         //! [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

2404

主题

7001

帖子

68

粉丝
快速回复 在线客服 返回列表 返回顶部