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));
}
- 【GD32 MCU 入门教程】一、GD32 MCU 开发环境搭建(1)使用Keil开发GD32
- STM32 FreeRTOS Keil环境搭建
- 如何在Keil MDK环境移植ThreadX操作系统?
- 如何构建STM32单片机keil的开发环境
- 在Keil环境编程中发现STM32内存管理存在的问题
- 基于stm32的keil开发环境搭建
- 基于Keil C51 集成开发环境的仿真与调试
- 沁恒CH32F103C8T6(一): Keil5环境配置,示例运行和烧录
- Keil MDK STM32系列(十) Ubuntu下的PlatformIO开发环境
- keil5 stm32f407 环境转stm32f103 解决方法