chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

STM32的printf函數(shù)重定向方法

STM32嵌入式開(kāi)發(fā) ? 來(lái)源:CSDN ? 2023-07-10 16:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

法1:使用MicroLIB庫(kù)

1.1 KEIL-MDK中的Use MicroLIB選項(xiàng)

在MDK開(kāi)發(fā)環(huán)境中,b79be2f4-1ef8-11ee-962d-dac502259ad0.png

MicroLib是缺省c庫(kù)的備選庫(kù),它可裝入少量?jī)?nèi)存中,與嵌入式應(yīng)用程序配合使用,且這些應(yīng)用程序不在操作系統(tǒng)中運(yùn)行。

MicroLib進(jìn)行了高度優(yōu)化以使代碼變得很小,功能比缺省c庫(kù)少,不具備某些ISO c特性,部分庫(kù)函數(shù)的運(yùn)行速度也比較慢,如內(nèi)存拷貝函數(shù)memcpy()。MicroLib與缺省c庫(kù)之間的主要差異在網(wǎng)上有許多文章都有寫(xiě)到,這里摘抄記錄:
  • MicroLib 不符合 ISO C 庫(kù)標(biāo)準(zhǔn)。不支持某些 ISO 特性,并且其他特性具有的功能也較少。
  • MicroLib 不符合 IEEE 754 二進(jìn)制浮點(diǎn)算法標(biāo)準(zhǔn)。
  • MicroLib 進(jìn)行了高度優(yōu)化以使代碼變得很小。
  • 無(wú)法對(duì)區(qū)域設(shè)置進(jìn)行配置。缺省 C 區(qū)域設(shè)置是唯一可用的區(qū)域設(shè)置。
  • 不能將 main() 聲明為使用參數(shù),并且不能返回內(nèi)容。
  • 不支持 stdio,但未緩沖的 stdin、stdout 和 stderr 除外。
  • MicroLib對(duì) C99 函數(shù)提供有限的支持。
  • MicroLib不支持操作系統(tǒng)函數(shù)。
  • MicroLib不支持與位置無(wú)關(guān)的代碼。
  • MicroLib不提供互斥鎖來(lái)防止非線程安全的代碼。
  • MicroLib不支持寬字符或多字節(jié)字符串。
  • 與stdlib不同,MicroLib不支持可選擇的單或雙區(qū)內(nèi)存模型。MicroLib只提供雙區(qū)內(nèi)存模型,即單獨(dú)的堆棧和堆區(qū)。
MicroLib提供了一個(gè)有限的stdio子系統(tǒng),它僅支持未緩沖的stdin、stdout和stderr,那么也就是說(shuō)勾選了Use MicroLib選項(xiàng)后,在代碼工程中就可以使用printf()函數(shù)咯?然而事實(shí)并非如此,這樣直接使用printf()函數(shù),其打印的字符串最終不知道打印到何處。我們要做的是將調(diào)試信息打印到USART1中,所以需要對(duì)printf()函數(shù)所依賴的打印輸出函數(shù)fputc()重定向(MicroLib中的printf()函數(shù)打印操作依賴fputc())。

1.2 重定向fputc函數(shù)

在MicroLib的stdio.h中,fputc()函數(shù)的原型為:b7d131f2-1ef8-11ee-962d-dac502259ad0.png此函數(shù)原本是將字符ch打印到文件指針stream所指向的文件流去的,現(xiàn)在我們不需要打印到文件流,而是打印到串口1?;谇懊娴拇a:b7e98db0-1ef8-11ee-962d-dac502259ad0.png注意,需要包含頭文件stdio.h,否則FILE類型未定義。勾選了Use MicroLib選項(xiàng),重定向fputc()函數(shù)后,我們就可以在工程代碼中使用printf()函數(shù)了:b8107fec-1ef8-11ee-962d-dac502259ad0.pngprintf()函數(shù)的使用方法跟之前一樣,運(yùn)行結(jié)果:b829fdd2-1ef8-11ee-962d-dac502259ad0.png

法2:不使用MicroLIB庫(kù)

