<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函數進(jìn)行串口打印輸出

單片機使用printf函數進(jìn)行串口打印輸出

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

由說(shuō)明文件可以看出,我們可以改寫(xiě)這個(gè)底層的putchar函數來(lái)適應不同的硬件。keil里面的putchar函數是默認用串行口輸出信息的,我們可以自由定義成另外的輸出模塊,比如自定義IO向1602液晶輸出信息。

keil的printf函數大致搞明白了,回頭再研究下IAR for MSP430,可惜,我沒(méi)有能夠查看該軟件標準函數庫里的printf.c 和 putchar.c,不過(guò)我覺(jué)得程序沒(méi)有通過(guò)串口向電腦打印輸出信息,是因為底層的putchar函數沒(méi)有定義為通過(guò)MSP430G2553的UART進(jìn)行輸出,那如果我自己重定向一個(gè)putchar函數,覆蓋掉標準函數庫里面的putchar,是不是就能夠輸出了呢。于是編寫(xiě)putchar函數如下:

int putchar(int c)

{

if(c == )

{

while(UCA0STAT & UCBUSY);

UCA0TXBUF = ;

}

while(UCA0STAT & UCBUSY);

UCA0TXBUF = c;

return c;

}

編譯后,輸出完全正確。大功告成。

將測試程序向大家展示一下,希望能幫到大家。

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

uart.c

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include

void UartInit()

{

BCSCTL1 = CALBC1_1MHZ; // Set DCO

DCOCTL = CALDCO_1MHZ;

BCSCTL2 &= ~(DIVS_3);

P1SEL = BIT1 + BIT2 ; // P1.1 = RXD, P1.2=TXD

P1SEL2 = BIT1 + BIT2; // P1.1 = RXD, P1.2=TXD

UCA0CTL1

= UCSSEL_2; // SMCLK

UCA0BR0 = 104; // 1MHz 9600

UCA0BR1 = 0; // 1MHz 9600

UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1

UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**

UC0IE

= UCA0RXIE; // Enable RX int

}

int putchar(int c)

{

if(c == )

{

while(UCA0STAT & UCBUSY);

UCA0TXBUF = ;

}

while(UCA0STAT & UCBUSY);

UCA0TXBUF = c;

return c;

}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

main.c

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#include

#include "uart.h"

#include "stdio.h"

void main()

{

float value = 123.123456789;

char *string="http://www.hao123.com";

WDTCTL = WDTPW + WDTHOLD;

UartInit();

printf("value = %f%s",value,string);

while(1);

}


上一頁(yè) 1 2 下一頁(yè)

關(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>