0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32的半主機(jī)機(jī)制介紹

單片機(jī)與嵌入式 ? 來源:?jiǎn)纹瑱C(jī)與嵌入式 ? 2023-07-10 09:01 ? 次閱讀

半主機(jī)機(jī)制的作用

半主機(jī)是用于ARM目標(biāo)的一種機(jī)制,可將來自STM32單片機(jī)應(yīng)用程序的輸入輸出請(qǐng)求傳送至運(yùn)行仿真器的PC主機(jī)。使用此機(jī)制可以啟用C庫(kù)中的函數(shù),如printf()和scanf(),來使用PC主機(jī)的屏幕和鍵盤。這樣就可以看到單片機(jī)的輸入輸出,方便進(jìn)行調(diào)試。注意:種機(jī)制的運(yùn)行需要仿真器,否則無法運(yùn)行。

簡(jiǎn)單的來說,半主機(jī)模式就是通過仿真器實(shí)現(xiàn)開發(fā)板在電腦上的輸入和輸出。

開發(fā)時(shí)單片機(jī)需要獨(dú)立運(yùn)行,開發(fā)者就應(yīng)該去掉仿真器,把printf函數(shù)通過單片機(jī)的外設(shè)來實(shí)現(xiàn),例如通過開發(fā)板的串口。

非半主機(jī)機(jī)制下printf函數(shù)的實(shí)現(xiàn)方法

Use MicroLIB(微庫(kù))

因?yàn)槭褂梦?kù)的話,不會(huì)使用半主機(jī)模式。

如下圖,在點(diǎn)開MDK軟件的魔術(shù)棒,勾選Target選項(xiàng)卡中的“Use MicroLIB”。這樣就可以使用printf()函數(shù),通過USART輸出數(shù)據(jù)到電腦串口助手。

5fa2d2ca-1e2f-11ee-962d-dac502259ad0.png

在主程序中添加代碼

不使用Use MicroLIB(微庫(kù)),就要在工程中加入以下代碼, 以支持printf函數(shù) 。代碼是寫在USART的初始化文件中,記得修改USARTx,換成你要輸出的USART端口號(hào)。

/******************************************************************************
 * 【功  能】 printf函數(shù)重定向支持代碼
 *           加入以下代碼, 使用printf函數(shù)時(shí), 不再需要選擇use MicroLIB   
 * 參  數(shù):
*返回值:
 ******************************************************************************/  
#pragmaimport(__use_no_semihosting)//為確保沒有從C庫(kù)鏈接使用半主機(jī)的函數(shù)
struct __FILE       { int handle; };     // 標(biāo)準(zhǔn)庫(kù)需要的支持函數(shù)
FILE __stdout;                           // FILE 在stdio.h文件
void _sys_exit(int x)                    // 定義_sys_exit()以避免使用半主機(jī)模式
{  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;
}





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 仿真器
    +關(guān)注

    關(guān)注

    14

    文章

    1008

    瀏覽量

    83437
  • ARM處理器
    +關(guān)注

    關(guān)注

    6

    文章

    360

    瀏覽量

    41515
  • STM32單片機(jī)
    +關(guān)注

    關(guān)注

    58

    文章

    549

    瀏覽量

    58470
  • printf函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    31

    瀏覽量

    5865
  • USART串口
    +關(guān)注

    關(guān)注

    0

    文章

    32

    瀏覽量

    6784

原文標(biāo)題:STM32的半主機(jī)機(jī)制

