在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32的疑難雜癥之一:Printf的使用

朱老師物聯網大講堂 ? 2024-04-02 08:09 ? 次閱讀

一、Printf簡介

Printf是一個標準的C庫API,用來打印信息顯示的。Printf的底層輸出調用,在windows環境下是fputc函數,在GNUC環境下是__io_putchar函數。Printf主要做兩件事:第一件是將參數字符串以及可變參數進行解析,格式化成 一串字符串。第二件事就是將格式化的字符串一個字節一個字節的輸出出去(至于以什么樣的方式輸出那就得看底層的實現了,比如有OS的情況下就是輸出在命令行下的)。52a1b8ce-f085-11ee-9118-92fbcf53809c.gif

二、Printf和串口

嵌入式設備中一般有兩種調試方法,一種是硬件調試無需軟件干預(利用廠商提供的仿真器和應用軟件),另一種是軟件調試(利用串口發送調試)。一般在系統初始階段串口無法使用的情況下都是用的硬件進行調試但是這種方式不太靈活,限制很多,能用軟件調試盡量都用軟件,這種方式比較靈活。

串口設備本身只能將我們寫入數據寄存器的數據發送出來,無法支持更多的功能。比如將存放十進制的數據的變量轉換成字符形式再發出去,這樣我們人才識別。而標準庫的printf就是實現了這些功能。

printf的第一件事主要是軟件實現,這個已經由C標準實現了我們不用管;而第二件事就是將printf格式化好的字符串輸出到那個設備。所以我們只需要將fputc或者__io_putchar函數實現為串口的發送,然后通過USB轉串口硬件發送到上位機上,上位機再通過串口助手程序顯示出來。代碼如下:

52b08cf0-f085-11ee-9118-92fbcf53809c.png

除此之外,我們還要再做一點配置工作—禁用半主機模式,禁用了半主機模式才能使用標準庫函數printf()打印信息到串口,在程序中加入以下代碼即可。

那么什么是半主機模式?為什么不用它?半主機模式是ARM單片機的一種調試機制,跟串口調試不一樣的是,它需要通過仿真器來連接電腦和ARM單片機,并調用相應的指令來實現單片機向電腦顯示器打印信息(或者從電腦鍵盤讀取輸入)。簡而言之,這種方法比串口調試更復雜(需要進行更多的配置操作),也更不靈活(一定要用仿真器)。

5309d120-f085-11ee-9118-92fbcf53809c.png

上面的配置似乎有點麻煩,要加入這么一堆難懂的代碼,難道沒有更簡便點的方法嗎?有,但不推薦。

方法是使用微庫(MicroLIB),只要在Keil的“Options for Target -> Target ->Use MicroLIB”上打勾,即可使用串口打印(fputc()函數還是要實現,但上述的禁用半主機代碼不用加)。

微庫是區別于C標準庫的另一個庫,當使用微庫時,就默認關閉了半主機模式,也就不用添加上面的代碼。這樣雖然方便,但個人建議能不用就不用,原因:

第一,微庫是為小內存嵌入式設備而設計的,使用它可以減少代碼所占空間,但對現在STM32等單片機來說,內存一般都夠用,微庫并非必需。

第二,微庫相對于C標準庫而言,支持的功能更少,主要體現在對操作系統的支持上??偟膩碚f,標準的東西總是相對更可靠,所以為了不必要的掉坑,還是用C標準庫,不用微庫。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2281

    文章

    10970

    瀏覽量

    360302
  • 函數
    +關注

    關注

    3

    文章

    4359

    瀏覽量

    63512