2.1 半主機(jī)模式

半主機(jī)模式是ARM的一種機(jī)制,實(shí)現(xiàn)將來(lái)ARM應(yīng)用程序代碼的輸入/輸出請(qǐng)求傳送至運(yùn)行著調(diào)試器的主機(jī)。例如設(shè)置使用半主機(jī)模式下的ARM應(yīng)用程序,可以使用printf()和scanf()來(lái)使用主機(jī)的顯示器和鍵盤,而不需要在ARM系統(tǒng)上搭配顯示器和鍵盤。半主機(jī)通過(guò)一組定義好的軟件指令(如SVC)來(lái)實(shí)現(xiàn)的,這些指令在程序控制下產(chǎn)生異常,ARM應(yīng)用程序調(diào)用半主機(jī)對(duì)應(yīng)的異常處理函數(shù),然后調(diào)試代理處理該異常。一般的ARM應(yīng)用程序中并不需要半主機(jī)操作,在這里為確保ARM應(yīng)用程序中沒(méi)有鏈接MicroLib的半主機(jī)相關(guān)函數(shù),我們要取消ARM的半主機(jī)工作模式。

2.2 實(shí)現(xiàn)代碼

在工程中加上如下代碼:b8696634-1ef8-11ee-962d-dac502259ad0.png這樣操作后,在不使用MicroLib的前提下,仍能使用printf()函數(shù)將調(diào)試信息打印到USART1上了。

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

    關(guān)注

    37

    文章

    7329

    瀏覽量

    128653
  • STM32
    +關(guān)注

    關(guān)注

    2305

    文章

    11122

    瀏覽量

    371202
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4406

    瀏覽量

    66853

原文標(biāo)題:STM32的printf函數(shù)重定向方法

