STM32串口使用Printf()函數問題

標準庫函數的默認輸出設備是顯示器,要實現在串口或LCD輸出,必須重定義標準庫函數裏調用的與輸出設備相關的函數. 

例如:printf輸出到串口,需要將fputc裏面的輸出指向串口(重定向),方法如下: 只要自己添加一個int fputc(int ch, FILE *f)函數,能夠輸出字符就可以了

#if 1

#pragma import(__use_no_semihosting)       /* 確保沒有從 C 庫鏈接使用半主機的函數 */

//標準庫需要的支持函數                 

struct __FILE 

int handle; 


}; 


FILE __stdout;       

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

_sys_exit(int x) 

x = x; 

//重定義fputc函數 

int fputc(int ch, FILE *f)

{      

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

        USART_SendData(USART1,(uint8_t)ch);   

return ch;

}

#endif 

因printf()之類的函數,使用了半主機模式。使用標準庫會導致程序無法運行。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章