標(biāo)準(zhǔn)庫(kù)函數(shù)的默認(rèn)輸出設(shè)備是顯示器,要實(shí)現(xiàn)在串口或LCD輸出,必須重定義標(biāo)準(zhǔn)庫(kù)函數(shù)里調(diào)用的與輸出設(shè)備相關(guān)的函數(shù).
例如:printf輸出到串口,需要將fputc里面的輸出指向串口(重定向),方法如下:
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
USART_SendData(USART1, (uint8_t) ch);
while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);
return ch;
}
因printf()之類的函數(shù),使用了半主機(jī)模式。使用標(biāo)準(zhǔn)庫(kù)會(huì)導(dǎo)致程序無(wú)法運(yùn)行,以下是解決方法:
方法1.使用微庫(kù),因?yàn)槭褂梦?kù)的話,不會(huì)使用半主機(jī)模式.
方法2.仍然使用標(biāo)準(zhǔn)庫(kù),在主程序添加下面代碼:
#pragma import(__use_no_semihosting)
_sys_exit(int x)
{
x = x;
}
struct __FILE
{
int handle;
};
FILE __stdout;
另一個(gè)高手的講解
剛開始學(xué)stm32,順著gpio、uart。。。的順序慢慢爬
初始化的方法學(xué)習(xí)了馬老師的STM32_Init.h****,自己英文還可以,加上avr的基礎(chǔ)還不錯(cuò),所以gpio和時(shí)鐘配置都很順利
碰到uart就頭大了,看到各種例程里都是printf()函數(shù),自己也想用,畢竟是avr想用卻開銷不了的東西。但是我自己寫的程序里一旦出現(xiàn)printf,單片機(jī)的不干活了。查論壇首先發(fā)現(xiàn)要重定義fputc函數(shù),照做了,還是不行。
后來(lái)懷疑是uart1初始化問(wèn)題,用自己寫的put_c函數(shù)卻沒(méi)問(wèn)題。
后來(lái)又發(fā)現(xiàn)一種說(shuō)法,需要避免使用semihosting(半主機(jī)模式),我也把代碼加進(jìn)去了(改fputc去掉了),還是不行。
再一想,重定義fputc是絕對(duì)必須的,加上了之后問(wèn)題解決,成功使用printf("(敏感詞0373) \n");輸出了,哈哈
***************************************************************************************************
以上廢話,可以不看。
簡(jiǎn)單地說(shuō):想在mdk 3.80a中用printf,需要同時(shí)重定義fputc函數(shù)和避免使用semihosting(半主機(jī)模式),
論壇里應(yīng)該有完整介紹這個(gè)的帖子,但是我沒(méi)搜到,也許是沉了。重發(fā)出來(lái)希望能幫上像我這樣的菜鳥們。
需要添加以下代碼
#pragma import(__use_no_semihosting)
/******************************************************************************
*標(biāo)準(zhǔn)庫(kù)需要的支持函數(shù)
******************************************************************************/
struct __FILE
{
int handle;
/* Whatever you require here. If the only file you are using is */
/* standard output using printf() for debugging, no file handling */
/* is required. */
};
/* FILE is typedef’ d in stdio.h. */
FILE __stdout;
///
/// 定義_sys_exit()以避免使用半主機(jī)模式
///
///
///
_sys_exit(int x)
{
x = x;
}
int fputc(int ch, FILE *f)
{
//USART_SendData(USART1, (u8) ch);
USART1->DR = (u8) ch;
/* Loop until the end of transmission */
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET)
{
}
return ch;
}
上一篇:STM32的BootLoader升級(jí)
下一篇:關(guān)于STM32 使用sprintf 死機(jī)問(wèn)題
推薦閱讀
史海拾趣
機(jī)頂盒,全稱為數(shù)字視頻變換盒,是連接電視機(jī)與外部信號(hào)源的關(guān)鍵設(shè)備,其專業(yè)性與科普性兼具。從廣義上講,機(jī)頂盒泛指一切與電視機(jī)連接的網(wǎng)絡(luò)終端設(shè)備,能夠接收并轉(zhuǎn)換多種信號(hào)源,包括有線電纜、衛(wèi)星天線、寬帶網(wǎng)絡(luò)及地面廣播等,為觀眾提供豐富多樣的視聽體驗(yàn)。
在數(shù)字電視時(shí)代,機(jī)頂盒的核心功能在于實(shí)現(xiàn)數(shù)模轉(zhuǎn)換,即將接收到的數(shù)字信號(hào)轉(zhuǎn)換為電視機(jī)可識(shí)別的模擬信號(hào),從而使用戶能在模擬電視機(jī)上觀看高清甚至超高清的數(shù)字電視節(jié)目。此外,機(jī)頂盒還具備強(qiáng)大的增值服務(wù)功能,如提供電子節(jié)目指南、因特網(wǎng)網(wǎng)頁(yè)瀏覽、在線購(gòu)物、視頻點(diǎn)播等,使電視機(jī)從單向接收信息的設(shè)備轉(zhuǎn)變?yōu)榛?dòng)的智能終端。
隨著技術(shù)的不斷進(jìn)步,機(jī)頂盒正朝著高清化、智能化方向發(fā)展。高清、超高清技術(shù)的廣泛應(yīng)用,使得機(jī)頂盒能夠呈現(xiàn)更為細(xì)膩的畫面和震撼的音效。同時(shí),智能化技術(shù)的融入,如語(yǔ)音助手、智能推薦等功能的實(shí)現(xiàn),進(jìn)一步提升了用戶的使用體驗(yàn)。未來(lái),隨著5G、虛擬現(xiàn)實(shí)和增強(qiáng)現(xiàn)實(shí)等技術(shù)的不斷發(fā)展,機(jī)頂盒的應(yīng)用場(chǎng)景將更加廣泛,為用戶帶來(lái)更為沉浸式和互動(dòng)式的觀影體驗(yàn)。
綜上所述,機(jī)頂盒作為連接電視與外部世界的橋梁,不僅豐富了人們的視聽生活,更推動(dòng)了電視產(chǎn)業(yè)的數(shù)字化轉(zhuǎn)型與發(fā)展。
Defense Logistics Agency(DLA)于1961年成立,是美國(guó)國(guó)防部(DOD)的一個(gè)獨(dú)立作戰(zhàn)支援機(jī)構(gòu)。在成立初期,DLA就明確了其戰(zhàn)略定位:為全球范圍內(nèi)的美軍及國(guó)防部其他部門提供統(tǒng)一、高效的后勤保障服務(wù)。這一戰(zhàn)略定位的確立,為DLA的后續(xù)發(fā)展指明了方向。
ATS始終堅(jiān)持以創(chuàng)新為驅(qū)動(dòng)力,不斷提升研發(fā)創(chuàng)新能力。公司設(shè)立了專門的研發(fā)團(tuán)隊(duì),負(fù)責(zé)新技術(shù)和新產(chǎn)品的研發(fā)工作。通過(guò)與高校和研究機(jī)構(gòu)的合作,ATS不斷引入前沿的科技成果和人才資源,為公司的創(chuàng)新發(fā)展提供了有力支持。此外,ATS還建立了完善的研發(fā)流程和質(zhì)量控制體系,確保每一款產(chǎn)品都能達(dá)到最高的性能和質(zhì)量標(biāo)準(zhǔn)。
隨著產(chǎn)品線的不斷豐富和市場(chǎng)的擴(kuò)大,CML逐漸意識(shí)到品質(zhì)管理的重要性。公司開始引入先進(jìn)的質(zhì)量管理體系,對(duì)產(chǎn)品的研發(fā)、生產(chǎn)、銷售等各個(gè)環(huán)節(jié)進(jìn)行嚴(yán)格把控。通過(guò)持續(xù)改進(jìn)和優(yōu)化流程,CML成功提升了產(chǎn)品的品質(zhì)和可靠性,贏得了客戶的廣泛認(rèn)可。同時(shí),公司還建立了完善的售后服務(wù)體系,為客戶提供及時(shí)、專業(yè)的技術(shù)支持和服務(wù),進(jìn)一步提升了客戶滿意度。
CML公司成立于1968年,那是一個(gè)半導(dǎo)體技術(shù)剛剛起步的年代。公司創(chuàng)始人們洞察到單芯片解決方案的巨大潛力,決心打破當(dāng)時(shí)標(biāo)準(zhǔn)組件組裝的常規(guī),著手創(chuàng)建創(chuàng)新的單芯片產(chǎn)品。初創(chuàng)時(shí)期,CML面臨著資金短缺、技術(shù)瓶頸以及市場(chǎng)競(jìng)爭(zhēng)等多重挑戰(zhàn)。然而,正是在這樣的環(huán)境下,CML憑借對(duì)技術(shù)的執(zhí)著和對(duì)市場(chǎng)的敏銳洞察,成功推出了首款產(chǎn)品——頻率敏感開關(guān)。這款產(chǎn)品憑借其卓越的性能和穩(wěn)定性,迅速在消費(fèi)產(chǎn)品市場(chǎng)贏得了口碑,為CML的發(fā)展奠定了堅(jiān)實(shí)的基礎(chǔ)。
待機(jī)能耗問(wèn)題目前已成為國(guó)際社會(huì)普遍關(guān)注的熱門話題,降低家用電器待機(jī)能耗不僅意味著為消費(fèi)者節(jié)省用電開支,對(duì)緩解日趨緊張的能源壓力有積極作用,更直接的是減少了能源浪費(fèi)和環(huán)保壓力。由中國(guó)電子商會(huì)電源專業(yè)委員會(huì)、北京電源行業(yè)協(xié)會(huì)聯(lián)合主辦的 ...… 查看全部問(wèn)答∨ |
舉例說(shuō)明如何使用任務(wù): module bus_ctrl_tb; reg [7:0] data; reg data_valid, data_rd; cpu ul(data_valid,data,data_rd); initial begin & ...… 查看全部問(wèn)答∨ |
x86上跑wince,加hive注冊(cè)表后停留在開機(jī)畫面 急啊!x86上跑wince,加hive注冊(cè)表后停留在開機(jī)畫面 ,這是怎么回事。 加hive 注冊(cè)表有些什么詳細(xì)步驟?我只是加了組件和注冊(cè)表里按照網(wǎng)上添加一些東西。我不知道它詳細(xì)的步驟。!!!!!!… 查看全部問(wèn)答∨ |
求把自己寫的設(shè)備驅(qū)動(dòng)程序編譯進(jìn)嵌入式arm Linux內(nèi)核的具體方法? 自己寫了個(gè)ds1307的設(shè)備驅(qū)動(dòng)程序源代碼(iic_ds1307.c),但是對(duì)編譯內(nèi)核的方法不是很了解,怎樣把這段代碼嵌入到arm linux 2.4.20的內(nèi)核中?… 查看全部問(wèn)答∨ |
物聯(lián)網(wǎng)新領(lǐng)域780M無(wú)線傳輸模塊 眾所周知我們一直使用的無(wú)線頻段是 2.4G 433 780M是本公司研發(fā)的新領(lǐng)域,相對(duì)于 24G 433 有明顯的優(yōu)勢(shì) 如下圖典型參數(shù) 2.4GHz 433MHz 780MHz 通信頻率 該頻段有藍(lán)牙、WiFi以及其它短距離無(wú)線技術(shù),同時(shí)家用的微波爐也在該頻段范圍內(nèi),用戶比較多, ...… 查看全部問(wèn)答∨ |
關(guān)于DSP builder 9.1的破解問(wèn)題 諸位兄臺(tái):本人用的是quartus9.1 +matlab200+dsp builder 9.1 sp1,在破解dsp builder 9.1的時(shí)候,PortManager.dll總是破解不了,錯(cuò)誤提示為:文件CRC校驗(yàn)錯(cuò)誤,繼續(xù)修補(bǔ)將會(huì)損壞原始文件。本人琢磨了很久,都無(wú)功而返,懇請(qǐng)各位大蝦施以援手,感激 ...… 查看全部問(wèn)答∨ |
請(qǐng)問(wèn):購(gòu)買LM3S芯片在那個(gè)網(wǎng)站好?少量的,謝謝! 淘寶網(wǎng) 芯芯向榮 http://shop63140854.taobao.com/?spm=1103MTfS.1-4CM1e.2-2pLQrw 行嗎?… 查看全部問(wèn)答∨ |
|
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- 英飛凌微控制器:以全新實(shí)惠套件和強(qiáng)大開發(fā)環(huán)境為開發(fā)者提供支持
- iTOP-i.MX6開發(fā)板設(shè)備數(shù)驅(qū)動(dòng)Menuconfig的用法
- 迅為IMX6ULL開發(fā)板Qt for Android搭建開發(fā)環(huán)境
- 迅為i.MX8M mini開發(fā)板Windots QT系統(tǒng)開發(fā)環(huán)境搭建
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開發(fā)板Linix系統(tǒng)修改默認(rèn)屏幕
- iTOP-4412開發(fā)板支持4G以上文件系統(tǒng)擴(kuò)展
- 迅為IMX8MM開發(fā)板Yocto系統(tǒng)設(shè)置開機(jī)自啟動(dòng)
- 迅為IMX6Q開發(fā)板 Buildroot文件系統(tǒng)mqtt測(cè)試
- 高通攜手中國(guó)“汽車朋友圈”亮相2025上海車展: 加速駕駛輔助普惠,推動(dòng)艙駕創(chuàng)新升級(jí)
- 工業(yè)市場(chǎng)正在快速回暖,德州儀器如何重塑電力電子市場(chǎng)?
- 特斯拉:美國(guó)交付的Model Y/3電池包已實(shí)現(xiàn)100%美國(guó)生產(chǎn)
- 地平線與博世深化合作,攜手為多家車企提供輔助駕駛產(chǎn)品
- 強(qiáng)化中國(guó)市場(chǎng)戰(zhàn)略布局,德州儀器正靈活應(yīng)對(duì)全球關(guān)稅挑戰(zhàn)
- Molex莫仕通過(guò)本地合作和創(chuàng)新加強(qiáng)支持中國(guó)汽車行業(yè)
- 貿(mào)澤開售Texas Instruments適用于高分辨率AR HUD的 全新DLP4620S-Q1 0.46"汽車數(shù)字微鏡器件
- ROHM推出高功率密度的新型SiC模塊,將實(shí)現(xiàn)車載充電器小型化!
- 用上車規(guī)級(jí)UFS 4.0,讓出行變得高效且可靠
- 車載測(cè)試技術(shù)解析:聚焦高帶寬、多通道同步采集與協(xié)議分析
- Digi-Key KOL視頻來(lái)襲~歡迎進(jìn)入MicroPython的奇妙世界
- 福祿克明星款熱像儀全新來(lái)襲,搶先免費(fèi)體驗(yàn)贏好禮
- Mouser 新用戶大禮包:你購(gòu)物,我5折返E金幣!
- 商業(yè)航空解決方案,賦能互聯(lián)飛行
- 直播已結(jié)束【使用 TI 低成本 MSPM0 MCU 快速開發(fā) – 生態(tài)詳解系列之二】(9:45開始入場(chǎng))
- 有獎(jiǎng)直播:現(xiàn)代電動(dòng)工具的設(shè)計(jì)挑戰(zhàn)與英飛凌解決之道
- 希望一月 愛(ài)上EEWORLD——論壇推廣月
- 電機(jī)小課堂 | 單相無(wú)刷電機(jī)無(wú)感控制,小功率電機(jī)驅(qū)動(dòng)應(yīng)用中的最佳解決方案
- 聯(lián)想5年下滑56%或被踢出恒生指數(shù)
- 建筑工不足 機(jī)器人上崗
- 5G競(jìng)賽…臺(tái)灣快搶發(fā)球權(quán)
- 宏碁、華碩行銷轉(zhuǎn)向通路商變主角
- 北京Q1智能電視產(chǎn)量大幅增長(zhǎng)4.1倍
- 爆料:蘋果追蹤器AirTags或三月份推出
- LG化學(xué)勝訴,美國(guó)ITC終裁:10年內(nèi)禁止SK在美銷售電池和組件
- 數(shù)碼論:加碼中國(guó)手機(jī)市場(chǎng),是誰(shuí)給聯(lián)想的勇氣?
- 跨界“造芯”,15家上市公司并購(gòu)入局半導(dǎo)體行業(yè)
- 2021年5G手機(jī)將迎來(lái)爆發(fā)期,砷化鎵廠商機(jī)遇就在此
- 全球定位系統(tǒng)的新寵--俄羅斯“格洛納斯”衛(wèi)星導(dǎo)航系統(tǒng)正式投入商用
- 電子電路中的反饋電路
- 參加Mouser購(gòu)物5折返E金幣活動(dòng),推薦款劃算的高速18BITSAR ADC模塊EVAL-AD7984-PMDZ
- ALTERA Cyclone V 評(píng)估板試用Q&A!
- Loto實(shí)踐干貨(1)正確而又優(yōu)雅地測(cè)試電源紋波
- VHDL如何產(chǎn)生隨機(jī)數(shù)
- 關(guān)于場(chǎng)效應(yīng)管的疑惑
- [原創(chuàng)錄制]Altium Designer 雙面板一條龍完成的項(xiàng)目實(shí)戰(zhàn)視頻
- 請(qǐng)教如何看這個(gè)波特圖
- DeviceInit函數(shù)和DeviceCreat函數(shù)有什么區(qū)別