半主機機制的作用
半主機是用于ARM目標的一種機制,可將來自STM32單片機應用程序的輸入輸出請求傳送至運行仿真器的PC主機。使用此機制可以啟用C庫中的函數,如printf()和scanf(),來使用PC主機的屏幕和鍵盤。這樣就可以看到單片機的輸入輸出,方便進行調試。注意:種機制的運行需要仿真器,否則無法運行。
簡單的來說,半主機模式就是通過仿真器實現開發板在電腦上的輸入和輸出。
開發時單片機需要獨立運行,開發者就應該去掉仿真器,把printf函數通過單片機的外設來實現,例如通過開發板的串口。
非半主機機制下printf函數的實現方法
Use MicroLIB(微庫)
因為使用微庫的話,不會使用半主機模式。
如下圖,在點開MDK軟件的魔術棒,勾選Target選項卡中的“Use MicroLIB”。這樣就可以使用printf()函數,通過USART輸出數據到電腦串口助手。
在主程序中添加代碼
不使用Use MicroLIB(微庫),就要在工程中加入以下代碼, 以支持printf函數 。代碼是寫在USART的初始化文件中,記得修改USARTx,換成你要輸出的USART端口號。
【功 能】 printf函數重定向支持代碼 * 加入以下代碼, 使用printf函數時, 不再需要選擇use MicroLIB * 參 數: * 返回值:
#pragma import(__use_no_semihosting) //為確保沒有從C庫鏈接使用半主機的函數 struct __FILE { int handle; }; // 標準庫需要的支持函數FILE __stdout; // FILE 在stdio.h文件void _sys_exit(int x) // 定義_sys_exit()以避免使用半主機模式{ x = x; }
int fputc(int ch, FILE *f) // 重定向fputc函數,使printf的輸出,由fputc輸出到UART, 這里使用串口1(USART1){ //if(xFlag.PrintfOK == 0) return 0; // 判斷USART是否已配置,防止在配置前調用printf被卡死
while((USARTx -》SR&0X40)==0); // 等待上一次串口數據發送完成 USARTx -》DR = (u8) ch; // 寫DR,串口1將發送數據 return ch;}
STM32嵌入式開發
原文標題:STM32的半主機機制
文章出處:【微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。
責任編輯:haq
-
嵌入式
+關注
關注
5093文章
19178瀏覽量
307700 -
STM32
+關注
關注
2272文章
10924瀏覽量
357588
原文標題:STM32的半主機機制
文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
EE-56:關于SHARC EPROM和主機引導加載程序的提示和技巧
![EE-56:<b class='flag-5'>關于</b>SHARC EPROM和<b class='flag-5'>主機</b>引導加載程序的提示和技巧](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
虛擬主機名詞解釋
usb主機模式怎么打開
淺談SOC片上系統LoRa-STM32WLE5數據安全防御機制
![淺談SOC片上系統LoRa-<b class='flag-5'>STM32</b>WLE5數據安全防御<b class='flag-5'>機制</b>](https://file1.elecfans.com/web2/M00/06/77/wKgaombazWWAW6GFAACGE9xAk-g686.png)
請問D類功放的半橋逆變加入變壓器的作用是什么?
![](https://file1.elecfans.com/web2/M00/EC/97/wKgZomZnn1aAfRX9AAA1KVLVwHY260.png)
使用USBUART組件與主機PC通信,如果在串行端口打開的情況下終止固件,主機端為什么會報錯?
求助,關于stm32應用bootloader主機端接收ACK的問題求解
STM32F107做USB主機鍵盤,鍵盤上那3個LED燈的功能怎么按都不起作用是怎么回事?
STM32F0作為I2c的從機時,響應主機的讀命令,如何知道主機發回的ACK還是No ACK?
關于STM32 DMAMUX模塊具體的應用示例代碼
![<b class='flag-5'>關于</b><b class='flag-5'>STM32</b> DMAMUX模塊具體的應用示例代碼](https://file1.elecfans.com/web2/M00/C5/98/wKgZomYA0KWAXr1uAAActZx-jhs970.png)
評論