在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > S3C2440在MDK4.22下使用printf向串口打印調(diào)試

            S3C2440在MDK4.22下使用printf向串口打印調(diào)試

            作者: 時(shí)間:2016-11-19 來(lái)源:網(wǎng)絡(luò) 收藏
            背景知識(shí):

            串口的基本知識(shí)已經(jīng)在上一篇講過了。這里重點(diǎn)講解如何在MDK4.22下使用printf函數(shù),這樣的話就可以很方便的打印調(diào)試信息,追蹤。

            本文引用地址:http://www.biyoush.com/article/201611/318140.htm

            這個(gè)知識(shí)來(lái)源于MDK自帶的幫助手冊(cè)。有現(xiàn)成的代碼提供。

            實(shí)現(xiàn)方式有2種,使用標(biāo)準(zhǔn)C庫(kù)下裁剪合適的函數(shù),使用微庫(kù)C下裁剪合適的函數(shù)。

            微庫(kù)下的情況,在魔術(shù)棒那里要勾選上使用微庫(kù)。然后需要定義如下結(jié)構(gòu)和改寫如下函數(shù)--FILE stdout fputc ferror。

            標(biāo)準(zhǔn)庫(kù)的情況,也是需要關(guān)注FILE stdout fputc ferror。注意網(wǎng)上很多文章說(shuō),在標(biāo)準(zhǔn)庫(kù)下,需要關(guān)掉半主機(jī)模式,我嘗試過,關(guān)掉后,需要定義_sys_exit函數(shù),可以達(dá)到效果,但是如果不關(guān)掉半主機(jī)模式,和微庫(kù)一樣也只定義該定義的,也可以達(dá)到效果。不知道,是不是MDK版本升級(jí)后,已經(jīng)統(tǒng)一了兩種模式。

            具體代碼:

            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 worldrn");}

            最終可以在UART0上打印hello world,這樣以后程序就可以拿來(lái)復(fù)用了!


            關(guān)鍵詞: S3C2440MDK4.22printf串口打

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