收藏 人收藏

    評論

    相關推薦

    解決射頻電路的疑難雜癥的方法分享

    射頻電路板設計由于在理論上還有很多不確定因素,因此統稱為“疑難雜癥”。對于初入茅廬的工程師而言,缺乏實戰經驗,自己獨立應變能力較差,本文更適合給剛剛踏入電源行業的工程師,希望有助于工程師們遇到那些“疑難雜癥”時,可以從容應對。
    發表于 10-21 13:48

    二層板的射頻RF信號如何控阻抗 四層板的射頻RF信號如何控阻抗?射頻信號是否可以不控阻抗,精選資料分享

    來自專治PCB疑難雜癥主群(五大群群友突破2000人啦,添加楊老師微信號Johnnyyang206,可添加入群)的疑難雜癥討論:二層板的射頻如何走線 四層板的射頻如何控阻抗 射頻信號是否可以不控阻抗
    發表于 07-27 07:44

    飛控疑難雜癥解決方法匯總

    (pixhawk)飛控疑難雜癥解決方法匯總(持續更新)by 怒飛垂云2019年11月4日APM無法解鎖/飛控連不上/黃燈閃爍/起飛側翻/定點定不住/定高不穩/電臺連不上/地面站連不上……無人機調試
    發表于 08-06 06:21

    DC/DC電源輸入輸出要隔離嗎

    DC/DC電源輸入輸出要隔離還是要保證短距離回路?關注微信公眾號:專治pcb疑難雜癥 (PCBDoctor) 解決遇到的各種PCB疑難雜癥。整理:楊老師 專治PCB疑難雜癥群平臺簡介專治PCB
    發表于 11-16 07:28

    減少DC-DC輸出端紋波的方法

    來自專治PCB疑難雜癥總群的疑難雜癥解析(添加楊醫生微信號:johnnyyang206可入群討論): 關注楊醫生微信公眾號:專治pcb疑難雜癥 (PCBDoctor) 解決遇到的各種PCB疑難
    發表于 11-17 06:54

    電源平面是否可以作為RF信號

    轉自專治pcb疑難雜癥Q:來自專治PCB疑難雜癥首群:四層板,層疊走TOP-GND-POWER-BOTTOM,做共面阻抗,參考第三層的話,剛好天線下面的第三層區域走的電源3V3,有影響嗎?還是天線
    發表于 12-31 08:17

    人工智能解決了許多的疑難雜癥

    深度學習目前取得重大進展,解決了人工智能界的盡最大努力很多年仍沒有進展的疑難雜癥
    發表于 06-29 10:25 ?841次閱讀

    3D打印康復輔具 為疑難雜癥的治療帶來新的可能

    句祝你平安、愿你健康,飽含的是祝福者滿滿的真誠與心意。當身體遭受病痛的折磨時,人們心中懷有的心愿就是早日恢復健康,能夠像往常樣自由的嬉笑打鬧、蹦蹦跳跳。高科技的迅速發展,正為疑難雜癥的治療帶來新的可能。醫生和患者,也成為了接
    的頭像 發表于 03-17 14:12 ?2005次閱讀

    在vscode上用gcc征服debug過程中遇到的各種疑難雜癥

    vscode上用gcc征服debug過程中遇到的各種疑難雜癥! 2. 安裝MinGW MinGW是什么東西,怎么安裝?這里就不詳述了,隨便百度出來堆。
    的頭像 發表于 11-18 16:18 ?5238次閱讀

    RF射頻信號,高速信號能將電源平面作為參考平面嗎?

    來自專治PCB疑難雜癥主群(五大群群友突破2000人啦,添加楊老師微信號Johnnyyang206,可添加入群)的疑難雜癥:Q:來自專治PCB疑難雜癥首群:四層板,層疊走
    發表于 11-06 21:06 ?10次下載
    RF射頻信號,高速信號能將電源平面作為參考平面嗎?

    DC/DC電源輸入輸出要隔離還是要保證短距離回路?

    來自專治PCB疑難雜癥主群(群友突破1200人啦,添加楊老師微信號Johnnyyang206,可添加入群)的疑難雜癥:DC/DC電源輸入輸出要隔離還是要保證短距離回路?關注微信公眾號:專治pcb
    發表于 11-09 15:51 ?16次下載
    DC/DC電源輸入輸出要隔離還是要保證短距離回路?

    如何減少DC-DC輸出端的紋波?

    ?來自專治PCB疑難雜癥總群的疑難雜癥解析(添加楊醫生微信號:johnnyyang206可入群討論):????關注楊醫生微信公眾號:專治pcb疑難雜癥 (PCBDoctor) 解決遇到的各種PCB
    發表于 11-09 19:06 ?2次下載
    如何減少DC-DC輸出端的紋波?

    Linux問題故障定位大全

    有時候會遇到疑難雜癥,并且監控插件并不能眼立馬發現問題的根源。
    的頭像 發表于 07-10 10:27 ?556次閱讀
    Linux問題故障定位大全

    羅盤為什么會出現Bad Compass Health

    pixhawk飛控疑難雜癥解決方案
    發表于 11-27 09:38 ?0次下載

    STM32編程疑難雜癥

    疑難雜癥
    的頭像 發表于 03-28 23:29 ?592次閱讀
    <b class='flag-5'>STM32</b>編程<b class='flag-5'>疑難雜癥</b>
    主站蜘蛛池模板: 国产精品二区三区免费播放心 | 最新理论三级中文在线观看 | 97爱爱爱 | 免费在线看片网站 | 天天看黄色| 色噜噜噜噜噜在线观看网站 | 国内精品伊人久久大香线焦 | 日本天天射 | 91色吧| 人人做人人爽久久久精品 | 亚洲国产激情在线一区 | 国产在线操 | 欧美性69 | 乱子伦xxx欧美 | 午夜视频在线观看免费高清 | 夜夜夜操| 亚洲无卡 | 性香港xxxxx免费视频播放 | 三级在线网站 | 97综合久久 | 日本人zzzwww | 99久久婷婷国产综合精品电影 | 四虎网站在线播放 | 六月丁香激情综合成人 | 亚洲日韩色图 | 男人和女人做爽爽视频在线观看 | 久久精品伊人波多野结 | 看真人一级毛多毛片 | 人人看人人做人人爱精品 | 久久久久久国产精品免费 | 天天操天天干天天玩 | 亚洲一区在线视频 | 一区二区亚洲视频 | 深夜视频在线观看免费 | 狠狠色丁香六月色 | 五月天婷婷色 | 97天天干| 色无五月 | 亚洲视频一区网站 | 四大名著成人高h肉版 | 国产黄在线观看免费观看不卡 |