|  | 
 
| 直接上代码1、重定向printf打印的代码 
 2、不使用重定向UART5_printf打印的代码,复制代码#if 1
#pragma import(__use_no_semihosting)                          
struct __FILE 
{ 
    int handle; 
};
FILE __stdout;
void _sys_exit(int x) 
{ 
    x = x;
}
int fputc(int ch, FILE *f)
{
        UART5->TXBUF = ch;
    while (!(UART5->ISR & (0x1 << 0)));
    UART5->ISR |= (0x1 << 0);
    return ch;
}
#endif
 
 以上代码均是借鉴网络的,把我的成果也分享成了。完整代码复制代码void UART5_printf (char *fmt, ...) 
{ 
        char buffer[UART5_SEND_LEN+1];  
        int i = 0;
        va_list arg_ptr; 
        va_start(arg_ptr, fmt);   
        vsnprintf(buffer, UART5_SEND_LEN+1, fmt, arg_ptr);
        while ((i < UART5_SEND_LEN) && buffer[i]) 
        { 
                                        FL_UART_WriteTXBuff(UART5, (uint8_t) buffer[i++]); 
        while(FL_SET != FL_UART_IsActiveFlag_TXShiftBuffEmpty(UART5));       //等待发送完成
        } 
        va_end(arg_ptr); 
}
3、print.c文件完整代码
 
 复制代码<blockquote>#include "print.h"
 4、print.h文件完整代码
 
 
 复制代码<blockquote>#ifndef __PRINT_1_H__
注意:一定要将UART5初始化
 
 | 
 |