知識社群
登入
中文(台灣)
English(US)
Q&A
線上人數:
156
回首頁
最新活動
(34)
公佈欄
最新公告
近期課程
技術專欄
Android
嵌入式Linux
韌體設計
FPGA / Verilog
站上資源
線上教學
文件總覽
廠商徵才
專業論壇
(1315)
推廣成果
學員專題
Android I/O Workshop
Android 企業產訓專班
活動花絮
(58)
專班學員資訊平台
102年嵌入式軟韌體設計工程師養成班
102年JAVA程式設計班
102Linux網路工程師-LPI認證養成班
嵌入式Linux就業班第二梯次
嵌入式Linux就業班第三梯次
101年 Android設計班(2)
101年 Android設計班(1)
公告
艾鍗學院成立滿十週年了!十年一遇的超值回饋,獻給堅持學習的你~
(03-12)
【2019下半年課程行事曆】政府+企業雙重補助,AI人才養成計劃開跑
(07-10)
IT TRAINING 2019上半年最新技術培訓一覽
(03-13)
[
more
]
最新消息
文件分類
[
總覽
]
廠商徵才資訊
(215)
學員專題成果
(31)
研討會活動專區
(5)
Android 專欄
(19)
活動簡報檔
(2)
線上教學 Training Video
(24)
韌體設計相關
(17)
Embedded LInux 專欄
(54)
Raspberry Pi
(4)
FPGA/Verilog 專欄
(14)
小品文章
(37)
未分類文件
(28)
101年 Android 應用軟體設計班
(4)
基礎C程式&資料結構
(8)
嵌入式Linux就業班第二梯次
(20)
101年臺北市政府勞工局職業訓練中心-Android APP 軟體開發人才培訓就業班
(16)
102年Linux網路工程師-LPI認證養成班
(9)
102年JAVA程式設計班
(2)
102年嵌入式軟韌體設計工程師養成班
(6)
Access VBA
(5)
Excel VBA
(4)
產業訊息
(2)
PCB Layout
(7)
電子電路
(6)
專班文件區
嵌入式Linux就業班第三梯次
(13)
社群資訊
訪客: 3179364
文章: 557
討論: 1315
公告: 31
容量: 剩餘
2.4 GB
(4 GB)
閱讀權限: 開放
分類:
教育學習 / 軟體系統
版主: 艾鍗學院
副版主: 無
位置:
艾鍗學院 Blog
>
專業論壇
>
討論
如何使用UART傳送printf ()函式之字串
(Louis Kao,
kao028kimo@gmail.com
, 2013-06-05 15:30)
1樓
大家好:
我想將Stdio.h內的I/O標準函式----printf()以UART傳輸ASCII至其它PC的終端機上面
之前我的Hello World.c都是用Dev C編譯過後在黑色終端機上面顯示"Hello World!"
現在 同樣的結果
我希望Hello World的printf("Hello World");可以透過MCU以UART傳輸給其他PC的HyperTermal來顯示
我已經可以用MCU傳輸單一個英文字母給PC 的Hypertermal讓其顯示之 所以硬體傳輸的部份是沒有問題的
所以要怎麼做呢?
(Ryan,
karamaster@gmail.com
, 2013-07-13 22:34)
2樓
雖然看不太懂你的意思 >> printf()以UART傳輸ASCII至其它PC的終端機上面
建議google , linux serial howto , 答案應該就在裡面
最近都在寫Uart 相關的程式, 可來信互相討論討論
(Robert, 2014-05-20 14:43)
3樓
我也有同樣的問題, 即printf 是打印在 screen 上, 但我是要真正傳出至 RS232 出去, 要怎麼做 ?
(joseph, 2014-05-26 22:56)
4樓
基本上的流程如下, 要做到C函式的printf (char *fmt, ...) 這種寫法,
可以copy一下C函式 vsprintf 的實作 (google下就有了), 另外配合C函式庫的 stdarg.h
就可以完成了
void
printf
(const char *fmt, ...)
{
va_list args;
uint i;
char printbuffer[CFG_PBSIZE];
va_start (args, fmt);
/* For this to work, printbuffer must be larger than
* anything we ever want to print.
*/
i =
vsprintf
(printbuffer, fmt, args);
va_end (args);
/* Print the string */
puts (printbuffer);
}
void
puts
( char *s);
{
while (s !=NULL && *s!=0)
serial_putc(*s);
}
/*
* Output a single byte to the serial port.
*/
void
serial_putc
(const char c)//发送数据
{
SoC_UART * const uart = SoC_GetRegBase_UART(UART0);
/* wait for room in the tx FIFO */
while (!(uart->UTRSTAT & 0x2));
uart->UTXH = c;
/* If \n, also do \r */
if (c == '\n')
serial_putc ('\r');
}
建議google , linux serial howto , 答案應該就在裡面
最近都在寫Uart 相關的程式, 可來信互相討論討論