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文章
81瀏覽量
13587
發(fā)布評論請先 登錄
相關(guān)推薦
評論