日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > 單片機 > 單片機
[導(dǎo)讀]最近遇到需要MCU輸出數(shù)字的問題,而STM32的串口輸出的是字符型,最先想到的方法是將整型數(shù)據(jù)轉(zhuǎn)換為字符型輸出,C庫函數(shù)中提供了相關(guān)的函數(shù)參考:http://www.cnblogs.com/processakai/archive/2011/06/24/2089348.html

最近遇到需要MCU輸出數(shù)字的問題,而STM32的串口輸出的是字符型,最先想到的方法是將整型數(shù)據(jù)轉(zhuǎn)換為字符型輸出,C庫函數(shù)中提供了相關(guān)的函數(shù)

參考:http://www.cnblogs.com/processakai/archive/2011/06/24/2089348.html

http://c.biancheng.net/cpp/html/1573.html


C語言中使用printf()函數(shù)輸出是非常方便功能非常強大的,如果能將printf()函數(shù)使用到串口上,能實現(xiàn)非常多的強大輸出功能,極大方便我們使用串口輸出功能。


printf()函數(shù)是輸出到顯示器,而MCU是沒有顯示器的,要使他輸出到串口,需要重定向該函數(shù)

printf()函數(shù)中調(diào)用fputc()函數(shù),只要對該函數(shù)進行重定向,即可實現(xiàn)功能

//使用printf()函數(shù)要添加頭文件“stdio.h"

#include "stdio.h"

//printf()函數(shù)重定向到USART2

int fputc(int ch,FILE *f)

{

//ch送給USART

USART_SendData(USART2, ch);

//等待發(fā)送完畢

while(!USART_GetFlagStatus(USART2, USART_FLAG_TC)) ;

//返回ch

return ch;

}

庫函數(shù)中有宏定義

#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

所以也可以寫為

PUTCHAR_PROTOTYPE

{

//ch送給USART1

USART_SendData(USART2, ch);

//等待發(fā)送完畢

while(!USART_GetFlagStatus(USART2, USART_FLAG_TC)) ;

//返回ch

return ch;

}

完整原文(網(wǎng)上copy來的,這個是定向到USART1):

#ifdef __GNUC__

#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

#else

#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

#endif

PUTCHAR_PROTOTYPE

{

USART_SendData(USART1, (uint8_t) ch);

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

return ch;

}

但是這樣做之后在KEIL中仍然不能正常輸出,網(wǎng)上查到原因是printf()函數(shù)使用標(biāo)準(zhǔn)庫,標(biāo)準(zhǔn)庫中包括printf()等函數(shù)使用了半主機模式,導(dǎo)致無法運行(見參考)

解決辦法:

1,使用微庫,在工程屬性的Target->Code Generation中勾選Use MicroLIB

2, 重新實現(xiàn)庫中某些函數(shù),避免使用標(biāo)準(zhǔn)庫(見參考)

參考:http://blog.csdn.net/wdscq1234/article/details/7944036

http://www.openedv.com/posts/list/3172.htm


本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀
關(guān)閉