您的位置首页百科知识

Nuvoton N76E003 UART在Keil中printf格式化输出

Nuvoton N76E003 UART在Keil中printf格式化输出

的有关信息介绍如下:

Nuvoton N76E003 UART在Keil中printf格式化输出

在单片机开发中我们经常需要打印调试信息以到快速快发和方便调试的效果。

M0以上内核的单片机在Keil上可以使用printf函数和J-Link自带的RTT Viewer,但在8051内核单片机在Keil上只能使用printf函数输出打印调试信息来加快开发,因此学习8051内核在Keil上的printf重定向格式化输出是非常重要的。

本经验主要介绍Nuvoton N76E003 UART1在Keil中printf重定向格式化输出,其他8051内核单片机在Keil上printf重定向格式化输出原理一致。

【1】打开Keil uVision4 C51 IDE并建立好Nuvoton相应的工程。Nuvoton单片机在Keil上开发需要使用Nuvoton Keil的插件,可以到Nuvoton的官网上去下载.

【2】在已建好的工程中添加延时函数、UART1初始化函数、

UART1 prinf重定向函数、主函数。

【3】延时函数-->简单的延时 看清效果

【4】UART1初始化函数-->UART1引脚方向类型定义、波特率设置、数据位设置、奇偶校验位设置、停止位设置,本经验中使用TIM3作为UART1的波特率发生器。

【5】prinf重定向函数-->将UART1的输出重新定向到printf函数中

【6】主函数-->设置所有IO为准双向IO、初始化UART1、printf打印本次编译时间、每隔一段时间打印一次程序运行次数。

【1】简单延时函数

void Delayms(u16 i)//Delay ms

{

u16 x=0, y=0;

for(x=0; x<1000; x++)

for(y=0; y

}

【2】UART1初始化函数

void InitialUART1_Timer3(u32 u32Baudrate)//Initial UART1 Timer3

{

P02_Quasi_Mode; //Setting UART pin as Quasi mode for transmit

P16_Quasi_Mode; //Setting UART pin as Quasi mode for transmit

SCON_1 = 0x50; //UART1 Mode1,REN_1=1,TI_1=1

T3CON = 0x08; //T3PS2=0,T3PS1=0,T3PS0=0(Prescale=1), UART1 in MODE 1

clr_BRCK;

#ifdef FOSC_160000

RH3 = HIBYTE(65536 - (1000000/u32Baudrate)-1); //16 MHz

RL3 = LOBYTE(65536 - (1000000/u32Baudrate)-1);

#endif

#ifdef FOSC_166000

RH3 = HIBYTE(65536 - (1037500/u32Baudrate)); //16.6 MHz

RL3 = LOBYTE(65536 - (1037500/u32Baudrate));

#endif

set_TR3; //Trigger Timer3

TI_1 = 1; //For printf function must setting TI = 1

}

【3】UART1 prinf重定向函数

char putchar (char c)//for UART1_printf

{

while (!TI_1);//wait until transmitter ready

TI_1 = 0;

SBUF_1 = c;//output character

return (c);

}

【4】主函数

void main (void)

{

u16 count = 0;

Set_All_GPIO_Quasi_Mode;

InitialUART1_Timer3(115200);//InitialUART1_Timer3

printf("Complie Time:%s\r\n", __TIME__);//Complie Time

while(1)

{

printf("System Runing Count: %d\r\n", count++);

Delayms(220);

}

}

【1】编程Nuvoton整个项目工程直到没有错误并生成.hex文件

【2】打开新塘芯片烧录软件NuMicro ICP Programming Tool选择好目标芯片8051 1T系列,连接到新塘烧录器Nu-Link,载入文件APROM选择生成.hex文件。

【3】单击右下角的选项设置,勾选擦除、烧写、验证,其他选项默认就好了,也可以根据自己的实际情况经行选择,最后确定。

【4】单击配置值-->设定选项,设置启动项为APROM启动、设置P20复位引脚功能选择、设置DCD调试模式小PWM输出转态、设置LDROM区域选择、设置欠电压设定、设置看门狗WDT时钟选择,最后确定退出。

【5】通过NuMicro ICP Programming Tool将生成的.hex下载到Nuvoton N76E003 Target目标板中,点击开始按钮知道程序下载成功

【1】打开串口调试助手XCOM V2.0,在电脑上的设置管理器上查看相应的 COM口,并在串口调试助手XCOM V2.0选择相应的COM号、波特率、数据位、停止位。校验位,这些值要与UART初始化的值一致,否则没有数据输出或者乱码。

【2】查看打印的信息是否正确

【3】在串口调试助手XCOM V2.0上可以看到详细数据,第一行打印出本次编译的时间,后面每隔一段时间就打印出System Runing Count的次数,与我们预期的效果一直,因此本次Nuvoton N76E003 UART在Keil中printf格式化输出成功