[DemoCode下载]

ML51的Printf用法

[复制链接]
879|9
手机看帖
扫描二维码
随时随地手机跟帖
643757107|  楼主 | 2019-8-31 22:17 | 显示全部楼层 |阅读模式
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* 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 setting as prinrf output.
* @param       None
* [url=home.php?mod=space&uid=266161]@return[/url]      None
* [url=home.php?mod=space&uid=1543424]@Details[/url]     purchar.c setting use UART0, or use keil default.
*/

void main (void)
{
       
/**
For UART0 P3.1 asTXD output setting
* include uart.c in Common Setting for UART0
*/
                MFP_P16_UART0_TXD;                                                                                                                        // UART0 TXD use P5.3
                P16_QUASI_MODE;                                                                                                                           // set P5.3 as Quasi mode for UART0 trasnfer

/**
For UART0 initial setting
* include uart.c in Common Setting for UART0
*/
                UART_Open(24000000,UART0_Timer1,115200);                                // Open UART0 use timer3 as baudrate generate and baud rate = 115200en(24000000,UART0_Timer1,115200);       
                ENABLE_UART0_PRINTF;                                                                                                                                                // printf must first set TI =1;
               
/**
        UART1 loop test
        UART1 TXD1 send data received by RXD1 pin. Connect TXD1 pin and RXD1 pin check result.
*/
                while(1)
                {
//                        printf ("\n hello world! " );
                        printf ("a" );
                        Timer2_Delay(24000000,128,1000,1000);
                }

}




使用特权

评论回复
643757107|  楼主 | 2019-8-31 22:18 | 显示全部楼层
/*---------------------------------------------------------------------------------------------------------*/
/*                                                                                                         */
/* Copyright(c) 2019 Nuvoton Technology Corp. All rights reserved.                                         */
/*                                                                                                         */
/*---------------------------------------------------------------------------------------------------------*/

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

#include "ML51.h"

/**
* @brief       UART1 use as printf.
* @param       None
* @return      None
* @details     None
*/


void main (void)
{

/**
For UART1 P2.3 as TXD1 / P2.3 as RXD1 GPIO setting
* include gpio.c in Common Setting for UART0
*/
    MFP_P23_UART1_TXD;                              // UART0 TXD use P0.5
    P23_QUASI_MODE;                                 // set P0.5 and P0.6 as Quasi mode for UART0 trasnfer
/**
For UART1 initial setting
* include uart.c in Common Setting for UART0
*/
    UART_Open(24000000,UART1,115200);              // Open UART0 use timer1 as baudrate generate and baud rate = 115200en(24000000,UART0_Timer1,115200);        // Open UART0 use timer1 as baudrate generate and baud rate = 115200
    set_S1CON_TI_1;                                // printf must first set TI_1 =1;
   
/**
  UART1 loop test
  UART1 TXD1 send data received by RXD1 pin. Connect TXD1 pin and RXD1 pin check result.
*/
    while(1)
    {
      printf ("\n hello world! " );
      Timer2_Delay(24000000,128,1000,1000);        //Means timer base 24MHz, divider 128, delay time 100 ms (100000us)
    }
}

使用特权

评论回复
643757107|  楼主 | 2019-8-31 22:19 | 显示全部楼层
可以看出使用不同的串口,是略有差异的。

使用特权

评论回复
643757107|  楼主 | 2019-8-31 22:20 | 显示全部楼层
    set_S1CON_TI_1;                                // printf must first set TI_1 =1;
串口1需要使用上面的
串口0需要使用下面的
                ENABLE_UART0_PRINTF;                                                        // printf must first set TI =1;

使用特权

评论回复
643757107|  楼主 | 2019-8-31 22:20 | 显示全部楼层
我就纳闷了,为何不用宏统一一下呢。是不是

使用特权

评论回复
643757107|  楼主 | 2019-8-31 22:25 | 显示全部楼层
#define    ENABLE_UART0_PRINTF            set_SCON_TI            //For printf function must setting TI = 1

#define    ENABLE_UART1_PRINTF            set_S1CON_TI_1
仔细查看头文件,实际上是已经这么做了,所以写例程的程序员真是个**,希望这里修改一下。

使用特权

评论回复
mintspring| | 2019-9-9 00:07 | 显示全部楼层
楼上说的很科学。

使用特权

评论回复
捉虫天师| | 2019-9-11 00:05 | 显示全部楼层
是的,如果统一起来跟好了。

使用特权

评论回复
捉虫天师| | 2019-9-11 00:05 | 显示全部楼层
是的,如果统一起来跟好了。

使用特权

评论回复
捉虫天师| | 2019-9-11 00:06 | 显示全部楼层
不知道为何故意写成两种形式

使用特权

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

本版积分规则

199

主题

3689

帖子

11

粉丝