色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美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次閱讀
    主站蜘蛛池模板: 久久偷拍vs国产在线播放| 最近更新2019中文字幕国语| 前后灌满白浆护士| 欧美久久无码AV麻豆| 欧美A级肉欲大片XXX| 国产在线播放精品视频| 国产午夜在线观看视频| 成人精品在线视频| 刺激一区仑乱| 国产传媒18精品免费1区| AV天堂午夜精品蜜臀AV| 亚洲人成色777777老人头| 色 花 堂 永久 网站| 色噜噜噜噜亚洲第一| 天天久久影视色香综合网| 亚洲国产精品特色大片观看| 探花口爆颜射乳交日韩| 十次啦中文网| 亚洲免费一| 亚洲成人网导航| 甜涩性爱下载| 亚洲精品久久99蜜芽尤物TV| 在线中文高清资源免费观看| 99精品视频一区在线视频免费观看| 爱爱好爽好大好紧视频| YELLOW视频直播在线观看| 俄罗斯美女破处| 黑人巨茎大战白人女40CMO| 久久中文字幕亚洲精品最新| 欧美性极品黑人hd| 息与子在线交尾中文字幕| 亚洲av欧美在我| 在镜头里被CAO翻了H| NANANA在线观看高清影院| 97碰成视频免费| 岛国大片在线播放高清| 好湿好滑好硬好爽好深视频| 免费果冻传媒2021视频| 甜性涩爱在线播放| 中文字幕精品AV内射夜夜夜| 岛国电影网址|