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

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

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

關(guān)于 printf和scanf在開發(fā)STM32中的配置和應(yīng)用

黃工的嵌入式技術(shù)圈 ? 來源:黃工的嵌入式技術(shù)圈 ? 2020-03-24 10:50 ? 次閱讀

Ⅰ、寫在前面

在我們學(xué)習(xí)C語言的時(shí)候都應(yīng)該知道printf和scanf這個(gè)函數(shù),但是你們?cè)陂_發(fā)中經(jīng)常使用這個(gè)函數(shù)嗎?

在我們購買開發(fā)板配套例程以及在網(wǎng)上找的例程中或許會(huì)見到使用printf函數(shù)的地方,就有許多人問,這個(gè)printf和scanf是如何配置才能使用的?

printf和scanf串口打印功能對(duì)于學(xué)習(xí)開發(fā)的朋友是一種很好的工具,在沒有顯示屏或更多表現(xiàn)你程序運(yùn)行結(jié)果的時(shí)候,用它打印信息就能很好地解決這個(gè)問題。在實(shí)際項(xiàng)目中,用于打印某段程序運(yùn)行狀態(tài),也能幫你快速判斷程序的正確性。

Ⅱ、printf和scanf的配置

printf和scanf都知道他們是“標(biāo)準(zhǔn)函數(shù)接口”,源代碼的實(shí)現(xiàn)過程就不用我們自己寫,只需要調(diào)用就行了。

printf和scanf在軟件中要實(shí)現(xiàn)其功能,就需要對(duì)軟件及工程進(jìn)行配置,我們下面講述一下常規(guī)的配置。

配置分使用微庫和不使用微庫兩種方法,不使用微庫就是需要在代碼中多添加一段代碼,由于使用“標(biāo)準(zhǔn)函數(shù)接口”這種方式與編譯工具關(guān)系很緊密,在不同 編譯器上實(shí)現(xiàn)的方式存在不同(意思就是通用性不是很強(qiáng)),所以不建議使用這種方法。因此,我們講述使用微庫配置的方法。

1.使用微庫

我們講述MDK-ARM 和 EWARM下的配置。

MDK-ARM的使用微庫:

Project -> Options for Target -> Target 勾選上“Use Micro LIB”,如下圖:

EWARM的使用微庫:

Project -> Options -> General Options -> Library Configuration 選中“Full”,如下圖:

2.串口重定義

由于我們使用的是USART串口進(jìn)行打印數(shù)據(jù),則需要使用串口重定義。其實(shí)很簡單,就是要在源代碼中重定義兩個(gè)函數(shù):int fputc(int ch, FILE *f)和int fgetc(FILE *f)

STM32工程中:

Ⅲ、printf和scanf的使用

printf和scanf的功能這里不再描述,在你工程運(yùn)用中會(huì)逐漸明白他的用途,我們這里提供例程代碼并講述一下他們的簡單使用方法。

我們?cè)趯?shí)際應(yīng)用中,常用的應(yīng)該是printf這個(gè)函數(shù),而scanf這個(gè)函數(shù)比較少見,但也是有些地方可以使用的,比如要在某個(gè)地方傳遞參數(shù),可以通過scanf輸入?yún)?shù),以便調(diào)試。

在STM32工程代碼中簡單的應(yīng)用:

通過scanf輸入一個(gè)字符,通過pringf打印輸入的字符,代碼如下:

char GetData;

While(1)

{

scanf("%c", &GetData);

printf("GetData = %c\n", GetData);

}

基于STM32F103的實(shí)例代碼(其他配置原理一樣)我已近打包分享給大家:

基于Keil工具的代碼:

http://pan.baidu.com/s/1kUELHnL

基于IAR工具的代碼:

