STM32中使用printf打印串口數(shù)據(jù)的實現(xiàn)原理
在C庫中,printf()等輸出流函數(shù)都是通過fputc()這個函數(shù)實現(xiàn)的,所以我們通過重映射的方式,修改這個函數(shù)的定義使它輸出在STM32的寄存器中,便可以實現(xiàn)使用printf()函數(shù)在STM32串口上輸出數(shù)據(jù)的功能。
盤點一下實現(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)
//標準庫需要的支持函數(shù)
struct __FILE
{
int handle;
};
FILE __stdout;
//定義_sys_exit()以避免使用半主機模式
_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文章
83瀏覽量
14019
發(fā)布評論請先 登錄
相關(guān)推薦
PRINTF函數(shù)無法打印出浮點數(shù)內(nèi)容是為什么?
【瑞薩RA2L1入門學習】02. 串口打印 ADC 檢測電壓
【RA-Eco-RA2L1-48PIN-V1.0開發(fā)板試用】——使用串口輸出打印printf實現(xiàn)
【RA-Eco-RA2L1-48PIN-V1.0開發(fā)板試用】——使用Jlink的RTT實現(xiàn)串口打印功能
stdio.h實現(xiàn)了printf函數(shù)?
【敏矽微ME32G070開發(fā)板免費體驗】使用JLINK的RTT功能實現(xiàn)類似串口printf打印功能
51單片機中為什么很少出現(xiàn)printf的身影

STM32CUBEMX(8)--USART通過定時器中斷方式接收不定長數(shù)據(jù)
STM32CUBEMX(6)--移植雅特力AT32F403AVGT7,雙串口通過DMA方式接收不定長數(shù)據(jù)
STM32CUBEMX(2)--USART通過DMA方式接收不定長數(shù)據(jù)
STM32CubeIDE printf浮點數(shù),浮點數(shù)丟失數(shù)值的原因?
STM32CubeIde生成的工程,使用printf函數(shù)沒有調(diào)用_write和__io_putchar函數(shù),為什么?
【GD32H757Z海棠派開發(fā)板使用手冊】第九講 USART-printf打印實驗

評論