STM32用串口printf打印消息时使用条件编译

程序调完以后我们可能不希望再打印调试信息,这个时候可以写一个条件编译,让printf失效。

#define LOG	1   

int fputc(int ch, FILE *f)
{	
	#if LOG
	USART_SendData( USART1, (uint8_t)ch );
	while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
	#endif
	return ch;
}

在不想打印串口信息的时候将#define LOG 1改为#define LOG 0 即可,在自己调试完不需要一一删除printf代码。

但是这样做的坏处是所有printf都会失效,如果想要部分printf失效,则可以在编写的时候提前想好哪些消息调完程序之后用不到,给这些printf的外围套上条件编译。

#define LOG 0

#if LOG
printf("info: pwm_value \r\n");
#endif

printf("Program End \r\n");
posted @ 2023-01-07 09:03  Sound_Sleep  阅读(27)  评论(0编辑  收藏  举报