STM32F103程序串口调用printf打印数据

2018-06-10 11:20:19编辑:什么鱼 关键字:STM32F103  串口调用  printf  打印数据

程序开发过程中调试必不可少,一种简单直接的调试方式是使用串口发送数据,并使用串口助手进行观测。以前使用MSP430做项目时也同样使用printf打印数据,所以现在想在stm32 上实现。

通常串口发送单字节库函数:USART_SendData(USART1, (uint8_t) ch);对显示小数等数据比较复杂,如果能够直接使用C语言 stdio.h中的printf直接输出就可以省去大部分格式输出转化时间。下面将介绍如何调用printf打印串口数据。

建立USART.C和USART.H两个文件,分别编写串口设置程序与头文件

USART.C中需要添加如下代码:


  1. int fputc(int ch, FILE *f)  

  2. {  

  3.  /* e.g.给USART写一个字符 */  

  4.  USART_SendData(USART1, (uint8_t) ch);  

  5.   

  6.  /* 循环直到发送完成 */  

  7.  while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET);  

  8.   

  9.  return ch;  

  10. }  


对printf进行重定向;

USART.H中需要添加如下代码:

添加stdio.h头文件,其次,声明int fputc(int ch, FILE *f);


最后一步,在设置中勾选Use MicroLIB选项;


完成以上步骤后,便可在程序中直接调用printf打印串口数据。


关键字:STM32F103  串口调用  printf  打印数据

来源: eefocus 引用地址:http://www.eeworld.com.cn/mcu/article_2018061039719.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32输出调试信息-printf重定向到串口
下一篇:Keil重定向printf到串口UART输出

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM32F407学习笔记——GPIO_按键控制LED亮灭

#include <stm32f4xx.h>#include "stm32f4xx_conf.h"#include "delay.h" GPIO_TypeDef* io_led=GPIOC;//定义一个指向结构体GPIO_TypeDef的io_led  const u16 pin_led=GPIO_Pin_1;//引脚GPIO_TypeDef* io_key=GPIOC;const u16 pin_key=GPIO_Pin_0; void Led_Init(){ GPIO_InitTypeDef GPIO_init_l;//用于初始化的结构体
发表于 2018-07-21 11:07:23

【stm32f407】外部中断实现按键中断方式

一.外部中断STM32F4的每个IO都可以作为外部中断的中断输入口,这点也是STM32F4的强大之处。STM32F407的中断控制器支持22个外部中断/事件请求。每个中断设有状态位,每个中断/事件都有独立的触发和屏蔽设置。STM32F407的22个外部中断为:EXTI线0~15:对应外部IO口的输入中断。EXTI线16:连接到PVD输出。EXTI线17:连接到RTC闹钟事件。EXTI线18:连接到USB OTG FS唤醒事件。EXTI线19:连接到以太网唤醒事件。EXTI线20:连接到USB OTG HS(在FS中配置)唤醒事件。EXTI线21:连接到RTC入侵和时间戳事件。EXTI线22:连接到RTC唤醒事件。从上面可以看出
发表于 2018-07-20 21:14:56

STM32F103的SysTick使用方法

写下来,方便以后用。void SysTick_Configuration(void){  /* Setup SysTick Timer for 10 msec interrupts  */  if (SysTick_Config(SystemCoreClock / 100))                //SysTick配置函数  {     /* Capture error */ 
发表于 2018-07-20 21:06:43

STM32F407ZGT6使用Systic定时器实现延时

预备知识        STM32F4的系统滴答计时器的介绍及其说明。时间有限,这里点到为止,详情自行百度。        延时的原理:                        因为在 ucos 下 systick 不能再被随意更改,如果我们还想利用 systick 来做
发表于 2018-07-20 20:21:48

STM32F072在8M下的软件延时

    使用定时器产生的延时精度确实是高,但是也相对麻烦,软件延时虽然精度不高,但也相对简单,使用方便,在精度要求不高的情况的可以使用。                使用的是STM32F032 Nucleo开发板,为内部8M晶振。    以下延时函数用示波器测得,精度小于1us。//STM32F072RB Nucleo//在内部晶振为8M的情况下 void delay3us()//3us{ int i; for(i=0;i<1;i++);} void delay10us()//10us
发表于 2018-07-20 20:21:10

Stm32f01x_SysTick定时器_延时功能

;stm32f10x.h>#include <sys.h>//配置systick 寄存器void SysTick_Configuration(void) { SysTick->VAL = 0;  SysTick->LOAD = (72000000/8000000)*1000;//´ú±íÿ¸ömsÐèÒªµÄ9000¸ösystickʱÖÓÊý SysTick->CTRL |= 0x06;  } //中断处理函数void SysTick_Handler(void) //???? { extern unsigned
发表于 2018-07-20 20:01:49

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved