[DemoCode下载] PDMA串口到内存

[复制链接]
680|7
 楼主| 598330983 发表于 2019-9-29 23:38 | 显示全部楼层 |阅读模式
  1. /*---------------------------------------------------------------------------------------------------------*/
  2. /*                                                                                                         */
  3. /* Copyright(c) 2019 Nuvoton Technology Corp. All rights reserved.                                         */
  4. /*                                                                                                         */
  5. /*---------------------------------------------------------------------------------------------------------*/

  6. //***********************************************************************************************************
  7. //  Website: http://www.nuvoton.com
  8. //  E-Mail : MicroC-8bit@nuvoton.com
  9. //***********************************************************************************************************

  10. #include "ML51.h"

  11. /**
  12. * [url=home.php?mod=space&uid=247401]@brief[/url]        PDMA receiv from UART2(SC0) RX demo.
  13. * @param       None
  14. * [url=home.php?mod=space&uid=266161]@return[/url]      None
  15. * [url=home.php?mod=space&uid=1543424]@Details[/url]     after PDMA transfer done UART2 RX data in XRAM 0x100 start area.
  16. */

  17. unsigned char xdata RxDatabuffer[100] _at_ 0x100;
  18. unsigned char ct;


  19. void PDMA0_ISR(void) interrupt 20          // Vector [url=home.php?mod=space&uid=72445]@[/url]  0xA3
  20. {
  21.   PDMA_Close(PDMA0);
  22.   SFRS=0;DMA0TSR=0;
  23.   printf (" \n PDMA receiv UART2 RX finish! " );
  24. }

  25. void main (void)
  26. {

  27. /* Enable UART0 for printf function*/   
  28.     MFP_P31_UART0_TXD;
  29.     P31_QUASI_MODE;
  30.     UART_Open(24000000,UART0_Timer3,115200);
  31.     ENABLE_UART0_PRINTF;
  32.    
  33. /* Enable UART2 RX */      
  34.     MFP_P55_UART2_RXD;
  35.     P55_INPUT_MODE;
  36.     UART_Open(24000000,UART2,115200);
  37.   
  38. /* Clear XRAM base address area to 00h */
  39.     for(ct=0;ct<10;ct++)
  40.     {
  41.       RxDatabuffer[ct]=0;
  42.     }
  43. /* Define PMDA function as UART RX to memory, define base address and PDMA receive length */   
  44.     PDMA_Open(PDMA0,SMCRX,0x100,100);
  45. /* Define interrupt after full transfer */
  46.     PDMA_Interrupt_Enable(PDMA0,PDMAFULLINT);
  47. /* Global interrupt enable */
  48.     ENABLE_GLOBAL_INTERRUPT;
  49. /* Start PDMA transfer */
  50.     PDMA_Run(PDMA0);

  51.     while(1);

  52. }





 楼主| 598330983 发表于 2019-9-29 23:38 | 显示全部楼层
这个例子展示了如何通过串口接收数据写入到内存中。非常非常有用啊。
wahahaheihei 发表于 2019-9-30 11:48 | 显示全部楼层
学习一下,写满了怎么处理
yiy 发表于 2019-11-9 17:19 | 显示全部楼层
这个应用比较好,减轻了CPU负担,提高了系统可靠性。
xuanhuanzi 发表于 2019-11-10 16:24 | 显示全部楼层
unsigned char xdata RxDatabuffer[100] _at_ 0x100;
关键内容。
xuanhuanzi 发表于 2019-11-10 16:24 | 显示全部楼层
在指定的内存地址定义一个数据数组。
xuanhuanzi 发表于 2019-11-10 23:04 | 显示全部楼层
认真研究了一下这个例子,收获很多
dongliushui 发表于 2019-11-10 23:09 | 显示全部楼层
非常赞,学会了不少。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

267

主题

5575

帖子

22

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