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

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

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

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

STM32嵌入式開發(fā) ? 來源:STM32嵌入式開發(fā) ? 作者:STM32嵌入式開發(fā) ? 2021-04-09 14:02 ? 次閱讀

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

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

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

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

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

Use MicroLIB(微庫)

因為使用微庫的話,不會使用半主機(jī)模式。

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

37a51ec0-9869-11eb-8b86-12bb97331649.png

在主程序中添加代碼

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

【功 能】 printf函數(shù)重定向支持代碼 * 加入以下代碼, 使用printf函數(shù)時, 不再需要選擇use MicroLIB * 參 數(shù): * 返回值:

#pragma import(__use_no_semihosting) //為確保沒有從C庫鏈接使用半主機(jī)的函數(shù) struct __FILE { int handle; }; // 標(biāo)準(zhǔn)庫需要的支持函數(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;}

STM32嵌入式開發(fā)

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

文章出處:【微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

責(zé)任編輯:haq

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

    關(guān)注

    5046

    文章

    18817

    瀏覽量

    298535
  • STM32
    +關(guān)注

    關(guān)注

    2258

    文章

    10828

    瀏覽量

    352482

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

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    請問D類功放的橋逆變加入變壓器的作用是什么?

    請問D類功放的橋逆變加入變壓器的作用是什么? 想做一款100W的功放,看到很多都是功放IC直接LC濾波,但是也有一些方案是隔離橋的變壓器之后用LC濾波,想了解一下問什么會有變壓器這種方案? 多謝
    發(fā)表于 08-15 06:42

    申威終端主機(jī)G701

    主機(jī)
    jf_67464575
    發(fā)布于 :2024年06月11日 08:53:30

    使用USBUART組件與主機(jī)PC通信,如果在串行端口打開的情況下終止固件,主機(jī)端為什么會報錯?

    我正在使用 USBUART 組件與主機(jī) PC 通信,我一直在尋找某種機(jī)制來關(guān)閉 MCU 端的串行端口,或者至少通知主機(jī)我將關(guān)閉端口。 我遇到過這樣一個問題:如果在串行端口打開的情況下終止固件(如重置
    發(fā)表于 06-03 08:41

    求助,關(guān)于stm32應(yīng)用bootloader主機(jī)端接收ACK的問題求解

    最近接手了一個學(xué)長所做的編程板程序。其中想用GO命令實現(xiàn)程序在目標(biāo)新品的ram區(qū)運行功能。發(fā)送0x21+0xDE后返回ACK正常,但是發(fā)送起始地址和校驗和之后很長時間主機(jī)未收到ACK或者NACK。我
    發(fā)表于 05-17 06:45

    STM32F107做USB主機(jī)鍵盤,鍵盤上那3個LED燈的功能怎么按都不起作用是怎么回事?

    STM32F107做USB主機(jī)讀取鍵盤按鍵數(shù)值用串口調(diào)試助手顯示都很正常,只是鍵盤上那3個LED燈的功能怎么按都不起作用,求大神指點
    發(fā)表于 05-14 06:56

    STM32F0作為I2c的從機(jī)時,響應(yīng)主機(jī)的讀命令,如何知道主機(jī)發(fā)回的ACK還是No ACK?

    如題, 請教各位大神, STM32F0作為I2c的從機(jī)時(硬件IIc,中斷方式), 響應(yīng)主機(jī)的讀命令, 發(fā)送了一個字節(jié)后 , 如何知道主機(jī)發(fā)回的ACK還是No ACK , 范例里面都是一個字節(jié)的, 如果
    發(fā)表于 05-11 09:10

    關(guān)于STM32 DMAMUX模塊具體的應(yīng)用示例代碼

    有人通過公眾號微信留言,詢問是否有關(guān)于STM32 DMAMUX模塊具體的應(yīng)用示例代碼。同時,個人也發(fā)現(xiàn),雖然STM32片內(nèi)的DMAMUX不是什么新模塊,似乎還是很多人并不太熟悉。這里借機(jī)聊聊這方面的內(nèi)容,重點演示相關(guān)功能的實現(xiàn),
    的頭像 發(fā)表于 03-25 09:15 ?2013次閱讀
    <b class='flag-5'>關(guān)于</b><b class='flag-5'>STM32</b> DMAMUX模塊具體的應(yīng)用示例代碼

    橋驅(qū)動電路的作用及設(shè)計要點

    橋驅(qū)動電路根據(jù)控制信號的輸入,在適當(dāng)?shù)臅r機(jī)控制高側(cè)和低側(cè)開關(guān)器件的導(dǎo)通與截止。通過精確控制開關(guān)的狀態(tài),橋驅(qū)動電路可以控制電源電壓的輸出和輸出功率的調(diào)節(jié)。
    的頭像 發(fā)表于 02-05 18:17 ?5283次閱讀
    <b class='flag-5'>半</b>橋驅(qū)動電路的<b class='flag-5'>作用</b>及設(shè)計要點

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

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

    固態(tài)電池率先進(jìn)入量產(chǎn)裝車階段

    近日有更多電池廠、主機(jī)廠也紛紛在固態(tài)電池賽道中釋放出升溫的信息。本周,蜂巢能源正式發(fā)布全球首款量產(chǎn)方形固態(tài)電池(即二代果凍電池),突破了方殼中高鎳摻硅體系膨脹的瓶頸,目前已進(jìn)入A樣開發(fā)階段。
    發(fā)表于 12-19 15:08 ?528次閱讀

    STM32 DMA傳輸?shù)膯栴}分析

    用戶使用STM32G473RET6芯片,開發(fā)環(huán)境STM32CubeMX+Keil(LL庫)。使用DMA1通道1,在傳輸中斷和完全傳輸中斷里,拷貝ADC采集的數(shù)據(jù)。在應(yīng)用過程中發(fā)現(xiàn)DMA
    的頭像 發(fā)表于 12-01 09:19 ?2267次閱讀
    <b class='flag-5'>STM32</b> DMA傳輸?shù)膯栴}分析

    求助,關(guān)于KW45芯片雙倍模式的SPI配置問題

    最近調(diào)試KW45芯片的SPI外圍, KW45作為主機(jī), 有三個SPI奴隸裝置。有一個宿主需要與一個雙倍核心和一個全倍的裝置進(jìn)行溝通。 對不起: 1, 雙倍模式 SPI 主機(jī)如何配置
    發(fā)表于 11-13 07:04

    基于STM32處理器和PC主機(jī)的USB通信協(xié)議的實現(xiàn)

    電子發(fā)燒友網(wǎng)站提供《基于STM32處理器和PC主機(jī)的USB通信協(xié)議的實現(xiàn).pdf》資料免費下載
    發(fā)表于 10-26 10:05 ?2次下載
    基于<b class='flag-5'>STM32</b>處理器和PC<b class='flag-5'>主機(jī)</b>的USB通信協(xié)議的實現(xiàn)

    關(guān)于STM32WL LSE 添加反饋電阻后無法起振問題

    關(guān)于STM32WL LSE 添加反饋電阻后無法起振問題
    的頭像 發(fā)表于 10-25 16:48 ?663次閱讀
    <b class='flag-5'>關(guān)于</b><b class='flag-5'>STM32</b>WL LSE 添加反饋電阻后無法起振問題

    為什么STM32F446的引腳外設(shè)功能機(jī)制不能remap?

    為什么STM32F446的引腳外設(shè)功能機(jī)制不能remap沒有引腳默認(rèn)的第二功能這個說法呢?
    發(fā)表于 09-26 07:53