色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

冬至子 ? 來源:一禾嵌入式開發 ? 作者:季鵬 ? 2023-07-22 10:44 ? 次閱讀

C語言中有個很好用的函數:printf()。printf()是格式化輸出函數,可以按照規定格式輸出消息。相信每個工程師開始學習的C語言第一課都會遇到printf(“Hello World! n”);這條語句。

嵌入式開發中,我們調試時時常需要輸出一些調試信息,那這時候printf語句就非常有用了。但是遺憾的是,C標準庫函數中默認的輸出設備是顯示器,所以當我們進行嵌入式開發的時候,是不能夠直接使用printf的。如果我們想要方便的在嵌入式開發中進行printf操作,那么就必須重定向printf語句。

我們可以查一下C標準庫函數,printf語句其實是使用了一個函數int fputc(int ch, FILE *f); 此函數原本是將字符ch打印到文件指針所指向的文件流中去的,現在我們不需要打印到文件流,而是打印到串口1。我們只需要重新編寫這個函數。當系統檢測到用戶編寫的fputc函數時,就會調用用戶所編寫的函數,而不是使用原本的fputc了。

函數如下:

圖片

注意這里需要使用到頭文件stdio.h,否則FILE類型未定義。以上是基于MDK環境下,使用MicroLib的情況下重定向printf。還有一種方法是使用半主機模式。半主機模式是ARM的一種機制,不使用microLib庫,實現ARM應用程序代碼的輸入/輸出請求傳至運行著調試器的主機,這樣就可以使用主機的顯示器和鍵盤,而不需要再ARM系統上搭配顯示器和鍵盤。當然,這種做法并不常見,有興趣的同學可以自己研究一下。

如果這篇文章到這里就結束了,那么就太常規了。下面我還要講一個非常規的操作以實現串口輸出字符串。

Printf重定向的方法是非常常規的,但是我就是不想用,而且我還想調用一個函數就能輸出一串任意的字符串,怎么辦?我就想出了另一種寫法,先貼代碼:

圖片

乍一看,這段代碼非常簡單啊,就是使用了一個指針,然后串口輸出的時候指針指向的地址不停+1啊!但是我們再看一下調用:

圖片

我們這里直接將一個字符串作為參數進行了傳遞,編譯器報了一個警告:warning: ‘char[25]’ to parameter of type ‘uint8_t *’ (aka ‘unsigned char *’) converts between pointers to integer types with different sign。

很明顯,數據類型沖突了。但是在程序中我們將兩種方式都進行了輸出,最后發現調試結果是正確的。如下圖所示。

圖片

圖片

這是為什么呢?其實也很簡單,我們這里進行了一個非法操作。當我們調用該函數時,將字符串數組作為實參,在函數定義中強制轉換成了一個指針。而這個指針,指向的是字符串數組的第一個地址,所以該函數運行時就能夠正確輸出我們所編寫的字符串了。

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

    關注

    21

    文章

    4986

    瀏覽量

    140118
  • STM32
    +關注

    關注

    2270

    文章

    10906

    瀏覽量

    356561
  • ARM處理器
    +關注

    關注

    6

    文章

    360

    瀏覽量

    41801
  • C語言
    +關注

    關注

    180

    文章

    7608

    瀏覽量

    137111
  • 調試器
    +關注

    關注

    1

    文章

    305

    瀏覽量

    23769
