STM32中使用printf打印串口數(shù)據(jù)的實(shí)現(xiàn)原理
在C庫中,printf()等輸出流函數(shù)都是通過fputc()這個(gè)函數(shù)實(shí)現(xiàn)的,所以我們通過重映射的方式,修改這個(gè)函數(shù)的定義使它輸出在STM32的寄存器中,便可以實(shí)現(xiàn)使用printf()函數(shù)在STM32串口上輸出數(shù)據(jù)的功能。
盤點(diǎn)一下實(shí)現(xiàn)printf()函數(shù)打印字符串重定義到USART1的方法
方法一
1添加包含printf()函數(shù)的頭文件:#include “stdio.h”
2.重寫 stdio.h 頭文件中的 int fputc(int ch, FILE *f) 函數(shù)
3.將該函數(shù)” int fputc(int ch, FILE *f) “放在main()函數(shù)能夠調(diào)用到的文件中,KEIL-》Options for Target’xxx’-》Target-》Code Generation,勾選Use MicroLIB
方法二
//加入以下代碼,支持printf函數(shù),而不需要選擇use MicroLIB
#if 1
#pragma import(__use_no_semihosting)
//標(biāo)準(zhǔn)庫需要的支持函數(shù)
struct __FILE
{
int handle;
};
FILE __stdout;
//定義_sys_exit()以避免使用半主機(jī)模式
_sys_exit(int x)
{
x = x;
}
//重定義fputc函數(shù)
int fputc(int ch, FILE *f)
{
while( ?。║SART1-》SR & (1 《《 7)) );
USART_SendData(USART1,(uint8_t)ch);
return ch;
}
#endif
整合自:CSDN塵埃世界、Foresights
編輯:jq
-
Printf
+關(guān)注
關(guān)注
0文章
84瀏覽量
14237
發(fā)布評(píng)論請先 登錄
【RA4L1-SENSOR】+ RA4L1-SENSOR開發(fā)版之使用Jlink的RTT打印功能代替串口
【RA4L1-SENSOR】+ RA4L1-SENSOR開發(fā)版串口打印功能printf實(shí)現(xiàn)
【RA-Eco-RA4M2開發(fā)板評(píng)測】使用RA4M2的串口實(shí)現(xiàn)任意任意類型任意長度的數(shù)據(jù)接收,并將接收到的數(shù)據(jù)顯示在串口助手上
如何在熱敏打印機(jī)中實(shí)現(xiàn)圖片的灰階打印效果嗎?
PRINTF函數(shù)無法打印出浮點(diǎn)數(shù)內(nèi)容是為什么?
【瑞薩RA2L1入門學(xué)習(xí)】02. 串口打印 ADC 檢測電壓
【RA-Eco-RA2L1-48PIN-V1.0開發(fā)板試用】——使用串口輸出打印printf實(shí)現(xiàn)
【RA-Eco-RA2L1-48PIN-V1.0開發(fā)板試用】——使用Jlink的RTT實(shí)現(xiàn)串口打印功能
stdio.h實(shí)現(xiàn)了printf函數(shù)?
【敏矽微ME32G070開發(fā)板免費(fèi)體驗(yàn)】使用JLINK的RTT功能實(shí)現(xiàn)類似串口printf打印功能
51單片機(jī)中為什么很少出現(xiàn)printf的身影

評(píng)論