关于Printf重定向.
用keil仿真 无法用printf打印.想用printf重定向到Usart1的方法,使printf打印信息能够在UART#1的窗口打印出来.硬件连接用的是SW(没有连SWO引脚,只连接DIO和CLK)接口方式. 芯片USART1的RX TX引脚反接仿真器RX TX引脚.
这种连接方式可以使printf重定向到usart1用Keil实现在线调试吗?
我试了好多次都实现不了!!!~
求大佬帮忙..
试一试这个:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
extern UART_HandleTypeDef huart1;
//USART1 retargetting:
struct __FILE
{
int handle;
};
FILE __stdout;
// fgetc
int fgetc(FILE *f) {
uint8_t ch = 0;
while(HAL_UART_Receive(&huart1, &ch, 1, 100000));
return((int)ch);
}
// fputc
int fputc( int ch, FILE *f )
{
while ( (USART1->SR & 0X40) == 0 )
;
USART1->DR = (uint8_t) ch;
return (ch);
}
//_ttywrch
int _ttywrch( int ch )
{
ch = ch;
return (ch);
} 官方的很多固件库里有相关的例程,参照使用即可。例如:
STM32Cube_FW_F1_V1.8.0\Projects\STM3210E_EVAL\Examples\UART\UART_Printf\MDK-ARM 楼主,你用的是什么仿真器?可以使用一个TTL的USB串口板连接USART1进行测试。确定仿真器的串口可以正常使用。 我现在串口也遇到一个问题,真的是奇了怪了,加入了fputc重定向函数,printf就是重定向不了!现象是fputc都进不去!用HAL的API进行串口输出就是正常的! 首先测试串口好坏,以及usb转ttl的好坏
关于重定向网上都有,包括cube里面自带的例程都是有的
页:
[1]