MDK環境下stm32實現printf函式

2021-07-27 08:31:24 字數 734 閱讀 7711

printf雖然是c語言的標準函式,但是是針對有stdin, stdout裝置的系統的,在嵌入式平台上是沒有標準的stdin, stdout的,需要對映到串列埠後某個輸出物件的,而嵌入式平台各不相同,如果又沒有作業系統的支援,就只能靠自己實現了,因此stm32下的printf不在標準庫里,而在定製的庫里。而且一般在嵌入式平台一般也不用printf,可以自己使用sprintf()函式先將資料格式化到緩衝裡,然後資料想輸出到**就輸出到**。

如果使用的是mdk,請在工程屬性的「target「-》」code generation「中勾選」

use microlib「

#ifndef __uart_inte***ce_h

#define __uart_intefface_h

#include "stm32f10x_lib.h"

#include "stdio.h"

void uart_init(unsigned long uart_baud); //波特率,如115200

int fputc(int ch, file *f); //fputc重定向

int fgetc(file *f); //fgetc重定向

#endif

關於兩個關鍵函式的重定義:

int fputc(int ch, file *f)

int fgetc(file *f)

讓MDK支援printf(基於stm32)

1 在option target 選項框裡選 use microlib 選項 2 在將要呼叫printf 的函式的 c檔案中包含標頭檔案 include stdio.h 3 在該c 檔案中新增如下函式 int fputc int ch,file f usart senddata usart1,u8 ...

MACOS下配置Stm32開發環境

斷斷續續在學stm32,實在是討厭mdk那種寫 的風格,所以,一直在windows和deepin間折騰,都有各種不好的地方。也想過在mac上試,不過我只有黑蘋果,害怕各種硬體問題導致的錯誤,就一直沒有嘗試。可是,最近那個cubemx在win下也出問題,所以,我決定嘗試一下。沒想到,竟然可以滿足目前的...

mdk5環境下的stm32的安裝及簡單使用

1.選擇晶元 巨集定義,用於存放stm32暫存器對映 define periph base unsigned int 0x40000000 ahb define apb2periph base periph base 0x10000 define gpioa base apb2periph base...