这样做的好处:可以很好的监控设备,以适当取代麻烦的debug; 用printf()函数代替串口发送,更易用
很简单,分两步
1.选择支持printf重定向的库
(1)在Target中选择Use MicroLIB
(2)或者在usart.c中添加
#pragma import(__use_no_semihosting)
//标准库需要的支持函数
struct __FILE
{
int handle;
};
FILE __stdout;
//定义_sys_exit()以避免使用半主机模式
int _sys_exit(int x)
{
x = x;
}
2.重定义fputc函数
(1)使用HAL库
//重定义fputc函数
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart4,(uint8_t *)&ch,1,0xFFFF);
return ch;
}
(2)或者寄存器操作
//重定义fputc函数
int fputc(int ch, FILE *f)
{
while((UART4->SR&0X40)==0){
;}//循环发送,直到发送完毕
UART4->DR = (uint8_t)ch;
return ch;
}
3.使用
(1)使用的时候直接printf就行
printf("-------------------");
(2)为了以后更方便使用,把这个函数加入自己的模版中
下次用的时候直接点击模版
4.打印设备运行状态LOG