1. 程式人生 > >STM32 KEIL 下的 printf 函數

STM32 KEIL 下的 printf 函數

通過 編譯 循環 src png end sem es2017 use

 1 //加入以下代碼,支持printf函數,而不需要選擇use MicroLIB
 2 #if 1
 3 #pragma import(__use_no_semihosting)             
 4 //標準庫需要的支持函數                 
 5 struct __FILE 
 6 { 
 7     int handle; 
 8 
 9 }; 
10 
11 FILE __stdout;       
12 //定義_sys_exit()以避免使用半主機模式    
13 _sys_exit(int x) 
14 { 
15     x = x; 
16 } 
17 //重定義fputc函數 
18 int fputc(int ch, FILE *f) 19 { 20 //return ITM_SendChar(ch); 21 22 while((USART2->SR&0X40)==0);//循環發送,直到發送完畢 23 USART2->DR = (u8) ch; 24 return ch; 25 } 26 #endif

如上圖:

保留這一部分時:

技術分享

其中 可以更換任意的串口

printf輸出用串口發送出去

當 下圖圈圈中的部分編譯

技術分享

則 通過JTAG (6線) 打印到SEGGER軟件上

技術分享

但是當串口初始化函數運行了的時候 上面就失效了

原因是?

STM32 KEIL 下的 printf 函數