STM32
直播中

杨火亭

9年用户 1079经验值
擅长:控制/MCU
私信 关注
[问答]

如何使用STM32的USART1去实现printf标准库函数呢

如何使用STM32的USART1去实现printf标准库函数呢?

回帖(1)

李蒙

2021-11-30 11:10:40
概要

  使用USART1,实现printf。printf是标准库函数,在使用的需要包含stdio.h头文件。在prinft内部最终调用fputc库函数,因此需要重写fputc库函数,将要输出的内容输出到串口上。
  实现


#include "usart.h"


#pragma import(__use_no_semihosting)


struct __FILE
{
    int handle;
    /* Whatever you require here. If the only file you are using is */
    /* standard output using printf() for debugging, no file handling */
    /* is required. */
};
/* FILE is typedef’ d in stdio.h. */
FILE __stdout;
_sys_exit(int x)
{
    x = x;
}


//redefine fputc using USART1
int fputc(int ch, FILE *f)
{
    //status register, [6]transmission complete
    while((USART1->SR & 0x40) == 0);
    USART1->DR = (u8)ch;
    return ch;
}


void uart_init(u32 pclk2, u32 bound)
{
    //initialize usart1
}
举报

更多回帖

发帖
×
20
完善资料,
赚取积分