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函数就可以了。