串行通訊——使用printf函數(shù)
對于沒有仿真器的板子來說,串口是一個非常好的調(diào)試工具,你可以將你需要觀察的變量
通過串口發(fā)送到PC上進(jìn)行后續(xù)分析,進(jìn)行調(diào)試。這里主要介紹在Keil C中怎么使用串口來
調(diào)試程序。
程序代碼如下:
#include
#include
void serial_init(void);
void main()
{
serial_init();
while(1)
{
printf("Hello,Serial Portn";
}
}
void serial_init(void)//串口初始化函數(shù)
{
TMOD = 0x20;//T1工作方式1,用于設(shè)定波特率
TH1= 0xF3;//波特率4800Bps,12MHz晶振
TL1= 0xF3;
PCON |= 0x80; //SMOD = 1,波特率加倍
SCON = 0x50;//允許發(fā)送接收
ES = 0; //禁止串口中斷
TI = 1;
TR1= 1;
}
需要注意的是單片機(jī)晶振是12MHz(否則波特率設(shè)置將不正確)。
建立工程,編譯,進(jìn)入調(diào)試界面,選擇菜單里的"Peripheraals"-"Serial"項(xiàng),看到的是串口設(shè)置的
界面,可以看到,在未進(jìn)行串口初始化之前,串口的參數(shù)都是0x00,其他選項(xiàng)也沒有置位。
按 F10進(jìn)入單步調(diào)試,執(zhí)行serial_init函數(shù),我們看到串口已經(jīng)初始化好,波特率為4806。串口初始化好之后,我們就可以使用printf函數(shù) 輸出自己需要的信息了(注意需要有stdio.h文件)。這里,我們只輸出了簡單的字符串信息示例。選擇菜單"View"-“Serial Window #1”,可以看到空白的
區(qū)域,這是串口信息顯示的地方,執(zhí)行printf函數(shù),可以看到在屏幕上打印出了“Hello,Serial Port”字樣。
在實(shí)際硬件上調(diào)試程序過程中,我們在遇到問題時候可以通過這種方式觀察相關(guān)變量的值,調(diào)試程序,程序沒問題之后就可以將printf函數(shù)去掉了。