http://pan.baidu.com/s/1nuILwed

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

    關(guān)注

    2264

    文章

    10854

    瀏覽量

    354293
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7594

    瀏覽量

    135858
  • Printf
    +關(guān)注

    關(guān)注

    0

    文章

    81

    瀏覽量

    13608
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    芯海通用 MCU應(yīng)用筆記 : IAR 及 MDK 開發(fā)環(huán)境下使用 printf 函數(shù)重定向移植差異指南

    對(duì) printf 函數(shù)支持的差異。并在本應(yīng)用筆記結(jié)尾處給出可以一鍵移植到 Keil、IAR8.x、IAR9.x 版本下的通用重定向代碼。 Keil 和 IAR 都是常用的開發(fā)工具 IDE,實(shí)際項(xiàng)目
    發(fā)表于 05-16 11:56

    為何scanf函數(shù)的參數(shù)需要取地址?

    scanf的作用是從標(biāo)準(zhǔn)輸入緩沖區(qū)獲得一個(gè)數(shù)據(jù),放在對(duì)應(yīng)的變量里面,假設(shè)我們獲取的是一個(gè)整數(shù)。
    的頭像 發(fā)表于 04-26 17:38 ?1099次閱讀

    macos下SW4STM32編譯,調(diào)用printf異常怎么解決?

    剛開始MACOS下開發(fā)STM32的程序,現(xiàn)在出現(xiàn)了一些很奇怪的問題,看是否大家有遇到這樣的問題。 開發(fā)配置如下 1.STM32cube42
    發(fā)表于 04-17 06:48

    使用cubeIDE配置的工程printfFreeRTOS線程任務(wù)無法使用怎么解決?

    使用cubeIDE配置完工程后,對(duì)printf進(jìn)行了重映射,并且把例程的syscalls.c也拷貝到了工程,能夠使用printf輸出。但
    發(fā)表于 04-17 06:19

    stm32f103rct6 prinrf可以正常使用,但是無法使用getchar和scanf函數(shù),為什么?

    已使用如下代碼重定向,prinrf可以正常使用,但是無法使用getchar和scanf函數(shù),求大佬解答 #ifdef __GNUC__ #define PUTCHAR_PROTOTYPE int
    發(fā)表于 04-09 07:47

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

    一、Printf簡介Printf是一個(gè)標(biāo)準(zhǔn)的C庫API,用來打印信息顯示的。Printf的底層輸出調(diào)用,windows環(huán)境下是fputc函數(shù),
    的頭像 發(fā)表于 04-02 08:09 ?3210次閱讀
    <b class='flag-5'>STM32</b>的疑難雜癥之一:<b class='flag-5'>Printf</b>的使用

    求助,關(guān)于STM32CUBEIDE1.5.0使用Printf函數(shù)的疑問

    基于eclipse的,就把工程弄到STM32CUBEIDE,但怎么都不OK 自己從新從STM32CUBEMX到STM32CUBEIDE建工程,發(fā)現(xiàn)可以燒錄進(jìn)去,LED跑起來了,但是
    發(fā)表于 03-22 06:47

    解決printf無法打印輸出的問題

    包含float型的輸出!你沒辦法printf出浮點(diǎn)數(shù)。2、使用優(yōu)化過的printf,這個(gè)能輸出float型,但是中斷如果使用float輸出,就會(huì)莫名其妙的整個(gè)程
    的頭像 發(fā)表于 01-04 08:00 ?1630次閱讀
    解決<b class='flag-5'>printf</b>無法打印輸出的問題

    STM32 TrustZone 開發(fā)調(diào)試技巧— 地址安全區(qū)及資源安全屬性配置

    電子發(fā)燒友網(wǎng)站提供《STM32 TrustZone 開發(fā)調(diào)試技巧— 地址安全區(qū)及資源安全屬性配置.pdf》資料免費(fèi)下載
    發(fā)表于 12-18 11:10 ?0次下載
    <b class='flag-5'>STM32</b> TrustZone <b class='flag-5'>開發(fā)</b>調(diào)試技巧— 地址安全區(qū)及資源安全屬性<b class='flag-5'>配置</b>

    STM32WB55開發(fā)(4)----配置串口打印Debug調(diào)試信息

    STM32WB55系列微控制器上進(jìn)行開發(fā)時(shí),實(shí)時(shí)監(jiān)控應(yīng)用程序的運(yùn)行情況和調(diào)試潛在問題是至關(guān)重要的。使用串口(USART/UART)進(jìn)行Debug信息打印是一種簡便、高效的方法。下面是如何在S
    的頭像 發(fā)表于 12-01 15:48 ?1158次閱讀
    <b class='flag-5'>STM32</b>WB55<b class='flag-5'>開發(fā)</b>(4)----<b class='flag-5'>配置</b>串口打印Debug調(diào)試信息

    STM32H5開發(fā)(5)----串口打印配置

    使用STM32CUBEIDE開發(fā)STM32H5項(xiàng)目時(shí),串口打印被證明是一項(xiàng)極其有益的調(diào)試工具,能夠
    的頭像 發(fā)表于 12-01 15:04 ?903次閱讀
    <b class='flag-5'>STM32</b>H5<b class='flag-5'>開發(fā)</b>(5)----串口打印<b class='flag-5'>配置</b>

    AWorksLP應(yīng)用筆記:重定向printf函數(shù)

    printf函數(shù)作為標(biāo)準(zhǔn)庫定義的格式化輸出方式,本文將介紹其AWorksLP下默認(rèn)適配以及重映射至熱拔插設(shè)備端口的實(shí)現(xiàn)。默認(rèn)適配AWorksLP默認(rèn)已經(jīng)對(duì)printf函數(shù)完成相關(guān)適
    的頭像 發(fā)表于 11-25 08:24 ?582次閱讀
    AWorksLP應(yīng)用筆記:重定向<b class='flag-5'>printf</b>函數(shù)

    c語言scanf的正確使用及技巧

    C語言的scanf函數(shù)是用來從程序的標(biāo)準(zhǔn)輸入或文件讀取輸入的函數(shù)。它可以從鍵盤讀取用戶輸入,并將其存儲(chǔ)變量。雖然scanf函數(shù)簡單易用
    的頭像 發(fā)表于 11-24 10:04 ?4599次閱讀

    c語言怎么用scanf輸入字符串

    C語言中,我們可以使用scanf函數(shù)來接收用戶的輸入。scanf函數(shù)有很多種用法,其中一種用法就是用來接收字符串。 要接收字符串,我們可以使用"%s"格式說明符。下面是一個(gè)簡單的示例
    的頭像 發(fā)表于 11-24 10:03 ?2461次閱讀

    scanfC語言中的作用

    scanfC語言中的作用? scanf是C語言中的輸入函數(shù),用于從標(biāo)準(zhǔn)輸入設(shè)備(如鍵盤)讀取數(shù)據(jù),并將其存儲(chǔ)到變量。它是C語言中最常用的標(biāo)準(zhǔn)庫函數(shù)之一,對(duì)于控制臺(tái)交互式程序
    的頭像 發(fā)表于 11-23 14:13 ?1246次閱讀