stm32 printf重定向

stm32調試時,有時不太適合打斷點的地方,還需要狀態,那printf就很符合我們的要求了。不多說,直接上修改方法:

首先:

添加printf的頭文件 :

#include “stdio.h”

其次:

改寫int fputc(int ch, FILE *f)函數

int fputc(int ch, FILE *f);

寄存器版
int fputc(int ch, FILE *f)

{

USART_SendData(USARTx, (uint8_t) ch);

while (USART_GetFlagStatus(USARTx, USART_FLAG_TC) == RESET);

return ch;

}

hal版本
int fputc(int ch, FILE f)
{
HAL_UART_Transmit(&huart1,((unsigned char
)&ch),1,2);
return ch;
}

最後:

在keil 平臺上改下設置:

Use MicroLIB ->Target -> Code Generation -> 選中Use MicroLIB

當然,前提是你初始化了USARTx

在IAR中一樣的:

只不過最後一個設置改一下:Projec t- >Options -> General Options -> Library Configuration中的Library 項由"Normal"改爲"Full"

最後直接使用printf函數就可以了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章