<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機中printf函數的重映射

單片機中printf函數的重映射

作者: 時(shí)間:2016-11-26 來(lái)源:網(wǎng)絡(luò ) 收藏
一、源自于:大俠有話(huà)說(shuō)

1.如果你在學(xué)習單片機之前學(xué)過(guò)C語(yǔ)言,那么一定知道printf這個(gè)函數.它最最好用的功能

本文引用地址:http://dyxdggzs.com/article/201611/321833.htm

除了打印你想要的字符到屏幕上外,還能把數字進(jìn)行格式化.例如十進(jìn)制的33,用十進(jìn)制

方式輸出就是33,用十六進(jìn)制的形式就輸出成21,如果用字符形式輸出,那就是ASCII碼

表對應的’!’.

2. 51年代,一些人軟件仿真的時(shí)候也很喜歡使用printf,但實(shí)際代碼運行中,用的人則不多,因

為別說(shuō)51年代,就是用AVR的,也會(huì )覺(jué)得printf這個(gè)函數耗費的CPU資源相當可觀(guān).所以

printf在8位單片機時(shí)代,熟悉的人的確不多.但到了ARM時(shí)代,情況則大為不同.畢竟

ARM的處理能力和51完全不是一個(gè)級別,這使得不少人開(kāi)始喜歡使用printf在實(shí)際項目

中作為調試過(guò)程的串口輸出.因為它的格式化功能實(shí)在是相當方便.

而本例程就是教會(huì )你這么使用printf.

3.程序把printf的輸出對象設定為串口1.有一個(gè)標準的函數是必須要自己定義的,那就是

fputc,把這個(gè)函數的功能寫(xiě)成串口輸出一個(gè)字符.建議在串口的初始化模塊中定義

int fputc(int ch)

{

USART_SendData(USART1, (u8) ch);

while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);

return ch;

}

然后記得一點(diǎn),就是MicroLib要勾上.其實(shí)大部分情況下,都建議使用MDK附帶的

MicroLib,這東西是有一定用途的.留待以后再更多地介紹.

以上兩步做好后,還記得要包含printf的頭文件:

#include

那么,所有工作就大功告成了,你可以盡情的嘗試printf帶來(lái)的便利.

4.另外大家是否意識到一點(diǎn),就是printf輸出到哪,其實(shí)是由fputc函數決定的.所以如果有興

趣,可以改寫(xiě)這個(gè)fputc函數,使得其printf的對象是DX-32板上的TFT屏或者黑白屏.大家有

興趣的不妨試試.

二、源自于:STM32開(kāi)發(fā)板(正點(diǎn)原子)

//加入以下代碼,支持printf函數,而不需要選擇use MicroLIB

#if 1

#pragma import(__use_no_semihosting)

//標準庫需要的支持函數

struct __FILE

{

int handle;

};

FILE __stdout;

//定義_sys_exit()以避免使用半主機模式

_sys_exit(int x)

{

x = x;

}

//重定義fputc函數 ,串口1

int fputc(int ch, FILE *f)

{

while((USART1->SR&0X40)==0);//循環(huán)發(fā)送,直到發(fā)送完畢

USART1->DR = (u8) ch;

return ch;

}

#endif



關(guān)鍵詞: 單片機printf函數重映

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>