文章出處:【微信號(hào):?jiǎn)纹瑱C(jī)與嵌入式,微信公眾號(hào):?jiǎn)纹瑱C(jī)與嵌入式】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    如何在POSC中使用主機(jī)

    如何在POSC中使用主機(jī)? 以上來自于百度翻譯 以下為原文How to use semi hosting in POSC?
    發(fā)表于 12-19 14:52

    何謂主機(jī)方式?

    嵌入式簡(jiǎn)答題問題 1 .何謂主機(jī)方式?主機(jī)是一種調(diào)試機(jī)制,目標(biāo)機(jī)可借助該機(jī)制將應(yīng)用程序發(fā)出的
    發(fā)表于 10-27 06:38

    如何構(gòu)建用于非主機(jī)環(huán)境的應(yīng)用程序

    主機(jī)是什么?如何構(gòu)建用于非主機(jī)環(huán)境的應(yīng)用程序?
    發(fā)表于 12-02 06:32

    什么是主機(jī)模式?為什么不用它

    1.禁用主機(jī)模式方法一:禁用主機(jī)模式,禁用了主機(jī)模式才能使用標(biāo)準(zhǔn)庫(kù)函數(shù)printf()打印
    發(fā)表于 01-12 06:23

    嵌入式USB主機(jī)系統(tǒng)的研究與設(shè)計(jì)

    摘要:介紹了USB主機(jī)的核心機(jī)制及設(shè)計(jì)方法。
    發(fā)表于 07-09 19:01 ?23次下載

    OTG IP主機(jī)庫(kù)介紹(上)

    STM32單片機(jī)的OTG IP主機(jī)庫(kù)介紹(上)
    發(fā)表于 11-25 14:50 ?0次下載

    電腦主機(jī)板的工作原理介紹

    電腦主機(jī)板的工作原理介紹,電腦主機(jī)板的工作原理介紹,電腦主機(jī)板的工作原理介紹,電腦
    發(fā)表于 05-19 15:32 ?0次下載

    主機(jī)器人足球系統(tǒng)的通信機(jī)制

    電子開發(fā)機(jī)器人相關(guān)教程資料——自主機(jī)器人足球系統(tǒng)的通信機(jī)制
    發(fā)表于 09-06 16:42 ?0次下載

    配置ADuCM302x的主機(jī)模式

    配置ADuCM302x處理器系列支持主機(jī)模式
    的頭像 發(fā)表于 06-07 13:46 ?2908次閱讀
    配置ADuCM302x的<b class='flag-5'>半</b><b class='flag-5'>主機(jī)</b>模式

    關(guān)于STM32主機(jī)機(jī)制的作用

    主機(jī)機(jī)制的作用 主機(jī)是用于ARM目標(biāo)的一種機(jī)制,可將來自
    的頭像 發(fā)表于 04-09 14:02 ?2472次閱讀
    關(guān)于<b class='flag-5'>STM32</b><b class='flag-5'>半</b><b class='flag-5'>主機(jī)</b><b class='flag-5'>機(jī)制</b>的作用

    "MODBUS移植STM32,分別配置STM32做從機(jī)和主機(jī)"

    MODBUS移植STM32分別配置STM32做從機(jī)和主機(jī)近期自學(xué)了MODBUS通信協(xié)議,也從網(wǎng)上找了很多資料,自己也分別做了從機(jī)和主機(jī)的配置,現(xiàn)在進(jìn)行配合操作。MCU采用
    發(fā)表于 12-06 18:06 ?81次下載
    "MODBUS移植<b class='flag-5'>STM32</b>,分別配置<b class='flag-5'>STM32</b>做從機(jī)和<b class='flag-5'>主機(jī)</b>"

    STM32主機(jī)機(jī)制

    主機(jī)是用于ARM目標(biāo)的一種機(jī)制,可將來自STM32單片機(jī)應(yīng)用程序的輸入輸出請(qǐng)求傳送至運(yùn)行仿真器的PC主機(jī)
    發(fā)表于 02-08 16:21 ?0次下載
    <b class='flag-5'>STM32</b>的<b class='flag-5'>半</b><b class='flag-5'>主機(jī)</b><b class='flag-5'>機(jī)制</b>

    stm32_FSMC機(jī)制

    stm32_FSMC機(jī)制,介紹FSMC機(jī)制入門
    發(fā)表于 02-21 15:16 ?18次下載

    STM32Cube USB主機(jī)庫(kù)

    電子發(fā)燒友網(wǎng)站提供《STM32Cube USB主機(jī)庫(kù) .pdf》資料免費(fèi)下載
    發(fā)表于 09-21 14:40 ?0次下載
    <b class='flag-5'>STM32</b>Cube USB<b class='flag-5'>主機(jī)</b>庫(kù)

    stm32 usb 主機(jī)發(fā)送 pid in的原理和實(shí)現(xiàn)方法

    STM32是一款常用的微控制器系列,它具有廣泛的應(yīng)用領(lǐng)域,包括工業(yè)控制、汽車電子、消費(fèi)電子等。其中,STM32同時(shí)支持USB主機(jī)和設(shè)備功能,使得它在與其他USB設(shè)備的通信中具有很大的優(yōu)勢(shì)。在本文
    的頭像 發(fā)表于 12-20 15:56 ?1069次閱讀