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

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

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

STM32串口格式化輸出的幾種方法介紹

冬至子 ? 來(lái)源:紛紜雜談 ? 作者:CY_CHEN ? 2023-07-22 10:16 ? 次閱讀

在前兩天介紹的串口輸出中,函數(shù)Usart1_SendStr只能輸出字符串,如果想輸出一個(gè)整型或者其他類型的數(shù)據(jù),單獨(dú)用這個(gè)函數(shù)是不能實(shí)現(xiàn)的。今天跟大家簡(jiǎn)單介紹下格式化輸出,讓輸出不再只有字符串。

格式化輸出有****3種方法 :sprintf結(jié)合usart輸出;使用MicroLIB調(diào)用printf輸出;重定向輸出。

1、sprintf結(jié)合usart輸出

sprintf指的是字符串格式化命令,主要功能是把格式化的數(shù)據(jù)寫入某個(gè)字符串中。sprintf 是個(gè)變參函數(shù)。

函數(shù)原型

int sprintf( char *buffer, const char *format, [ argument] … );

參數(shù)列表:

buffer :char型指針,指向?qū)⒁獙懭氲淖址木彌_區(qū)。

format :格式化字符串。

[argument]... :可選參數(shù),可以是任何類型的數(shù)據(jù)。

通過(guò)sprintf把想要輸出的數(shù)據(jù)格式化為字符串?dāng)?shù)據(jù),再調(diào)用Usart1_SendStr就能輸出任意想要輸出的數(shù)據(jù)了。

2、使用MicroLIB調(diào)用printf輸出

圖片

勾選Use MicroLIB,調(diào)用printf,再開啟半主機(jī)模式,就可以輸出數(shù)據(jù)了。但是使用MicroLIB存在bug,在跑操作系統(tǒng)時(shí)偶爾會(huì)出現(xiàn)死機(jī)的現(xiàn)象,所以這種方法不推薦使用。

3、重定向輸出

圖片

Keil下載路徑下找到Retarget.c文件,打開并復(fù)制整個(gè)文件,粘貼到串口源文件中,做一定的修改,如下所示。

#pragma import(__use_no_semihosting_swi)


struct __FILE { int handle; /* Add whatever you need here */ };
FILE __stdout;


int fputc(int ch, FILE *f) {
  while((USART1- >SR & (1< 7)) == 0);
  USART1- >DR = ch;
  return ch;
}


int ferror(FILE *f) {
  /* Your implementation of ferror */
  return EOF;
}


void _sys_exit(int return_code) {
  while (1);    /* endless loop */
}

