如何在STM32單片機的MDK工程中使用printf

2020-12-25 電子發燒友

如何在STM32單片機的MDK工程中使用printf

發表於 2018-12-24 14:25:12

首先,要包含頭文件「stdio.h」

第二:printf()函數使用了int fputc(int ch,FILE *f)完成其功能。

要使用printf,就需要重寫這個函數。

第三,在工程選項的Target裡邊勾選USE MicroLIB項。

fputc示例如下:

int fputc(int ch,FILE *f)

{

/* Place your implementation of fputc here */

/* e.g. write a character to the USART */

USART_SendData(USART1, (uint8_t) ch);

/* Loop until the end of transmission */

while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)

{}

return ch;

}

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • printf()函數重定向到STM32串口輸出
    /html/1573.htmlC語言中使用printf()函數輸出是非常方便功能非常強大的,如果能將printf()函數使用到串口上,能實現非常多的強大輸出功能,極大方便我們使用串口輸出功能。,網上查到原因是printf()函數使用標準庫,標準庫中包括printf()等函數使用了半主機模式,導致無法運行(見參考)解決辦法:1,使用微庫,在工程屬性的Target->Code Generation中勾選Use MicroLIB2, 重新實現庫中某些函數,避免使用標準庫(見參考)參考:http://blog.csdn.net/wdscq1234
  • STM32程序添加printf函數後無法運行的解決方法(串口實驗)
    (USART1, (uint8_t) ch);while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);return ch;}因printf()之類的函數,使用了半主機模式。
  • STM32中如何使用printf()函數
    STM32串口通信中使用printf發送數據配置方法(開發環境 Keil RVMDK在STM32串口通信程序中使用printf發送數據,非常的方便。可在剛開始使用的時候總是遇到問題,常見的是硬體訪真時無法進入main主函數,其實只要簡單的配置一下就可以了。
  • 單片機使用printf函數的兩種辦法
    今天就簡單來說說怎麼在51單片機中使用"printf"函數:包括使用自帶的printf函數和自己動手寫一個printf函數,再貼代碼之前先介紹幾個相關的知識,主要用於自己寫printf函數。①C語言函數:vsprintf,本文引用地址:http://www.eepw.com.cn/article/201611/321829.htm其原型為int vsprintf(char *string, char *format, va_list param);,作用為將param按格式format寫入字符串string中,因此他可以用於將任何格式數據轉化為字符串數據,比如把整數
  • 如何在單片機上使用printf函數
    當我們在調試代碼時,通常需要將程序中的某個變量列印至PC機上,來判斷我們的程序是否按預期的運行,printf函數很好的做到了這一點,它能直接以字符的方式輸出變量名和變量的值,這樣使輸出的信息很直觀;但printf函數在使用時,不僅僅要初始化串口
  • 單片機使用printf函數進行串口列印輸出
    以前在使用keil編寫51單片機程序的時候,經常使用printf函數列印輸出一些關鍵的過程數據到電腦,方便監控程序的運行狀況。最近使用IAR for MSP430 調試 MSP430G2553 程序的時候,發現了一些小問題,MSP430G2553單片機並沒有按照我的預期輸出數據到電腦。帶著疑惑我查看了keil的幫助文件裡面的printf函數說明,原來printf函數最終是調用putchar函數來實現列印輸出字符的。
  • avr單片機和stm32區別與優缺點分析
    摘要:avr單片機和stm32單片機是目前使用較廣泛的單片機,那麼avr單片機和stm32單片機有什麼區別呢?有什麼優劣勢呢?   二、stm32單片機介紹   由ST廠商推出的stm32系列單片機,行業的朋友都知道,這是一款性價比超高的系列單片機,應該沒有之一,功能及其強大。
  • STM32 keil printf的使用
    請在MDK(keil)工程屬性的「Target「-》」Code Generation「中勾選」Use MicroLIB本文引用地址:http://www.eepw.com.cn/article/201611/315976.htm前提是你有一個完整keil的工程 比如ADC的調試的時候很多時候用到串口
  • 基於STM32的 USB設計 --單片機程序篇
    (這裡明確一個概念,在usb通信中數據流向都是相對設備來說的,in表示設備向主 機傳送數據,out表示表示主機箱設備傳輸數據)。在設備一端,每個管道對應一個端點,端點配置相關的寄存器和緩衝區。在通訊之前需對端點進行相關設置。 在通信中,只需向緩衝寫或讀數據,並置位相關比特位即可。
  • Linux中printf命令使用實例
    在編寫shell腳本時,我們使用echo列印到標準輸出。echo是一個簡單的命令,但其功能有限,想要更好的控制輸出格式,可以使用printf命令。還包括了三個\n換行符,printf命令默認不會添加還行符號,需要手動添加。類型轉換說明符是一個字符,用於指定如何解釋相應的參數,該字符是必須添加的,以下是顯示所有類型轉換及其作用的列表:該例子使用%d,%x,%o將後面提供的參數轉化為十進位、十六進位、八進位。
  • STM32+Keil 如何使用printf函數?
    那麼只能通過程序向硬體串口發數據了,這樣調用的時候用自定義的函數即可,也很方便,例如:本文引用地址:http://www.eepw.com.cn/article/201611/317105.htmvoid send_char_to_usart(unsigned char c){}但是可否直接使用printf函數呢?
  • 51單片機實現scanf和printf函數
    最開始學習C語言時,使用printf和scanf進行格式化輸入輸出十分方便。學習單片機有很長時間了,之前要再屏幕上顯示一個變量或者通過串口傳出一些變量值觀測的話,需要進行一系列的取餘取整運算,很是麻煩。
  • 【經典】把脈printf中的C進階技巧
    因為printf需要實現可變參數,那麼肯定是需要有約定的傳參數的規則,該約定的規則就決定了函數內部如何獲得對應參數。    對於大部分小夥伴在平時的開發中基本上都是使用固定的參數類型,不過對於類似於printf這種用戶接口使用型函數,實現可變參數就顯得更加具有靈活性。學習過C++的小夥伴應該有種感覺,可變參數有點類似於函數重載,不過C的可變參數必須包含一個參數。
  • stm32屬於arm嗎_arm和stm32的區別
    1、體積小、低功耗、低成本、高性能;   2、支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件;   3、大量使用寄存器,指令執行速度更快;   4、大多數數據操作都在寄存器中完成;   5、尋址方式靈活簡單,執行效率高;   6、指令長度固定。
  • MSP430G2553單片機使用printf函數進行串口列印輸出
    以前在使用keil編寫51單片機程序的時候,經常使用printf函數列印輸出一些關鍵的過程數據到電腦,方便監控程序的運行狀況。最近使用IAR for MSP430 調試MSP430G2553程序的時候,發現了一些小問題,MSP430G2553單片機並沒有按照我的預期輸出數據到電腦。
  • 關於單片機程序中使用printf的一點建議
    在Keil函數中,用printf函數調試起來很方便。但必須注意以:1.必須先初始化串口,否則可能引起死機的情況,並且在printf之前應該先將TI置位。
  • TrueStudio開發工具:printf函數輸出使用沒方向,怎麼辦?
    在TrueStudio開發工具中使用printf函數如果第一次接觸可能會找不到方向,現將最近剛剛接觸STM32CubeMX配置生成TrueStudio工程串口列印的使用過程進行如下說明。C、串口1配置為異步通信模式配置單片機運行頻率按照下圖設置為主頻72Mhz。
  • stm32開發板例程講解之一:使用IAR 5.3建立工程
    學習stm32,入門是非常關鍵的,而自己建的第一個也就顯得很重要了。儘快入門,建立起學習的信心,對後續的學習有非常大的幫助。本文將講述任何在IAR上建立一個project,並開始自己學習stm32的第一個實驗。
  • STM32+W5500+MQTT+Android實現遠程數據採集及控制
    1 單片機端實現MQTT協議是基於TCP的協議,所以我們只需要在單片機端實現TCP客戶端代碼之後就很容易移植MQTT了,STM32F4+W5500實現TCP客戶端的代碼我們以前已經實現過,代碼下載地址為:http://www.embed-net.com/thread-87-1-1.html當然,如果你想在代碼裡面直接使用伺服器域名方式進行連接,我們還得在TCP客戶端代碼裡面集成
  • STM32中使用HAL庫重定向printf()函數
    //UartHandle是串口的句柄} //重定向函數2PUTCHAR_PROTOTYPE{  HAL_UART_Transmit(&UARTHandle, (uint8_t *)&ch, 1, 0xFFFF);   return ch;}在keil中勾選使用