您的位置 首页 报告

S3C2440在MDK4.22下运用printf向串口打印调试

背景知识:串口的基本知识已经在上一篇讲过了。这里重点讲解如何在MDK4.22下使用printf函数,这样的话就可以很方便的打印调试信息,追踪。…

布景常识:

串口的基本常识现已在上一篇讲过了。这儿要点解说如安在MDK4.22下运用printf函数,这样的话就能够很便利的打印调试信息,追寻。

这个常识来源于MDK自带的协助手册。有现成的代码供给。

完成方法有2种,运用规范C库下裁剪适宜的函数,运用微库C下裁剪适宜的函数。

微库下的状况,在戏法棒那里要勾选上运用微库。然后需求界说如下结构和改写如下函数–FILE stdout fputc ferror。

规范库的状况,也是需求重视FILE stdout fputc ferror。留意网上许多文章说,在规范库下,需求关掉半主机形式,我尝试过,关掉后,需求界说_sys_exit函数,能够到达作用,可是假如不关掉半主机形式,和微库相同也只界说该界说的,也能够到达作用。不知道,是不是MDK版别晋级后,现已一致了两种形式。

详细代码:

uart.c

#include "S3C2440.h"#include "uart.h"void init_uart0(void){rULCON0 = 0x03;  rUCON0 = (0x05);//15---12   	11-10		9		8		7				6						5		 4			3-2				1-0//not pclk/n	pclk		Tpulse	Rpulse	timeout disable	rx error int disable   loop dis  break dis	int or poll		int or pollrUFCON0 = 0x00;	  			rUMCON0 = 0x0; 				rUBRDIV0 = UART_BRDIV;}struct __FILE  {  int handle;  /* Whatever you require here. If the only file you are using is */  /* standard output using printf() for debugging, no file handling */  /* is required. */  };  /* FILE is typedef’ d in stdio.h. */  FILE __stdout;  int fputc(int ch, FILE *f) { WrUTXH0_L(ch); /* Loop until the end of transmission */ while(!(rUTRSTAT0 & TXD0READY)) ;return ch; } int ferror(FILE *f) {/* Your implementation of ferror */return EOF;}

main.c

#include "S3C2440.h"#include "uart.h"#include int main(void){	init_uart0();printf("hello world\r\n");}

终究能够在UART0上打印hello world,这样今后程序就能够拿来复用了!

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/264939.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部