娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年03月09日(星期日)

正在發(fā)生

2019年03月09日 | STM32 printf半主機(jī)模式

發(fā)布者:紫菜包飯 來(lái)源: eefocus關(guān)鍵字:STM32  printf  半主機(jī)模式 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

看了原子哥的usart部分printf函數(shù)重定向的問(wèn)題,自己動(dòng)手試了試,單片機(jī)可以通過(guò)串口打印信息,printf函數(shù)重定向后使用十分方便。


所謂重定向是指修改printf的底層函數(shù),使printf打印到單片機(jī)的外設(shè)中。

還有一個(gè)概念是半主機(jī)。


半主機(jī)是用于 ARM 目標(biāo)的一種機(jī)制,可將來(lái)自應(yīng)用程序代碼的輸入/輸出請(qǐng)求傳送至運(yùn)行調(diào)試器的主機(jī)。 例如,使用此機(jī)制可以啟用 C 庫(kù)中的函數(shù),如 printf() 和 scanf(),來(lái)使用主機(jī)的屏幕和鍵盤,而不是在目標(biāo)系統(tǒng)上配備屏幕和鍵盤。


這種機(jī)制很有用,因?yàn)殚_發(fā)時(shí)使用的硬件通常沒有最終系統(tǒng)的所有輸入和輸出設(shè)備。 半主機(jī)可讓主機(jī)來(lái)提供這些設(shè)備。


半主機(jī)是通過(guò)一組定義好的軟件指令(如 SVC)來(lái)實(shí)現(xiàn)的,這些指令通過(guò)程序控制生成異常。 應(yīng)用程序調(diào)用相應(yīng)的半主機(jī)調(diào)用,然后調(diào)試代理處理該異常。 調(diào)試代理提供與主機(jī)之間的必需通信。


半主機(jī)接口對(duì) ARM 公司提供的所有調(diào)試代理都是通用的。 在無(wú)需移植的情況下使用 RealView ARMulator? ISS、指令集系統(tǒng)模型 (ISSM)、實(shí)時(shí)系統(tǒng)模型 (RTSM)、RealView ICE 或 RealMonitor 時(shí),會(huì)執(zhí)行半主機(jī)操作。


標(biāo)準(zhǔn)庫(kù)使用半主機(jī)模式,半主機(jī)是通過(guò)一組定義好的軟件指令 (如 SVC)SVC 指令 (以前稱為 SWI 指令)來(lái)實(shí)現(xiàn)的,這些指令通過(guò)程序控制生成異常。 應(yīng)用程序調(diào)用相應(yīng)的半主機(jī)調(diào)用,然后調(diào)試代理處理該異常。調(diào)試代理(這里的調(diào)試代理是仿真器)提供與主機(jī)之間的必需通信。也就是說(shuō)使用半主機(jī)模式必須使用仿真器調(diào)試。


ARMv7 之前的 ARM 處理器使用 SVC 指令 (以前稱為 SWI 指令)進(jìn)行半主機(jī)調(diào)用。 但是,如果要為 ARMv6-M 或 ARMv7-M (如 Cortex?-M1 或 Cortex-M3 處理器)進(jìn)行編譯,請(qǐng)使用 BKPT 指令來(lái)實(shí)現(xiàn)半主機(jī)。


簡(jiǎn)單的來(lái)說(shuō),半主機(jī)模式就是通過(guò)仿真器實(shí)現(xiàn)開發(fā)板在電腦上的輸入和輸出。和半主機(jī)模式功能相同的是ITM調(diào)試機(jī)制。

       上面介紹的半主機(jī)和ITM功能相當(dāng),他們都是調(diào)試機(jī)制,開發(fā)板均借助仿真器與電腦連接,實(shí)現(xiàn)單片機(jī)利用主機(jī)的屏幕鍵盤的輸入輸出。


這兩種機(jī)制的運(yùn)行均需要仿真器,否則無(wú)法運(yùn)行。


       開發(fā)式一般單片機(jī)需要獨(dú)立運(yùn)行,開發(fā)者應(yīng)去掉仿真器,把printf函數(shù)通過(guò)單片機(jī)的外設(shè)來(lái)實(shí)現(xiàn),例如通過(guò)開發(fā)板的串口,lcd或者sd卡。


      MDK中通常使用以下兩種方法:


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

int fputc(int ch, FILE *f)
{      
while((USART1->SR&0X40)==0);
    USART1->DR = (u8) ch;      
return ch;

}  

方法2.仍然使用標(biāo)準(zhǔn)庫(kù),在主程序添加下面代碼:
#pragma import(__use_no_semihosting) 
struct __FILE 

int handle; 
}; 
FILE __stdout;       
_sys_exit(int x) 

x = x; 

int fputc(int ch, FILE *f)
{      
while((USART1->SR&0X40)==0);//??··¢?í,?±μ?·¢?ííê±?   
    USART1->DR = (u8) ch;      
return ch;
}

關(guān)于 microlib

microlib 是缺省 C 庫(kù)的備選庫(kù)。 它用于必須在極少量?jī)?nèi)存環(huán)境下運(yùn)行的深層嵌入式應(yīng)用程序。 這些應(yīng)用程序不在操作系統(tǒng)中運(yùn)行。microlib 不會(huì)嘗試成為符合標(biāo)準(zhǔn)的 ISO C 庫(kù)。

microlib 進(jìn)行了高度優(yōu)化以使代碼變得很小。 它的功能比缺省 C 庫(kù)少,并且根本不具備某些 ISO C 特性。某些庫(kù)函數(shù)的運(yùn)行速度也比較慢,例如,memcpy()。

