[DemoCode下载]

ML51串口接收演示。

[复制链接]
409|10
手机看帖
扫描二维码
随时随地手机跟帖
mintspring|  楼主 | 2020-7-23 10:51 | 显示全部楼层 |阅读模式
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* 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]       UART0 Transfer and receive with interrupt subroutine.
* @param       None
* [url=home.php?mod=space&uid=266161]@return[/url]      None
* [url=home.php?mod=space&uid=1543424]@Details[/url]     Result stroage in XRAM UIDBuffer[0:8];
*/

unsigned char uart_receive_data,bufhead;
bit receiveFlag,bufOverFlag;

unsigned char my[10];
unsigned char i=0;


void Serial_ISR (void) interrupt 4
{
    if (RI)
    {   
        receiveFlag = 1;
        uart_receive_data = SBUF;
        clr_SCON_RI;                                         // Clear RI (Receive Interrupt).
    }
    if (TI)
    {      
        clr_SCON_TI;                                         // Clear TI (Transmit Interrupt).
    }
}


void main (void)
{
    MFP_P46_GPIO;
    P46_PUSHPULL_MODE;
/**
For UART0 P0.5 asTXD output setting
* include uart.c in Common Setting for UART0
*/
    MFP_P31_UART0_TXD;                              /* set P3.1 and P3.0 as Quasi mode for UART0 trasnfer */
    MFP_P30_UART0_RXD;
    P31_QUASI_MODE;                                 
    P30_QUASI_MODE;
    UART_Open(24000000,UART0_Timer1,115200);      // Open UART0 use timer1 as baudrate generate and baud rate = 115200
    ENABLE_UART0_PRINTF;
#if 0
    UART_Interrupt_Enable(UART0,Enable);
   
    while(1);   

#else
/**
  UART0 loop test
  UART0 TXD send data received by RXD pin. Connect TXD pin and RXD pin check result.
*/  
    do{
      unsigned char temp;
      temp = UART_Receive_Data(UART0);
      UART_Send_Data(UART0,temp);
                       
                        my[i++]=temp;
                        if(i>=10)
                        {
                                UART_Send_Data(UART0,'a');
                                for(i=0;i<10;i++)
                                UART_Send_Data(UART0,my[i]);
                                for(i=0;i<10;i++)
                                my[i]=0;
                                i=0;
               
                        }


                       
    }while(1);
#endif
}





使用特权

评论回复
mintspring|  楼主 | 2020-7-23 10:52 | 显示全部楼层
在官方例子基础上修改的,
通过定义一个字符串,将电脑发送给MCU的字符存入,然后当存满后,一次打印出来。这里没有采用printf

使用特权

评论回复
mintspring|  楼主 | 2020-7-23 10:53 | 显示全部楼层
经过测试使用printf的话,就卡住了。。目前还没研究是什么原因。

使用特权

评论回复
gaoyang9992006| | 2020-7-23 11:59 | 显示全部楼层
试试调试模式。看看能否定位到卡克地方。

使用特权

评论回复
幸福小强| | 2020-7-23 18:02 | 显示全部楼层
可以可以。

使用特权

评论回复
21mengnan| | 2020-7-23 20:52 | 显示全部楼层
神神叨叨的,啥意思。

使用特权

评论回复
玛尼玛尼哄| | 2020-7-23 21:52 | 显示全部楼层
多谢分享。

使用特权

评论回复
玛尼玛尼哄| | 2020-7-23 21:52 | 显示全部楼层
方法可以。

使用特权

评论回复
mintspring|  楼主 | 2020-7-23 22:11 | 显示全部楼层
干的漂亮。

使用特权

评论回复
643757107| | 2020-7-24 21:33 | 显示全部楼层
可以可以,看看学习学习。

使用特权

评论回复
jiekou001| | 2020-7-25 09:07 | 显示全部楼层
深入学习。

使用特权

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

本版积分规则

281

主题

4801

帖子

23

粉丝