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

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

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

STM32中使用printf打印串口數(shù)據(jù)的實現(xiàn)原理及方法

ss ? 來源:CSDN塵埃世界、Foresights ? 作者:CSDN塵埃世界、Fo ? 2021-07-22 11:12 ? 次閱讀

STM32中使用printf打印串口數(shù)據(jù)的實現(xiàn)原理

在C庫中,printf()等輸出流函數(shù)都是通過fputc()這個函數(shù)實現(xiàn)的,所以我們通過重映射的方式,修改這個函數(shù)的定義使它輸出在STM32的寄存器中,便可以實現(xiàn)使用printf()函數(shù)在STM32串口上輸出數(shù)據(jù)的功能。

盤點一下實現(xiàn)printf()函數(shù)打印字符串重定義到USART1的方法

方法一

1添加包含printf()函數(shù)的頭文件:#include “stdio.h”

2.重寫 stdio.h 頭文件中的 int fputc(int ch, FILE *f) 函數(shù)

3.將該函數(shù)” int fputc(int ch, FILE *f) “放在main()函數(shù)能夠調(diào)用到的文件中,KEIL-》Options for Target’xxx’-》Target-》Code Generation,勾選Use MicroLIB

方法二

//加入以下代碼,支持printf函數(shù),而不需要選擇use MicroLIB

#if 1

#pragma import(__use_no_semihosting)

//標準庫需要的支持函數(shù)

struct __FILE

{

int handle;

};

FILE __stdout;

//定義_sys_exit()以避免使用半主機模式

_sys_exit(int x)

{

x = x;

}

//重定義fputc函數(shù)

int fputc(int ch, FILE *f)

{

while( ?。║SART1-》SR & (1 《《 7)) );

USART_SendData(USART1,(uint8_t)ch);

return ch;

}

#endif

整合自:CSDN塵埃世界、Foresights

編輯:jq

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

    關(guān)注

    0

    文章

    81

    瀏覽量

    13587
收藏 人收藏

    評論

    相關(guān)推薦

    STM32CUBEMX(6)--移植雅特力AT32F403AVGT7,雙串口通過DMA方式接收不定長數(shù)據(jù)

    每個外設(shè)都需要實現(xiàn)自己的本地數(shù)據(jù)存儲)相比,DMA解決方案在硅片成本和功耗方面的成本較低。 根據(jù)使用的產(chǎn)品型號的不同,有一個或兩個DMA模塊。 本篇文章主要介紹如何使用STM32CubeMX
    發(fā)表于 09-06 16:37

    【GD32H757Z海棠派開發(fā)板使用手冊】第九講 USART-printf打印實驗

    通過本實驗主要學(xué)習(xí)以下內(nèi)容: ?串口簡介 ?GD32H757串口工作原理 ?使用printf打印信息
    的頭像 發(fā)表于 05-15 11:39 ?528次閱讀
    【GD32H757Z海棠派開發(fā)板使用手冊】第九講 USART-<b class='flag-5'>printf</b><b class='flag-5'>打印</b>實驗

    ESP8266與STM32通訊,串口通訊出現(xiàn)數(shù)據(jù)丟失的原因?

    函數(shù)的原因,串口只能打印:01 03 05 但我想調(diào)用數(shù)據(jù)7F 7A 應(yīng)該如何修改這些函數(shù)或者有什么其他方法呢?謝謝大神指點{:4:} STM32
    發(fā)表于 05-14 06:17

    【GD32F470紫藤派開發(fā)板使用手冊】第九講 USART-printf打印實驗

    通過本實驗主要學(xué)習(xí)以下內(nèi)容: 串口簡介 GD32F470串口工作原理 使用printf打印信息
    的頭像 發(fā)表于 05-13 10:14 ?1438次閱讀
    【GD32F470紫藤派開發(fā)板使用手冊】第九講  USART-<b class='flag-5'>printf</b><b class='flag-5'>打印</b>實驗

    STM32 HAL printf所占用串口不能做中斷接收如何解決?

    目前在使用STM32L053系列MCU,基于HAL庫的程序,硬件串口資源有3個,都已經(jīng)被使用;其中USART2通過Switch芯片來實現(xiàn)printf
    發(fā)表于 04-29 09:01

    用keil仿真無法用printf打印怎么解決?

    用keil仿真 無法用printf打印.想用printf重定向到Usart1的方法,使printf打印
    發(fā)表于 04-11 08:20

    STM32 printf如何打印0x00,使串口接收工具顯示00呢?

    printf如何打印0x00,使串口接收工具顯示00呢?請各位指教謝謝
    發(fā)表于 04-08 06:19

    xmc7200使用cy_retarget_io_init_fc功能初始化串口6,為什么printf功能CAN不打印數(shù)據(jù)?

    我使用的是xmc7200開發(fā)板,使用cy_retarget_io_init_fc功能初始化串口6,為什么printf功能 CAN 不打印數(shù)據(jù)?
    發(fā)表于 01-30 06:55

    M487JIDAE如何使用ITM功能實現(xiàn)printf打印?

    M487JIDAE如何使用ITM功能實現(xiàn)printf打印?
    發(fā)表于 01-16 08:03

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

    FreeRTOS中直接使用newlib庫是有問題的,相信使用過freertos進行printf都能發(fā)現(xiàn)這個問題,這個問題網(wǎng)上有兩種方法:1、使用printf.stdarg.c,問題在于,這個庫沒有
    的頭像 發(fā)表于 01-04 08:00 ?1546次閱讀
    解決<b class='flag-5'>printf</b>無法<b class='flag-5'>打印</b>輸出的問題

    stm32虛擬串口接收的數(shù)據(jù)處理

    STM32中使用虛擬串口時,我們需要處理接收的數(shù)據(jù)。接收到的數(shù)據(jù)可能是來自其他設(shè)備的傳感器數(shù)據(jù)
    的頭像 發(fā)表于 12-20 11:22 ?2039次閱讀

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

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

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

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

    STM32工程上printf()函數(shù)的方法實現(xiàn)

    針對STM32串口編程,可以通過USART1向計算機的串口調(diào)試助手打印數(shù)據(jù),或者接收計算機串口調(diào)試助手的
    的頭像 發(fā)表于 11-06 16:22 ?1356次閱讀
    <b class='flag-5'>STM32</b>工程上<b class='flag-5'>printf</b>()函數(shù)的<b class='flag-5'>方法</b><b class='flag-5'>實現(xiàn)</b>

    STM32 HAL庫串口收發(fā)是如何使用的?

    的一種庫,它提供了一種簡單易用的方法來使用STM32的各種外設(shè)。 本文將詳細介紹如何使用STM32 HAL庫來進行串口通信,包括初始化、發(fā)送數(shù)據(jù)
    的頭像 發(fā)表于 10-26 17:42 ?1129次閱讀