打印
[DemoCode下载]

PDMA串口到内存

[复制链接]
488|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
598330983|  楼主 | 2019-9-29 23:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2019 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

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

#include "ML51.h"

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

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


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

void main (void)
{

/* Enable UART0 for printf function*/   
    MFP_P31_UART0_TXD;
    P31_QUASI_MODE;
    UART_Open(24000000,UART0_Timer3,115200);
    ENABLE_UART0_PRINTF;
   
/* Enable UART2 RX */      
    MFP_P55_UART2_RXD;
    P55_INPUT_MODE;
    UART_Open(24000000,UART2,115200);
  
/* Clear XRAM base address area to 00h */
    for(ct=0;ct<10;ct++)
    {
      RxDatabuffer[ct]=0;
    }
/* Define PMDA function as UART RX to memory, define base address and PDMA receive length */   
    PDMA_Open(PDMA0,SMCRX,0x100,100);
/* Define interrupt after full transfer */
    PDMA_Interrupt_Enable(PDMA0,PDMAFULLINT);
/* Global interrupt enable */
    ENABLE_GLOBAL_INTERRUPT;
/* Start PDMA transfer */
    PDMA_Run(PDMA0);

    while(1);

}





使用特权

评论回复
沙发
598330983|  楼主 | 2019-9-29 23:38 | 只看该作者
这个例子展示了如何通过串口接收数据写入到内存中。非常非常有用啊。

使用特权

评论回复
板凳
wahahaheihei| | 2019-9-30 11:48 | 只看该作者
学习一下,写满了怎么处理

使用特权

评论回复
地板
yiy| | 2019-11-9 17:19 | 只看该作者
这个应用比较好,减轻了CPU负担,提高了系统可靠性。

使用特权

评论回复
5
xuanhuanzi| | 2019-11-10 16:24 | 只看该作者
unsigned char xdata RxDatabuffer[100] _at_ 0x100;
关键内容。

使用特权

评论回复
6
xuanhuanzi| | 2019-11-10 16:24 | 只看该作者
在指定的内存地址定义一个数据数组。

使用特权

评论回复
7
xuanhuanzi| | 2019-11-10 23:04 | 只看该作者
认真研究了一下这个例子,收获很多

使用特权

评论回复
8
dongliushui| | 2019-11-10 23:09 | 只看该作者
非常赞,学会了不少。

使用特权

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

本版积分规则

246

主题

5384

帖子

22

粉丝