单片机
返回首页

keil环境下stm32 对printf映射

2018-07-11 来源:eefocus

printf虽然是C语言的标准函数,但是是针对有stdin, stdout设备的系统的,在嵌入式平台上是没有标准的stdin, stdout的,需要映射到串口后某个输出对象的,而嵌入式平台各不相同,如果又没有操作系统的支持,就只能靠自己实现了,因此STM32下的printf不在标准库里,而在定制的库里。而且一般在嵌入式平台一般也不用printf,可以自己使用sprintf()函数先将数据格式化到缓冲里,然后数据想输出到哪里就输出到哪里。

如果使用的是MDK,请在工程属性的“Target“-》”Code Generation“中勾选”Use MicroLIB“

#ifndef __UART_INTERFACE_H  

#define __UART_INTEFFACE_H  

#include 'stm32f10x_lib.h'  

#include 'stdio.h'  

void UART_Init(unsigned long UART_baud); //波特率,如115200  

int fputc(int ch, FILE *f);     //fputc重定向  

int fgetc(FILE *f); //fgetc重定向  

#endif  


关于两个关键函数的重定义:


[c++] view plain copy

   

 int fputc(int ch, FILE *f)  

{  

   USART_SendData(USART1, (u8) ch);  

   while(!(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == SET));  

   return ch;  

}  

int fgetc(FILE *f)  

{  

   while(!(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == SET));  

   return (USART_ReceiveData(USART1));  

}  


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 家用电源无载自动断电装置的设计与制作

  • 短波AM发射器电路设计图

  • 带有短路保护系统的5V直流稳压电源电路图

  • 如何调制IC555振荡器

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章