搜索互聯網上,關于此類問題的解決文章資料也比較豐富,不過按照其思路還是遇到了不少問題。
首先,貼代碼,大部分代碼都是類似的方案,重寫putchar或者fputc函數。
#ifdef USE_IAR
#define PUTCHAR_PROTOTYPE int putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch,FILE *f)
#endif
PUTCHAR_PROTOTYPE{
HAL_UART_Transmit(&huart1, (char *)(&(ch)), 1, 10);
return ch;
}
實際程序我定義了宏 USE_IAR,也就是實現了putchar()函數,不過實際調試,printf()函數會依次調用putchar()及fputs(),所以實際中實現其中任一一個函數即可。也就是上述的代碼,即使我不定義USE_IAR,仍然是可用的。
需要注意的一點是重寫的putchar()函數必須要返回ch變量,否則只會打印首個字符一次。
使用STM32的串口發送是阻塞的,也就是發送完一個字符程序才會繼續運行發送下一個字符。
記得配置IAR的環境 Options->General Options->Library Configuation的Library為Full。
加入printf()函數在未使用IAR的優化功能前提下,會增加8.5KBytes左右的readonly code memory,30Bytes的readonly data memory,及2.4KBytes左右的readwrite data memory。
上一篇:IAR for ARM 中printf使用方法
下一篇:IAR STM8S及STM32整合
推薦閱讀
史海拾趣
在XX世紀XX年代,DYMO公司推出了一款具有劃時代意義的標簽打印機。這款打印機采用了全新的打印技術,能夠打印出清晰、耐用的標簽,并且支持多種字體和圖案。這一創新技術讓DYMO公司在標簽打印領域取得了領先地位,并為其后續的產品線奠定了堅實的基礎。
C-MAX Time Solutions公司自創立以來,一直致力于電子時間同步技術的研發。在某一時期,公司推出了一款革命性的高精度時鐘同步芯片,這款芯片憑借其卓越的穩定性和低延遲特性,迅速在通信、金融和交通等領域獲得了廣泛應用。這一技術創新不僅提升了C-MAX的市場競爭力,也推動了整個電子行業時間同步技術的發展。
在電子行業競爭日益激烈的今天,C-MAX Time Solutions公司始終堅持研發創新。公司不斷投入資金和資源,用于新產品的研發和現有產品的升級改進。通過持續的技術創新和產品迭代,C-MAX始終保持了在電子行業中的領先地位。同時,公司還注重人才培養和團隊建設,為公司的長遠發展提供了有力保障。
以上五個故事雖然是虛構的,但它們基于電子行業的一般發展規律和市場趨勢,可能在一定程度上反映了C-MAX Time Solutions公司在實際發展過程中所面臨的挑戰和機遇。當然,具體的公司發展歷程還需要結合公司的實際情況和市場環境進行深入分析。
作為物聯網領域的領軍企業之一,Telit(包含GainSpan的技術)不僅致力于技術創新和市場拓展,還積極參與行業標準的制定和生態建設的推動。通過與其他企業和組織的合作與交流,Telit推動了物聯網技術的標準化和規范化發展。同時,它還積極構建物聯網生態系統,與上下游企業建立緊密的合作關系,共同推動物聯網產業的繁榮和發展。這些努力不僅提升了Telit在行業內的地位和影響力,也為整個物聯網產業的發展做出了重要貢獻。
第一次知道"單片機"這三個字,那是1997年.那時我還在讀中專,瘋狂的在自學電子,這三個字是從<<電子報>>上看到的,但當時對單片機沒一點認識,電子方面也是一片空白,所以單片機到底是何物,就不得而知了. 中專畢業后在家鄉任教.但對電子的 ...… 查看全部問答∨ |
神啊,救救我吧!關于wince下gethostbyname的使用 當wince連接著USB,USB所連接的電腦可以上網時,gethostbyname可以解析到域名,但是此時把PC端的網絡斷開,發現還是可以解析到域名,請問哪位大哥有做過此方面的研究?。。?!郁悶,郁悶?。。 ? 查看全部問答∨ |
我寫了一個搖獎程序,現在只能用鍵盤來控制搖獎和開獎 但我想做一個只有一個按鈕的東西,和電腦的串口相連, 然后,按一下這個按鈕,就向電腦發送一個8位的數據,然后在程序里面讀取, 但不知道這個東西怎么做 請高手幫個忙啊!!!… 查看全部問答∨ |
|
1、對日高級市場經理要求 工作描述:負責面向日本市場進行嵌入式方向的市場營銷工作 學 歷:本科及以上 工作背景:3年以上嵌入式相關企業工作經驗,2年以上市場營銷經驗 工作地點:日本(經常出差) 薪 資:按照日 ...… 查看全部問答∨ |
大家好,挽歌為大俠一個為問題! 我裝了platform Bulider4.2 是默認安裝的,里面只有X86一個型號,新建一個平臺的時候,編譯平臺不能通過,提示下面的錯誤,大家幫幫忙,告訴我是什么原因???先謝謝了!! enerating platform header files... ...… 查看全部問答∨ |
聯系 收藏 回復 編輯 刪除 如何進行ads7843觸摸屏的調試?? 我采用ads7843進行觸摸屏數據轉換,DOUT腳始終是高電平,采集的數據始終是同樣的值8190,8190(12位 最大值) 郁悶中 ,不知如何解決,請用過ads7843的朋友指點一二。 下面是程序中 ...… 查看全部問答∨ |
很簡單,我一個1500轉的電機,但是想跑30多轉,覺得不合適,覺得會對電機不好,但是找不到理由,沒想到,本來想說扭矩小,可是好像轉速慢,扭矩大啊。 在此請教高人解答了,不勝感激?。?!… 查看全部問答∨ |
9b96每個GPIO管腳都可以作為外部中斷輸入GPIOIntTypeSet(GPIO_PORTJ_BASE, GPIO_PIN_3, GPIO_LOW_LEVEL); //設置PJ3作為中斷源,低電平觸發GPIOPinIntEnable(GPIO_PORTJ_BASE, GPIO_PIN_3); &nbs ...… 查看全部問答∨ |