//將stdio.h頭文件中的printf函數注釋掉不然會沖突
//stdio.h頭文件還是要包含的里面有va_list的定義
//使用vsprintf將要打印的數據賦給字符串
//使用字符串發送函數發送字符串
//不要把這個數組放在printf函數里面,一方面會在棧分配內存上耗費時間
//另一方面也是最主要的如果棧空間不夠了還要分配100個字節那就會導致
//堆棧溢出,CC2530使用256字節的IDATA的一部分作為棧空間,我設置成了0xC0
//也就是192字節,在函數調用層次很深的時候在調用printf函數就會很容易
//導致堆棧溢出,出現莫名其妙的問題。
char string[100];
void printf(char *fmt,...)
{
va_list ap; //typedef char *va_list; va_list是char型的指針
va_start(ap,fmt); //這個函數的功能是,找到第一個可變形參的地址,并把地址賦給ap
vsprintf(string,fmt,ap); //其實這個函數才是核心函數,沒研究。。。
UartSendString(string); //這個函數就是發送字符串函數,通過上一個函數,就把該提取的東西都提取了
va_end(ap); //結束函數
}
其實使用sprintf函數就可以實現printf功能了,例如:
sprintf(string,fmt,...);
UartSendString(string);
上一篇:STM8等低端單片機打印各種格式數據
下一篇:stm8 停機模式與外部中斷喚醒中一個小問題
推薦閱讀
史海拾趣
Altmustech公司的創立源于一次技術突破。創始人李博士帶領的團隊成功研發了一款高效能、低成本的半導體芯片,這一創新技術解決了當時電子行業面臨的能效問題,迅速引起了市場的關注。隨著技術的不斷完善和產品的推出,Altmustech逐漸在半導體市場上嶄露頭角,為公司的快速發展奠定了堅實的基礎。
在快速發展的同時,Altmustech始終不忘履行社會責任。公司積極參與公益事業,支持教育、環保等領域的發展。此外,公司還注重環境保護和可持續發展,致力于研發更加環保、節能的產品和解決方案。這些舉措不僅提升了公司的社會形象,也為企業的長遠發展奠定了良好的社會基礎。
以上五個故事分別從不同角度展現了Altmustech公司在電子行業中的發展歷程和成就。這些故事旨在客觀描述事實,未加入任何主觀評價或情感色彩。
Ferroperm公司非常重視產品的品質管理。他們建立了嚴格的質量管理體系,從原材料采購到產品生產、檢測等各個環節都實行嚴格的質量控制。同時,Ferroperm還注重持續改進,不斷引進先進的生產設備和檢測技術,提高產品的質量和性能。這種對品質的執著追求使得Ferroperm的產品在市場上獲得了良好的口碑和信譽。
AW Industries Inc成立之初,正值電子行業的快速發展期。公司創始人憑借對市場的敏銳洞察,決定專注于生產高精度電子元件。然而,初創期的資金短缺和技術難題成為公司發展的兩大障礙。創始人通過多方籌資,成功引入了第一批投資,并聘請了一支技術團隊進行研發。在團隊的不懈努力下,公司成功推出了首款產品,并迅速獲得了市場的認可。
隨著市場競爭的加劇,AW Industries Inc意識到只有不斷創新才能在行業中立足。公司加大了對研發的投入,并成功研發出了一款具有革命性的新型電子元件。這款元件不僅性能卓越,而且成本更低,迅速在市場上占據了主導地位。這一創新成果不僅為公司帶來了豐厚的利潤,也奠定了其在電子行業的領先地位。
看到ouravr上有一些關于AVR低功耗設計的經驗,轉載來: 1、使用休眠SLEEP模式的時候盡量避免采用循環延時和事件等待,使用中斷驅動事件 2、使用盡可能低的頻率和電壓 3、不用的管腳接到邏輯電平上,接VCC或接地 4、關閉所有沒有使用的CPU周 ...… 查看全部問答∨ |
|
有臺設備是wince5.0,配的華為em200的cdma模塊,我用ras連網后斷網打電話,但斷網后串口還是一直傳出亂七八糟的亂碼 發送at指令后也是亂碼 但很有規律 關了串口調試工具再打開就沒問題了 所以的懷疑是沒有很好地清除串口 ...… 查看全部問答∨ |
|
小弟近日想搞搞ARM11的裸機編程,用的是TQ6410開發板,仿真器是另配的Jlinkv8仿真器,并且使用了與TQ6410配套的仿真接口轉換板。調試軟件使用的是AXD Debugger v1.3.1,驅動是V4.22版的。開發板與仿真器連好,上電,打開AXD,顯示:ARM RDI 1.5.1 - ...… 查看全部問答∨ |
#include<pic.h> #define uchar unsigned char #define uint unsigned int __CONFIG(0x3B31); void delay_ms(uint z)//提供ms級延時函數,z ms { uchar x; uint y; for(x=110;x>0;x--) for(y=z;y>0;y-- ...… 查看全部問答∨ |
第一章 主頻控制-- 5 1.1 時鐘產生-- 5 1.2 PLL倍頻功能-- 5 1.3 主頻配置圖-- 6 1.4 在KEIL中快速配置主頻-- 7 1.5 SystemInit函數詳解-- 9 1.6 時鐘輸出引腳CLKOUT- 19 ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- 閱讀TI工業應用方案精彩專題,開啟任意寶箱,挑戰答題抽好禮!
- 提交創意【免費贏取600元DIY物料】,參賽沖擊萬元大獎!2022得捷創新設計大賽火熱報名中
- 有獎直播報名|瑞薩RA MCU家族成員快速增長,助力打造安全穩定的工業控制系統
- 免費申請測評:超小型 Linux 開發套件:Quantum Tiny Linux(帶 SoM 和擴展板)
- 有獎直播:TI 低功耗 MCU 產品和 Zigbee 無線解決方案
- ADI有獎下載活動之20:基于NDIR和PID的ADI氣體探測器解決方案和新產品
- TI C2000TM的信號鏈實時性評測和使用教程
- 上演你的“ADI實驗室電路”DIY,贏取E金幣 !
- 安森美半導體移動與可穿戴設備解決方案下載有禮!