STM32使用printf的方法

工作需要,连接打印机,如果用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)
{      
    while((USART1->SR&0X40)==0);
    USART1->DR = (u8) ch;      
    return ch;
}
#endif 
 

例子:

int main(void)

{

    uart_init(9600);
    printf("hellow");    

}

方法二:使用微库,只需要定义fputc

 

 在代码uart.c 中添加 如下代码 (目的是为了调用stdio库中的print 函数)

#include "stdio.h"//里面包含printf

int fputc(int ch, FILE *f)

{

  while((USART1->SR&0X40)==0);//循环发送,直到发送完毕

  USART1->DR = (u8) ch;

  return ch;

}