STM32中使用printf打印串口數(shù)據(jù)的實(shí)現(xiàn)原理
在C庫(kù)中,printf()等輸出流函數(shù)都是通過(guò)fputc()這個(gè)函數(shù)實(shí)現(xiàn)的,所以我們通過(guò)重映射的方式,修改這個(gè)函數(shù)的定義使它輸出在STM32的寄存器中,便可以實(shí)現(xiàn)使用printf()函數(shù)在STM32串口上輸出數(shù)據(jù)的功能。
盤(pán)點(diǎn)一下實(shí)現(xiàn)printf()函數(shù)打印字符串重定義到USART1的方法
方法一
1添加包含printf()函數(shù)的頭文件:#include “stdio.h”
2.重寫(xiě) 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)庫(kù)需要的支持函數(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( !(USART1-》SR & (1 《《 7)) );
USART_SendData(USART1,(uint8_t)ch);
return ch;
}
#endif
整合自:CSDN塵埃世界、Foresights
編輯:jq
-
Printf
+關(guān)注
關(guān)注
0文章
84瀏覽量
14734
發(fā)布評(píng)論請(qǐng)先 登錄
【RA-Eco-RA2E1-V1.0開(kāi)發(fā)板試用】串口打印例程。
STM32中使用printf打印串口數(shù)據(jù)的實(shí)現(xiàn)原理及方法
評(píng)論