修改完成后,就可以直接調(diào)用printf輸出任意類型的數(shù)據(jù)了。這種方法跑操作系統(tǒng)時(shí)不會(huì)有bug,為了避免后期跑操作系統(tǒng)出現(xiàn)死機(jī)或其它bug,推薦使用這種重定向輸出的方法。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2258

    文章

    10828

    瀏覽量

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

    關(guān)注

    0

    文章

    31

    瀏覽量

    5865
  • USART串口
    +關(guān)注

    關(guān)注

    0

    文章

    32

    瀏覽量

    6784
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    介紹stm32串口isp實(shí)現(xiàn)方法

    這里介紹stm32串口isp實(shí)現(xiàn)方法,包含st官方協(xié)議整理和實(shí)現(xiàn)代碼。已提交到github 。概述stm32
    發(fā)表于 08-05 07:15

    使用STM32 BSP中的串口驅(qū)動(dòng)在串口輸出HelloWorld

    目錄前言串口初始重定向C庫(kù)的printf函數(shù)到串口在main中添加測(cè)試代碼完整的main.c代碼編譯下載程序效果擴(kuò)展實(shí)驗(yàn)1:格式化字符
    發(fā)表于 08-11 06:22

    怎樣將stm32串口格式化打印字符的函數(shù)進(jìn)行封裝呢

    怎樣將stm32串口格式化打印字符的函數(shù)進(jìn)行封裝呢?
    發(fā)表于 11-26 06:38

    基于RTOS的STM32串口通信有哪幾種方法

    串行端口的通信方式是指什么?基于RTOS的STM32串口通信有哪幾種方法呢?
    發(fā)表于 12-07 08:03

    有什么方法可以實(shí)現(xiàn)stm32串口接受不定長(zhǎng)數(shù)據(jù)呢

    有什么方法可以實(shí)現(xiàn)stm32串口接受不定長(zhǎng)數(shù)據(jù)呢?有哪幾種方法?
    發(fā)表于 12-08 06:59

    2.6 python字符格式化

    2.6 python字符格式化格式化輸出,主要有三種方式使用 % 進(jìn)行格式化使用 format 函數(shù)進(jìn)行
    發(fā)表于 02-21 16:28

    格式化硬盤

    格式化硬盤 軟盤只需要一次格式化,硬盤卻需要兩級(jí),即低級(jí)格式化和高級(jí)格式化?! ∮脖P的低級(jí)格式化在每個(gè)磁片上劃分
    發(fā)表于 12-25 15:40 ?1071次閱讀

    格式化是什么

    格式化(format)是指對(duì)磁盤或磁盤中的分區(qū)(partition)進(jìn)行初始的一種操作,這種操作通常會(huì)導(dǎo)致現(xiàn)有的磁盤或分區(qū)中所有的文件被清除。格式化通常分為低級(jí)格式化和高級(jí)
    的頭像 發(fā)表于 01-09 15:20 ?8.5w次閱讀

    STM32串口下載軟件FLYMCU免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32串口下載軟件FLYMCU免費(fèi)下載。
    發(fā)表于 12-16 08:00 ?33次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>下載軟件FLYMCU免費(fèi)下載

    計(jì)算機(jī)擴(kuò)展RS-232串口的三種方法和區(qū)別及應(yīng)用

    計(jì)算機(jī)擴(kuò)展串口的三種方法現(xiàn)在的計(jì)算機(jī),特別是筆記本計(jì)算機(jī)基本上沒(méi)有帶RS-232串口了,但是在許多工業(yè)通信的場(chǎng)合需要用到RS-232和RS-485
    的頭像 發(fā)表于 01-21 17:14 ?1.2w次閱讀

    剖析提升字符格式化效率的小技巧

    一、前言 在嵌入式項(xiàng)目開發(fā)中,字符格式化是很常見的操作,我們一般都會(huì)使用 C 庫(kù)中的 sprintf 系列函數(shù)來(lái)完成格式化。 從功能上來(lái)說(shuō),這是沒(méi)有問(wèn)題的,但是在一些時(shí)間關(guān)鍵場(chǎng)合,字符
    的頭像 發(fā)表于 04-30 13:43 ?1486次閱讀
    剖析提升字符<b class='flag-5'>串</b><b class='flag-5'>格式化</b>效率的小技巧

    stm32串口代碼詳解

    stm32串口
    發(fā)表于 12-24 18:38 ?52次下載
    <b class='flag-5'>stm32</b><b class='flag-5'>串口</b>代碼詳解

    python字符格式化

    python字符格式化 格式化輸出,主要有三種方式 使用 % 進(jìn)行格式化 使用 format 函數(shù)進(jìn)行
    的頭像 發(fā)表于 02-21 16:28 ?1484次閱讀
    python字符<b class='flag-5'>串</b><b class='flag-5'>格式化</b>

    格式化字符常量f-strings一些不常見的特性

    【導(dǎo)語(yǔ)】:本文介紹了“格式化字符常量”f-strings一些不常見的特性,包括:格式化日期和時(shí)間、同時(shí)打印變量名和變量值等,嵌套使用f-strings等,此外與其他
    的頭像 發(fā)表于 08-15 12:00 ?1014次閱讀

    STM32串口輸出字符串幾種方法

    C語(yǔ)言中有個(gè)很好用的函數(shù):printf()。printf()是格式化輸出函數(shù),可以按照規(guī)定格式輸出消息。相信每個(gè)工程師開始學(xué)習(xí)的C語(yǔ)言第一課都會(huì)遇到printf(“Hello Worl
    的頭像 發(fā)表于 07-22 10:44 ?4957次閱讀
    <b class='flag-5'>STM32</b>—<b class='flag-5'>串口</b><b class='flag-5'>輸出字符串</b>的<b class='flag-5'>幾種方法</b>