半主機機制的作用
半主機是用于ARM目標的一種機制,可將來自STM32單片機應(yīng)用程序的輸入輸出請求傳送至運行仿真器的PC主機。使用此機制可以啟用C庫中的函數(shù),如printf()和scanf(),來使用PC主機的屏幕和鍵盤。這樣就可以看到單片機的輸入輸出,方便進行調(diào)試。注意:種機制的運行需要仿真器,否則無法運行。
簡單的來說,半主機模式就是通過仿真器實現(xiàn)開發(fā)板在電腦上的輸入和輸出。
開發(fā)時單片機需要獨立運行,開發(fā)者就應(yīng)該去掉仿真器,把printf函數(shù)通過單片機的外設(shè)來實現(xiàn),例如通過開發(fā)板的串口。
非半主機機制下printf函數(shù)的實現(xiàn)方法
Use MicroLIB(微庫)
因為使用微庫的話,不會使用半主機模式。
如下圖,在點開MDK軟件的魔術(shù)棒,勾選Target選項卡中的“Use MicroLIB”。這樣就可以使用printf()函數(shù),通過USART輸出數(shù)據(jù)到電腦串口助手。

在主程序中添加代碼
不使用Use MicroLIB(微庫),就要在工程中加入以下代碼, 以支持printf函數(shù) 。代碼是寫在USART的初始化文件中,記得修改USARTx,換成你要輸出的USART端口號。
【功 能】 printf函數(shù)重定向支持代碼 * 加入以下代碼, 使用printf函數(shù)時, 不再需要選擇use MicroLIB * 參 數(shù): * 返回值:
#pragma import(__use_no_semihosting) //為確保沒有從C庫鏈接使用半主機的函數(shù) struct __FILE { int handle; }; // 標準庫需要的支持函數(shù)FILE __stdout; // FILE 在stdio.h文件void _sys_exit(int x) // 定義_sys_exit()以避免使用半主機模式{ x = x; }
int fputc(int ch, FILE *f) // 重定向fputc函數(shù),使printf的輸出,由fputc輸出到UART, 這里使用串口1(USART1){ //if(xFlag.PrintfOK == 0) return 0; // 判斷USART是否已配置,防止在配置前調(diào)用printf被卡死
while((USARTx -》SR&0X40)==0); // 等待上一次串口數(shù)據(jù)發(fā)送完成 USARTx -》DR = (u8) ch; // 寫DR,串口1將發(fā)送數(shù)據(jù) return ch;}
STM32嵌入式開發(fā)
原文標題:STM32的半主機機制
文章出處:【微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
責(zé)任編輯:haq
-
嵌入式
+關(guān)注
關(guān)注
5186文章
20133瀏覽量
328402 -
STM32
+關(guān)注
關(guān)注
2305文章
11118瀏覽量
370956
原文標題:STM32的半主機機制
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
合粵鋁電解電容于游戲機主機電源管理電路的應(yīng)用
淺談Sn-Bi-Ag低溫錫膏的晶界強化機制
STM32 入門工具選型攻略:新手別再盲目入手,選對了才能少走彎路
集特和飛騰、海光等國產(chǎn)平臺聯(lián)合打造高性能國產(chǎn)臺式終端主機
使用STM32的SPI主機通訊需要喚醒嗎?
LLC諧振半橋電路分析與設(shè)計
香港主機托管和國內(nèi)主機的優(yōu)缺點比較
新加坡共享主機怎么設(shè)置ip
EE-56:關(guān)于SHARC EPROM和主機引導(dǎo)加載程序的提示和技巧
關(guān)于理想汽車的車輛OTA機制問題
STM32WB55RG開發(fā)(5)----監(jiān)測STM32WB連接狀態(tài)

關(guān)于STM32半主機機制的作用
評論