[DemoCode下载] ML的低功耗模式下使用PDMA

[复制链接]
1139|15
 楼主| 734774645 发表于 2020-5-31 22:01 | 显示全部楼层 |阅读模式
  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. //***********************************************************************************************************
  11. //  File Function: ML51 simple GPIO toggle out demo code
  12. //***********************************************************************************************************

  13. #include "ML51.h"


  14. /**
  15. * [url=home.php?mod=space&uid=247401]@brief[/url]       Low power run mode Memory to memory function demo
  16. * @param       None
  17. * [url=home.php?mod=space&uid=266161]@return[/url]      None
  18. * [url=home.php?mod=space&uid=1543424]@Details[/url]     
  19. */

  20. unsigned char xdata RxDatabuffer[100] _at_ 0x100;
  21. unsigned char xdata finalbuffer _at_ 0x263;
  22. unsigned char i;

  23. void PDMA1_ISR(void) interrupt 21          // Vector [url=home.php?mod=space&uid=72445]@[/url]  0xAB
  24. {
  25.   PDMA_Close(PDMA1);
  26.   clr_DMA1TSR_FDONE;
  27.   clr_DMA1TSR_HDONE;
  28. }

  29. void main (void)
  30. {
  31.     ALL_GPIO_QUASI_MODE;

  32.     for(i=0;i<100;i++)
  33.     {
  34.       RxDatabuffer[i]=i;
  35.     }
  36. /* Define PMDA function as memory to memory, and setting base address */   
  37.     PDMA_Open(PDMA1,XRAM_XRAM,0x100,0x80);
  38. /* Define destination memory address */   
  39.     PDMA_MTM_DestinationAddress(PDMA1,0x200);
  40. /* Define interrupt after full transfer */   
  41.     PDMA_Interrupt_Enable(PDMA1,PDMAFULLINT);
  42.     ENABLE_GLOBAL_INTERRUPT;
  43.    
  44.     FsysSelect(FSYS_LIRC);
  45.     set_PCON_LPR;
  46.     PDMA_Run(PDMA1);

  47.     while(1);
  48. }





 楼主| 734774645 发表于 2020-5-31 22:02 | 显示全部楼层
  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. //***********************************************************************************************************
  11. //  File Function: ML51 simple GPIO toggle out demo code
  12. //***********************************************************************************************************

  13. #include "ML51.h"

  14.     unsigned char xdata RxDatabuffer[100] _at_ 0x100;
  15.     unsigned char ct;
  16. /**
  17. * @brief       Low power run mode UART TX or receive demo
  18. * @param       None
  19. * @return      None
  20. * @details     
  21. */

  22. void PDMA0_ISR(void) interrupt 20          // Vector @  0xA3
  23. {  
  24. /* if need check with XRAM PDMA value, should enable following part */
  25. //  clr_PCON_LPR;
  26. //  FsysSelect(FSYS_HIRC);
  27. /* ******************** */
  28.   PDMA_Close(PDMA0);
  29.   SFRS=0;DMA0TSR=0;
  30. /*only for check PDMA reciverd */
  31. //  while(1)
  32. //  {
  33. //    P14=0;
  34. //    P14=1;
  35. //  }
  36. //  printf (" \n PDMA receiv UART2 RX finish! " );
  37. /* ****** */
  38. }
  39.    
  40.    
  41. void main (void)
  42. {

  43. #if 1  
  44.     MFP_P46_CLKO;
  45.     P46_QUASI_MODE;
  46.     set_CKCON_CLOEN;
  47.   
  48.     MFP_P54_UART2_TXD;
  49.     P54_QUASI_MODE;
  50.     LowPower_LIRC_UART2_4800_init();
  51.   
  52. /*Enable Low power run mode */  
  53.     FsysSelect(FSYS_LIRC);
  54.     set_PCON_LPR;
  55.   
  56.     while(1)
  57.     {
  58.       LowPower_UART2_Send_Data(0x55);
  59.       _delay_();
  60.     }
  61. #else
  62.     All_GPIO_QUASI_MODE;
  63.     MFP_P14_GPIO;
  64.    
  65. /* Enable UART2 RX */      
  66.     MFP_P55_UART2_RXD;
  67.     P55_INPUT_MODE;
  68.     LowPower_LIRC_UART2_4800_init();
  69.   
  70. /* Clear XRAM base address area to 00h */
  71.     for(ct=0;ct<10;ct++)
  72.     {
  73.       RxDatabuffer[ct]=0;
  74.     }
  75. /* Define PMDA function as UART RX to memory, define base address and PDMA receive length */   
  76.     PDMA_Open(PDMA0,SMCRX,0x100,5);
  77. /* Define interrupt after full transfer */
  78.     PDMA_Interrupt_Enable(PDMA0,PDMAFULLINT);
  79. /* Global interrupt enable */
  80.     ENABLE_GLOBAL_INTERRUPT;
  81. /* Start PDMA transfer */
  82.     PDMA_Run(PDMA0);
  83.    
  84. /*Enable Low power run mode */  
  85.     FsysSelect(FSYS_LIRC);
  86.     set_PCON_LPR;
  87.   
  88.     while(1);
  89. #endif   

  90. }



 楼主| 734774645 发表于 2020-5-31 22:03 | 显示全部楼层
ML51 run in low power run mode with enable PDMA function to execute memory to memory function
 楼主| 734774645 发表于 2020-5-31 22:03 | 显示全部楼层
ML51 run in low power run mode and enable UART2 receive data storage in XRAM with PDMA enable.
598330983 发表于 2020-5-31 22:04 | 显示全部楼层
例子不错,学习学习。
zhuotuzi 发表于 2020-5-31 22:47 | 显示全部楼层
还用到了中断
gejigeji521 发表于 2020-5-31 23:36 来自手机 | 显示全部楼层
支持的运行方式挺多的
xuanhuanzi 发表于 2020-6-2 23:32 | 显示全部楼层
没看太明白,怎么移动位置的
gejigeji521 发表于 2020-6-3 20:52 | 显示全部楼层
我也有楼上的疑问。
antusheng 发表于 2020-6-4 21:18 | 显示全部楼层
我猜就是中断下实现。中断会唤醒低功耗。
antusheng 发表于 2020-6-6 08:58 | 显示全部楼层
体验了一下,这个低功耗真棒。
heimaojingzhang 发表于 2020-6-6 14:41 | 显示全部楼层
非常感谢楼主分享
keaibukelian 发表于 2020-6-6 14:42 | 显示全部楼层
新唐的芯片好强大
labasi 发表于 2020-6-6 14:42 | 显示全部楼层
确实非常不错
paotangsan 发表于 2020-6-6 14:42 | 显示全部楼层
想块块的试试去
renzheshengui 发表于 2020-6-6 14:43 | 显示全部楼层
楼主辛苦了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

211

主题

3588

帖子

15

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