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...