0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

還不會(huì)嗎?三分鐘讓你速通Printf~

朱老師物聯(lián)網(wǎng)大講堂 ? 2024-07-27 08:11 ? 次閱讀

一、Printf簡介

Printf是一個(gè)標(biāo)準(zhǔn)的c庫API,用來打印信息顯示的。

Printf的底層輸出調(diào)用,在windows環(huán)境下是fputc函數(shù),在GNUC環(huán)境下是__io_putchar函數(shù)。

Printf主要做兩件事:第一件是將參數(shù)字符串以及可變參數(shù)進(jìn)行解析,格式化成一串字符串。第二件事就是將格式化的字符串一個(gè)字節(jié)一個(gè)字節(jié)的輸出出去(至于以什么樣的方式輸出那就得看底層的實(shí)現(xiàn)了,比如有OS的情況下就是輸出在命令行下的)。

二、串口和Printf

  • 嵌入式設(shè)備中一般有兩種調(diào)試方法,一種是硬件調(diào)試無序軟件干預(yù)(利用廠商提供的仿真器和應(yīng)用軟件),另一種是軟件調(diào)試(利用串口發(fā)送調(diào)試)。一般在系統(tǒng)初始階段串口無法使用的情況下都是用的硬件進(jìn)行調(diào)試但是這種方式不太靈活,限制很多,能用軟件調(diào)試盡量都用軟件,這種方式比較靈活。
  • 串口設(shè)備本身只能將我們寫入數(shù)據(jù)寄存器的數(shù)據(jù)發(fā)送出來,無法支持更多的功能。比如將存放十進(jìn)制的數(shù)據(jù)的變量轉(zhuǎn)換成字符形式再發(fā)出去,這樣我們?nèi)瞬抛R別。而標(biāo)準(zhǔn)庫的printf就是實(shí)現(xiàn)了這些功能。
  • Printf的第一件事主要是軟件實(shí)現(xiàn)的我們不用管,而第二件事就是輸出到那個(gè)地方,所以我們只需要將fputc或者_(dá)_io_putchar函數(shù)實(shí)現(xiàn)為串口的發(fā)送,將Printf打印的信息打印到串口助手顯示區(qū)。代碼如下:

b5b8880c-4bac-11ef-817b-92fbcf53809c.png

除此之外,我們還要再做一點(diǎn)配置工作——禁用半主機(jī)模式,禁用了半主機(jī)模式才能使用標(biāo)準(zhǔn)庫函數(shù)Printf()打印信息到串口,在程序中加入以下代碼即可。那么什么是半主機(jī)模式?為什么不用它?半主機(jī)模式是ARM單片機(jī)的一種調(diào)試機(jī)制,跟串口調(diào)試不一樣的是,它需要通過仿真器來連接電腦和ARM單片機(jī),并調(diào)用相應(yīng)的指令來實(shí)現(xiàn)單片機(jī)向電腦顯示器打印信息(或者從電腦鍵盤讀取輸入)。簡而言之,這種方法比串口調(diào)試更復(fù)雜(需要進(jìn)行更多的配置操作),也更不靈活(一定要用仿真器)。

b5d57be2-4bac-11ef-817b-92fbcf53809c.png

上面的配置似乎有點(diǎn)麻煩,要加入這么一堆難懂的代碼,難道沒有更簡便點(diǎn)的方法嗎?有,但不推薦。方法是使用微庫(MicroLIB),只要在Keil的“Options for Target -> Target ->Use MicroLIB”上打勾,即可使用串口打?。╢putc()函數(shù)還是要實(shí)現(xiàn),但上述的禁用半主機(jī)代碼不用加)。微庫是區(qū)別于C標(biāo)準(zhǔn)庫的另一個(gè)庫,當(dāng)使用微庫時(shí),就默認(rèn)關(guān)閉了半主機(jī)模式,也就不用添加上面的代碼。這樣雖然方便,但個(gè)人建議能不用就不用,原因:第一,微庫是為小內(nèi)存嵌入式設(shè)備而設(shè)計(jì)的,使用它可以減少代碼所占空間,但對現(xiàn)在STM32等單片機(jī)來說,內(nèi)存一般都夠用,微庫并非必需;第二,微庫相對于C標(biāo)準(zhǔn)庫而言,支持的功能更少,主要體現(xiàn)在對操作系統(tǒng)的支持上??偟膩碚f,標(biāo)準(zhǔn)的東西總是相對更可靠,所以不必要的掉坑,還是用C標(biāo)準(zhǔn)庫,不用微庫。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4277

    瀏覽量

    62323
  • 嵌入式設(shè)備
    +關(guān)注

    關(guān)注

    0

    文章

    110

    瀏覽量

    16925
  • Printf
    +關(guān)注

    關(guān)注

    0

    文章

    81

    瀏覽量

    13608