收藏 人收藏

    評論

    相關推薦

    輸出字符串數組問題

    3. 要求輸出字符串數組“ APPLy:sin 頻率,幅度” 其中幅度為數值類型,由輸入控件設定。頻率范圍和步長由輸入控件設定。例如幅度為2,頻率范圍為1000-8000Hz,步長1000Hz,輸出字符串
    發表于 10-20 11:05

    Python字符串的特點和修改字符串的常見四種方法

    Python中修改字符串幾種方法
    發表于 02-26 16:52

    為什么stm32程序使用printf函數無法通過串口輸出字符串

    為什么stm32程序使用printf函數無法通過串口輸出字符串呢?怎樣去解決這個問題呢?
    發表于 11-25 06:35

    解決讀取TXT文件時輸出字符串亂碼問題

    解決讀取TXT文件時輸出字符串亂碼問題打開TXT文件時如果內容中存在中文,輸出時會出現亂碼問題,因為labview默認的編碼格式是UTF-8
    發表于 12-23 14:23

    python字符串拼接方式了解

    ()方法拼接 用string模塊中的Template對象 例子: fruit1 = ‘apples’ fruit2 = ‘bananas’ fruit3 = ‘pears’ 要求: 輸出字符串
    發表于 12-06 10:09 ?1038次閱讀

    如何利用STM32單片機串口發送字符串

    最近由于要調試一個SMS發送短信的模塊,該模塊需要發送一系列AT指令,且需要字符串發送,但是STM32官方給的usart.c中并沒有直接發送字符串的函數,因此寫了一個發送字符串的函數。
    發表于 12-10 16:01 ?1.6w次閱讀

    基于STM32單片機發送字符串的函數

    最近由于要調試一個SMS發送短信的模塊,該模塊需要發送一系列AT指令,且需要字符串發送,但是STM32官方給的usart.c中并沒有直接發送字符串的函數,因此寫了一個發送字符串的函數。
    發表于 01-04 15:05 ?4944次閱讀

    C語言中字符串拷貝函數有幾種方法

    strcpy,即string copy(字符串復制)的縮寫。 是C語言標準庫中實現字符串拷貝的一個函數。 各大公司筆試題最喜歡考的一道題,快來看看,你會幾種方法? 問:你會如何實現這個函數呢? 1
    的頭像 發表于 03-12 14:16 ?4789次閱讀

    利用STM32單片機串口發送字符串

    最近由于要調試一個SMS發送短信的模塊,該模塊需要發送一系列AT指令,且需要字符串發送,但是STM32官方給的usart.c中并沒有直接發送字符串的函數,因此寫了一個發送字符串的函數。
    發表于 11-19 10:36 ?13次下載
    利用<b class='flag-5'>STM32</b>單片機<b class='flag-5'>串口</b>發送<b class='flag-5'>字符串</b>

    STM32串口的介紹與使用(原理、結構體、發送字符串、printf函數重定向)

    串口相關知識1.定義2.通信概念3.USART簡介串口的結構體串口發送字符STM32發送到上位機)串口
    發表于 12-24 19:08 ?20次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>的介紹與使用(原理、結構體、發送<b class='flag-5'>字符串</b>、printf函數重定向)

    python字符串有哪些特定方法

    python字符串序列操作也適用于列表和元組。 python字符串還有獨有方法,即字符串對象的函數,其他對象不可調用,只有字符串對象可
    的頭像 發表于 02-23 15:02 ?723次閱讀

    C語言定義字符串幾種方法

    C語言中定義字符串有哪些方法
    的頭像 發表于 03-31 09:41 ?3584次閱讀

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

    在前兩天介紹的串口輸出中,函數Usart1_SendStr只能輸出字符串,如果想輸出一個整型或者其他類型的數據,單獨用這個函數是不能實現的。
    的頭像 發表于 07-22 10:16 ?3149次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>格式化<b class='flag-5'>輸出</b>的<b class='flag-5'>幾種方法</b>介紹

    串口屏LUA教程6-運算和字符串處理

    串口屏LUA教程6-運算和字符串處理
    發表于 04-29 13:11 ?11次下載

    python輸出固定長度的字符串

    Python 是一種強大而靈活的編程語言,具有許多用于處理字符串的功能。在 Python 中,有多種方法可以輸出固定長度的字符串。下面將詳細介紹這些
    的頭像 發表于 11-22 10:41 ?3349次閱讀
    主站蜘蛛池模板: 日本一卡2卡3卡四卡精品网站| 黑丝制服影院| 国产成人免费| 欧美精品3atv一区二区三区| 亚洲熟女乱色一区二区三区| 国产第81页| 世界上第一个得抑郁症的人是谁| 91精品视频网站| 美女伸开两腿让我爽| 最近免费中文MV在线字幕| 久久精品国产免费| 亚洲美女视频高清在线看| 国产麻豆剧果冻传媒免费网站| 色婷婷激情AV精品影院| 超碰97人人做人人爱网站| 全是肉的高h短篇列车| 99热久久精品国产一区二区| 女人张腿让男人桶免费| caoporon超碰在线视频| 啪啪漫画无遮挡全彩h网站| 苍老师刺激的120分钟| 日韩a在线看免费观看视频| 国产成人无码区免费内射一片色欲 | 打卡中国各地奋斗第一线| 欧美亚洲另类图片| 岛国大片在线观看免费版| 天天狠狠色综合图片区| 国产亚洲精品久久久久久久软件| 亚洲精品无码成人AAA片| 久久青青热| 99国产精品偷窥熟女精品视频| 欧美巨大xxxx做受孕妇视频| 超碰人人草在线视频| 午夜福利免费0948视频| 精品午夜久久福利大片免费 | 3d无遮挡h肉动漫在线播放| 欧美肥胖女人bbwbbw视频| 国产激情文学| 伊人久久亚洲精品一区| 欧美日韩另类在线专区| 国产美女裸身网站免费观看视频|