文章出處:【微信號(hào):c-stm32,微信公眾號(hào):STM32嵌入式開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    請(qǐng)問(wèn)CW32F003支持printf函數(shù)嗎?

    CW32F003支持printf函數(shù)嗎?
    發(fā)表于 11-21 07:48

    printf重定向之后無(wú)法運(yùn)行是怎么回事?

    參考 CW32F003_StandardPeripheralLib_V1.6ExamplesUARTUART_Printf,在代碼中添加了#ifdef __GNUC__ /* With GCC
    發(fā)表于 11-13 08:07

    TI Driverlib 標(biāo)準(zhǔn)輸出完整重定向的改進(jìn)方案

    探索出了一種用于TI Driverlib的完整輸出重定向方案
    的頭像 發(fā)表于 11-11 00:33 ?279次閱讀

    UART在5.2.0版本E2S中的重定向

    隨著FSP庫(kù)版本更新到5.2.0,在開(kāi)發(fā)過(guò)程中就會(huì)發(fā)現(xiàn)4.0.0版本的串口重定義并不適用于最新版本。繼續(xù)使用原來(lái)的重定向代碼時(shí),編譯器就會(huì)報(bào)錯(cuò)。根據(jù)報(bào)錯(cuò)的信息發(fā)現(xiàn),缺少了幾個(gè)函數(shù)的定義,這里補(bǔ)全定義即可。
    的頭像 發(fā)表于 10-31 15:28 ?3751次閱讀
    UART在5.2.0版本E2S中的<b class='flag-5'>重定向</b>

    printf函數(shù)在hbird SDK中的應(yīng)用

    在helloworld的例程中,使用到了printf函數(shù),通過(guò)串口輸出了數(shù)據(jù)。 在Nuclei Studio中通過(guò)teminal窗口可以查看串口打印的信息。 這背后的原理是什么? 在嵌入式
    發(fā)表于 10-31 08:48

    e203仿真helloworld例程printf能在終端顯示的原理

    名是有特殊意義的,它會(huì)將printf的字符輸出重定向到這里,通過(guò)這個(gè)函數(shù)傳遞參數(shù)、輸出數(shù)據(jù)。 __WEAK表示這個(gè)函數(shù)是弱定義。如果我們想通過(guò)其他方式
    發(fā)表于 10-27 06:56

    【RA4E2開(kāi)發(fā)板評(píng)測(cè)】FSP5.2之后的串口重定向問(wèn)題解決方法

    代碼時(shí),編譯器就會(huì)報(bào)錯(cuò)。 根據(jù)報(bào)錯(cuò)的信息發(fā)現(xiàn),缺少了幾個(gè)函數(shù)的定義,這里補(bǔ)全定義即可。 【解決方法】 在野火的教程里有提到過(guò)如何處理的方法。 添加重定向
    發(fā)表于 08-29 07:02

    STM32的DCode bus是連接到bus matrix的嗎?

    matirx的4個(gè)master的其中一個(gè),和前面圖相符,但又和參考手冊(cè)對(duì)dcode的描述不符。 以上好像描述不符的地方,我猜測(cè)這種矛盾可能的原因是,因?yàn)閟ram也可以重定向到0x00000000,當(dāng)
    發(fā)表于 06-17 07:40

    【瑞薩RA2L1入門學(xué)習(xí)】+Uasrt輸出

    ,這是因?yàn)镸CU使用的串口是TTL串口,而PC使用USB串口。 3.新建工程配置屬性 重定向printf輸出到串口 需要添加一段代碼來(lái)將 printf 輸出重定向到串口UAR
    發(fā)表于 03-31 13:47

    多晶硅錠定向凝固生長(zhǎng)方法

    鑄錠澆注法是較早出現(xiàn)的一種技術(shù),該方法先將硅料置于熔煉坩堝中加熱熔化,隨后利用翻轉(zhuǎn)機(jī)械將其注入模具內(nèi)結(jié)晶凝固,最初主要用于生產(chǎn)等軸多晶硅。近年來(lái),為提升多晶硅電池轉(zhuǎn)換效率,通過(guò)控制模具中熔體凝固過(guò)程的溫度,創(chuàng)造定向散熱條件,從而獲得定向
    的頭像 發(fā)表于 03-13 14:41 ?996次閱讀

    STM32CubeIDE STM32H743XIH6串口無(wú)法重定向,且發(fā)送內(nèi)容波特率不對(duì)亂碼怎么解決?

    STM32CubeIDE重定向無(wú)效果,且使用HAL_UART_Transmit(&huart1, (uint8_t *)\"0123rn\", sizeof
    發(fā)表于 03-11 06:42

    DeepSeek獲殊榮,成為ai.com重定向官網(wǎng)

    近日,記者發(fā)現(xiàn),在瀏覽器中輸入“ai.com”這一頂級(jí)域名時(shí),頁(yè)面將直接重定向至DeepSeek的官方網(wǎng)站。這一變化引起了業(yè)界的廣泛關(guān)注,標(biāo)志著DeepSeek在人工智能領(lǐng)域的地位得到了高度認(rèn)可
    的頭像 發(fā)表于 02-11 15:41 ?858次閱讀

    全面掌握Linux重定向技巧:讓命令行操作效率翻倍的秘密

    #1 linux輸出重定向 $ command > file 2>1 這里的 ,表示重定向的目標(biāo)不是一個(gè) 文件 ,而是一個(gè) 文件描述符 ,內(nèi)置的文件描述符如下 1 => stdout2
    的頭像 發(fā)表于 01-08 10:19 ?756次閱讀

    stdio.h實(shí)現(xiàn)了printf函數(shù)?

    我們平時(shí)包含的 stdio.h 頭文件,里面是不是實(shí)現(xiàn)了 printf 函數(shù)? 為什么會(huì)有這個(gè)疑問(wèn)?因?yàn)槊看问褂?printf,就得包含 stdio.h ,這就導(dǎo)致很多同學(xué)誤以為,stdio.h
    的頭像 發(fā)表于 12-18 10:28 ?873次閱讀

    【RA-Eco-RA4E2-64PIN-V1.0開(kāi)發(fā)板試用】02、UART串口通信

    = 1; break; } default: break; } } 還是在debug_bsp_uart.c文件中,加入重定向 printf 輸出的函數(shù) /* 重定向
    發(fā)表于 12-14 11:44