上面給出了正確的方法,我在測(cè)試的過(guò)程中發(fā)現(xiàn)方法二中注釋掉#pragma import(__use_no_semihosting) 程序依然運(yùn)行正確,這個(gè)很讓人費(fèi)解。

也有使用#pragma import(__use_no_semihosting_swi)的。這幾個(gè)的區(qū)別我沒弄懂。

如果使用微庫(kù)或者禁用半主機(jī),沒有重定義fputc函數(shù),程序可以運(yùn)行,但不知道結(jié)果打印到主機(jī)的哪個(gè)地方去了。既沒有禁用半主機(jī)也沒有重定義fputc函數(shù),程序?qū)⒁恢蓖T谥袛嗵帲鐖D:

 

網(wǎng)上的大部分資料都是禁用了半主機(jī)模式,沒有使用過(guò)半主機(jī)模式借助主機(jī)的鍵盤輸入?yún)?shù),看了很多資料,都是講半主機(jī)的,但講的內(nèi)容太淺顯,

我沒有學(xué)會(huì)使用半主機(jī),更多的是學(xué)會(huì)了禁用半主機(jī)模式,我們好像忽略了半主機(jī)模式的意義。

 

另外,我們可以查到的大部分資料講解的大同小異,它們更多的告訴我們正確的步驟,而不是讓我們從源頭了解一個(gè)問(wèn)題,當(dāng)然,大部分人看重的是實(shí)用,問(wèn)題解決了,也就不再去思考背后的原理。

最有效最直接最權(quán)威的資料是mdk官方給出的資料,但是資料內(nèi)容太多,看起來(lái)太多,不易懂,大部分人沒有看下去的欲望。我們應(yīng)該讓使用手冊(cè)看起來(lái)更直觀,更易懂,更方便查閱,更高效地查閱。


關(guān)鍵字:STM32  printf  半主機(jī)模式 引用地址:STM32 printf半主機(jī)模式

上一篇:stm32 一上電串口發(fā)送0x00
下一篇:基于STM32的ADS8339 驅(qū)動(dòng)

推薦閱讀

  今年兩會(huì)政府工作報(bào)告指出,將新能源汽車車輛購(gòu)置稅優(yōu)惠政策再延長(zhǎng)三年,全面取消二手車限遷政策。  延長(zhǎng)新能源汽車購(gòu)置稅優(yōu)惠政策一舉多得,至少有三方面的意義。其一,在科技創(chuàng)新方面,新能源汽車不僅帶來(lái)汽車動(dòng)力方面的革新,更全方位集聚了多項(xiàng)科技成果。從某種程度上說(shuō),智能汽車已經(jīng)成為具有強(qiáng)大外溢效應(yīng)的基礎(chǔ)創(chuàng)新。眼下,國(guó)內(nèi)的智能汽車產(chǎn)業(yè)...
臺(tái)積電2月業(yè)績(jī)表現(xiàn)出爐,單月營(yíng)收608.89億元新臺(tái)幣(單位下同),月減22%,年減5.8%,累計(jì)1、2月營(yíng)收1389.83億元,相較去年同期減少3.7%,業(yè)績(jī)表現(xiàn)偏弱。臺(tái)積電元月時(shí)Fab14B晶圓受到污染,導(dǎo)致12/16納米良率出現(xiàn)問(wèn)題,由于受影響程度擴(kuò)大,公司已下修首季財(cái)測(cè),估單季營(yíng)收落在約2142至2172億元左右,以前兩個(gè)月業(yè)績(jī)推估,3月營(yíng)收若落在約752億元到782億元...
據(jù)路透社報(bào)道,諾基亞年報(bào)顯示,上月已獲得5億歐元(5.61億美元)的5G技術(shù)研發(fā)貸款。該公司表示,這筆于歐洲投資銀行(EIB)申請(qǐng)的貸款于今年2月24日提取。 據(jù)了解,諾基亞在2018年8月簽署該筆貸款協(xié)議時(shí)曾表示:“諾基亞將利用這筆貸款,進(jìn)一步加快下一代移動(dòng)通信標(biāo)準(zhǔn)5G技術(shù)的研...
CEA-Leti為開發(fā)適用于廣泛商業(yè)應(yīng)用的LiDAR系統(tǒng)邁出了關(guān)鍵的一步,它已經(jīng)開發(fā)了用于校正高通道數(shù)光學(xué)相控陣(OPA)的遺傳算法,以及能夠進(jìn)行晶圓級(jí)OPA表征的高級(jí)測(cè)量裝置。 OPA是一種新興技術(shù),由緊密排列(約1 0 8m)的光學(xué)天線陣列構(gòu)成,并在寬角度范圍內(nèi)發(fā)射相干光。然后可以通過(guò)調(diào)節(jié)每個(gè)天線發(fā)射的光的相對(duì)相位來(lái)改變產(chǎn)生的干涉圖樣。例如,如果天線...

史海拾趣

小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 同德县| 建瓯市| 南宁市| 临颍县| 通江县| 曲阳县| 郎溪县| 虹口区| 淮安市| 甘肃省| 乌海市| 乃东县| 定日县| 虎林市| 罗田县| 恩平市| 灌南县| 吴江市| 云龙县| 隆尧县| 灵宝市| 汨罗市| 萨迦县| 玉门市| 保定市| 庆阳市| 长宁县| 手机| 古交市| 秭归县| 天门市| 开平市| 澄迈县| 宁海县| 健康| 嵩明县| 东莞市| 漾濞| 连州市| 阿巴嘎旗| 濉溪县|