姓名:楊虎成
學(xué)號(hào):16020311003
轉(zhuǎn)載自:https://kuaibao.qq.com/s/20171208A0T9AV00?,有刪節(jié)
【嵌牛導(dǎo)讀】:在學(xué)習(xí)單片機(jī)的過(guò)程中,學(xué)會(huì)使用仿真器校焦,用仿真器設(shè)置斷點(diǎn)赊抖、單步調(diào)試是一種非惩车梗快速和有效的查找問(wèn)題的方法寨典,但是手邊沒(méi)有仿真器、沒(méi)有預(yù)留仿真接口房匆,要查看變量的變化該怎么辦耸成?
【嵌牛鼻子】:仿真器、Data_Send(pllmull)浴鸿、Printf()井氢、寄存器、keil
【嵌牛提問(wèn)】:怎樣用C語(yǔ)言使用Printf實(shí)現(xiàn)串口打釉懒础花竞?
【嵌牛正文】:在學(xué)習(xí)單片機(jī)的過(guò)程中,學(xué)會(huì)使用仿真器掸哑,用仿真器設(shè)置斷點(diǎn)约急、單步調(diào)試是一種非常快速和有效的查找問(wèn)題的方法苗分,但是手邊沒(méi)有仿真器厌蔽、沒(méi)有預(yù)留仿真接口,要查看變量的變化該怎么辦摔癣?這時(shí)候也是有辦法的奴饮,通常的做法,把串口引出來(lái)择浊,把串口寄存器配置好戴卜,通過(guò)RS232或者RS485來(lái)查看變量的狀態(tài)和程序的運(yùn)行方法,這時(shí)候只需要將數(shù)據(jù)發(fā)送函數(shù)添加到需要查看變量的下發(fā)即可琢岩,程序執(zhí)行數(shù)據(jù)發(fā)送函數(shù)就可以將變量的值發(fā)送到調(diào)試助手中投剥,供我們查看。如下所示粘捎,就可以通過(guò)Data_Send(pllmull)來(lái)查看pllmull的值薇缅。
圖片發(fā)自簡(jiǎn)書App
除此之外,還有一種非常簡(jiǎn)便的方法攒磨,就是使用Printf()函數(shù)泳桦,這個(gè)函數(shù)我們都不陌生。在C語(yǔ)言的第一堂課娩缰,我們都學(xué)過(guò)“Hello world”這個(gè)程序灸撰,這個(gè)程序就是通過(guò)Printf()函數(shù)來(lái)實(shí)現(xiàn)的。再來(lái)懷舊一下:
圖片發(fā)自簡(jiǎn)書App
使用單片機(jī)同樣可以使用printf()函數(shù),下面來(lái)介紹使用方法浮毯。
1. 添加頭文件支持
printf()函數(shù)位于“stdio.h”文件中完疫,所以第一步就是要添加該頭文件;
2. 添加重定向函數(shù)
需要添加的重定向函數(shù)如下:
圖片發(fā)自簡(jiǎn)書App
重定向函數(shù)寫法固定债蓝,但是根據(jù)單片機(jī)不同壳鹤、串口號(hào)不同,需要修改饰迹,以上函數(shù)使用的是片上資源USART1芳誓。之所以需要重定向是因?yàn)閜rintf()是格式化輸出函數(shù),可以按規(guī)定格式向標(biāo)準(zhǔn)設(shè)備輸出打印信息啊鸭,但是單片機(jī)并不是一個(gè)標(biāo)準(zhǔn)的輸出設(shè)備锹淌,所以在使用的時(shí)候需要借助重定向,將printf()重定向至UART中赠制。所以上面代碼的作用就是將重定向指向UART赂摆。
3. 配置串口寄存器
這一步就是配置串口通信的參數(shù),所涉及的參數(shù)如波特率钟些、數(shù)據(jù)長(zhǎng)度烟号、停止位、校驗(yàn)位等厘唾,這一塊就是純單片機(jī)的配置方式褥符,大家可以參考下面這篇文章:
4. keil的設(shè)置
最后一步,需要對(duì)keil做一下設(shè)置抚垃,
圖片發(fā)自簡(jiǎn)書App
在Target標(biāo)簽中喷楣,勾選USE MicroLIB選項(xiàng).
通過(guò)以上三部就可以實(shí)現(xiàn)單片機(jī)的串口打印了。效果如下:
圖
作者:大周公子
鏈接:http://www.reibang.com/p/5fa970b1dffd
來(lái)源:簡(jiǎn)書
著作權(quán)歸作者所有鹤树。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)铣焊,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。