收藏 人收藏

    評論

    相關(guān)推薦

    免費(fèi)三分鐘

    免費(fèi)三分鐘回?fù)茈娫?,綠色的,對號碼有次數(shù)限制.有三分鐘通話時(shí)長,,反其道而行不就又是三分鐘,請各位靈活運(yùn)用(見例)假如我的電話是1301309****,而我要打的電話是1386551****.把
    發(fā)表于 03-02 17:27

    職場啟示: 三分鐘碎片化

    也無法寫好。 明白這一點(diǎn),就會(huì)意識到,有些工作的確需要大塊的時(shí)間,但如果不是提前做夠鋪墊,這些大塊的時(shí)間并不會(huì)有效率。 所以我自己的習(xí)慣是“五分鐘方案法”。也就是說: 一份完整的方案=5分鐘
    發(fā)表于 08-07 14:06

    電阻、感抗、容抗、阻抗三分鐘理清它們的關(guān)系

    電阻、感抗、容抗、阻抗究竟誰是老大?三分鐘理清它們的關(guān)系電感、電阻、電容電阻、感抗、容抗、阻抗四個(gè)名詞活躍在各種電路中,它們是什么關(guān)系了?且聽慢慢道來。一、電阻:這是我們最熟悉不過的東東了,在初中
    發(fā)表于 12-06 08:55

    程序運(yùn)行三分鐘,停一分鐘,循環(huán)下去,直到設(shè)置停止循環(huán)的位置

    本帖最后由 我想看看太陽 于 2022-6-9 11:52 編輯 這個(gè)程序運(yùn)行三分鐘,停一分鐘,循環(huán)下去,直到設(shè)置停止循環(huán)的位置,需要添加什么模塊才能實(shí)現(xiàn)呢
    發(fā)表于 06-08 15:03

    三分鐘明白電池為什么會(huì)鼓包

    三分鐘明白電
    發(fā)表于 11-12 08:18 ?7.1w次閱讀

    三分鐘能做什么?三分鐘能讓我的iPhone6s重啟N次!

    蘋果系統(tǒng)是以穩(wěn)定著稱,不過這位網(wǎng)友發(fā)來求助,稱自己的iPhone6s三分鐘時(shí)間重啟了N次。并且拍了視頻,系統(tǒng)為IOS10.2.1。
    發(fā)表于 02-25 10:18 ?2564次閱讀

    小米掃地機(jī)器人臺(tái)灣開售 三分鐘售罄

    首批小米掃地機(jī)器人于4月6日如約在臺(tái)灣地區(qū)開售,售價(jià)8895臺(tái)幣(約合1915元人民幣),開售三分鐘,5000臺(tái)掃地機(jī)器人在小米臺(tái)灣官網(wǎng)即告售罄。
    發(fā)表于 04-07 10:45 ?1227次閱讀

    三分鐘概述8類常用元器件資料下載

    電子發(fā)燒友網(wǎng)為提供三分鐘概述8類常用元器件資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計(jì)、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 03-28 08:40 ?6次下載
    <b class='flag-5'>三分鐘</b>概述8類常用元器件資料下載

    三分鐘看懂工字型功率電感外觀破損的常見原因gujing

    三分鐘看懂工字型功率電感外觀破損的常見原因gujing? 編輯:谷景電子 關(guān)于功率電感的相關(guān)問題最近給大家做了一些小科普,有關(guān)注選型的、有關(guān)于性能特點(diǎn)方面、以及有關(guān)于如何解決功率電感使用中溫升高
    發(fā)表于 11-09 13:54 ?779次閱讀
    <b class='flag-5'>三分鐘</b>看懂工字型功率電感外觀破損的常見原因gujing

    Brocade幫助Netzlink實(shí)現(xiàn)三分鐘云服務(wù)供應(yīng)

    電子發(fā)燒友網(wǎng)站提供《Brocade幫助Netzlink實(shí)現(xiàn)三分鐘云服務(wù)供應(yīng).pdf》資料免費(fèi)下載
    發(fā)表于 08-29 10:12 ?0次下載
    Brocade幫助Netzlink實(shí)現(xiàn)<b class='flag-5'>三分鐘</b>云服務(wù)供應(yīng)

    快樂解說MCU:三分鐘,帶你了解低功耗MCU

    快樂解說MCU:三分鐘,帶你了解低功耗MCU
    的頭像 發(fā)表于 09-18 10:56 ?1263次閱讀

    三分鐘實(shí)現(xiàn)MQTT協(xié)議網(wǎng)關(guān)串口連接菱FX3UPLC上傳騰訊云

    三分鐘實(shí)現(xiàn)MQTT協(xié)議網(wǎng)關(guān)串口連接菱FX3UPLC上傳騰訊云
    的頭像 發(fā)表于 10-23 16:23 ?954次閱讀
    <b class='flag-5'>三分鐘</b>實(shí)現(xiàn)MQTT協(xié)議網(wǎng)關(guān)串口連接<b class='flag-5'>三</b>菱FX3UPLC上傳騰訊云

    三分鐘看懂雪崩光電二極管

    三分鐘看懂雪崩光電二極管
    的頭像 發(fā)表于 11-23 09:09 ?1796次閱讀
    <b class='flag-5'>三分鐘</b>看懂雪崩光電二極管

    三分鐘了解飛創(chuàng)直線電機(jī)運(yùn)動(dòng)模組特點(diǎn)、選型及應(yīng)用-FCL系列

    三分鐘了解飛創(chuàng)直線電機(jī)運(yùn)動(dòng)模組特點(diǎn)、選型及應(yīng)用-FCL系列
    的頭像 發(fā)表于 02-05 16:28 ?541次閱讀
    <b class='flag-5'>三分鐘</b>了解飛創(chuàng)直線電機(jī)運(yùn)動(dòng)模組特點(diǎn)、選型及應(yīng)用-FCL系列

    Node-RED初學(xué)者教程-三分鐘學(xué)習(xí)

    通過這短短三分鐘的教程,已經(jīng)掌握了Node-RED的基本操作。可以利用Node-RED的強(qiáng)大功能來創(chuàng)建更復(fù)雜的數(shù)據(jù)流和自動(dòng)化任務(wù),無論是物聯(lián)網(wǎng)應(yīng)用、API集成還是數(shù)據(jù)處理。Node-RED簡化了編程過程,讓開發(fā)更直觀、更高效
    的頭像 發(fā)表于 06-27 17:09 ?2204次閱讀
    Node-RED初學(xué)者教程-<b class='flag-5'>三分鐘</b>學(xué)習(xí)