#define DEBUG_USART USART1

stm32芯片调试中经常用到串口来打印一些数据,因此如果能使用类似windows的Console中的printf就很完美了~

方法1--使用微库:

1、使用微库(平台式keil-MDK),点击“魔术棒” Target标签下有个Use MicroLIB---勾选。

2、包含头文件:#include "stdio.h"

3、Printf重定向,修改fputc()函数的内容~

int fputc(int ch, FILE *f)

{

USART_SendData(DEBUG_USART, (unsigned char) ch);

while (!(DEBUG_USART->SR & USART_FLAG_TXE));

return (ch);

}

这里的:USART_SendData(DEBUG_USART, (unsigned char) ch);

while (!(DEBUG_USART->SR & USART_FLAG_TXE));

就是往串口发送一个字节的代码,修改相应的串口,初始化。这样就能使用printf了~可以一试。

方法2--不使用微库(那么就要强调不使用半主机(no semihosting)模式)

1、包含头文件#include "stdio.h"

2、重写fputc,但需要先加点东西:

#pragma import(__use_no_semihosting)

_sys_exit(int x)

{

x = x;

}

struct __FILE

{

int handle;

};

FILE __stdout;

int fputc(int ch, FILE *f)

{

USART_SendData(DEBUG_USART, (unsigned char) ch);

while (!(DEBUG_USART->SR & USART_FLAG_TXE));

return (ch);

}

这样,就完成了,同样可以使用printf语句了~

用微信扫描二维码

为博主 打个赏

金额随意 快来“打”我呀 要买枸杞当归补补~~

http://blog.sina.com.cn/s/blog_b4ce638e0102w9fw.html

Stm32 - Printf重定向(不)使用微库(Keil MDK)相关推荐

  1. STM32 - Printf重定向使用微库、不使用微库(Keil) (转载)

    Stm32芯片调试中经常用到串口来打印一些数据,因此如果能使用类似windows的Console中的printf就很完美了~ 方法1--使用微库: 1.使用微库(平台式keil-MDK),点击&quo ...

  2. STM32 printf 重定向 usart3

    jiause 问题描述: 今天调试串口,首先用串口1 printf打印输出,调试成功,在串口1成功的基础上,准备改用串口3 printf结果一直不成功. 串口没有一点反应. 解决过程:         ...

  3. STM32工程模板简单套用教程(Keil MDK)

    在Mdk配置stm32工程是一件很麻烦的事情,故直接套用工程模板,减少时间花费.(此处用野火的m3工程模板) 模板的配置是根据相对路径的,所以模板可以随意复制到任意一个地方. 1.文件夹改名,这里我改 ...

  4. keil MDK AC5向AC6迁移后如何重定向printf

    从AC5向AC6迁移,已经有很多人给出了迁移的教程,AC6的编译速度着实非常有吸引力,我也尝试根据网上的教程从AC5向AC6迁移,但程序执行到printf的时候便会有问题. 有问题的重定向代码: /* ...

  5. Keil MDK 中利用串口及c标准库函数printf为cortex-m3做调试输出(lpc1788)

    摘要: c标准库的printf是输出给显示器的,将printf函数进行修改,使其输出重定向至串口,就能实现目的.printf函数调用fputc函数完成实质输出单一字符的工作,因此将fputc函数修改使 ...

  6. Keil MDK STM32系列(九) 基于HAL和FatFs的FAT格式SD卡TF卡读写

    Keil MDK STM32系列 Keil MDK STM32系列(一) 基于标准外设库SPL的STM32F103开发 Keil MDK STM32系列(二) 基于标准外设库SPL的STM32F401 ...

  7. STM32使用printf重定向到USART(串口)并打印数据到串口助手

    STM32使用sprintf打印数据到串口助手 一.背景知识 二. 重定向printf到USART1 三.使用printf打印hello,world到串口助手 3.1 usart.c 3.2 usar ...

  8. 使用Keil MDK以及标准外设库创建STM32工程

    应部分网友要求,最新加入固件库以及开发环境使用入门视频教程,同时提供例程模板,个人录制,欢迎指正.下载地址:http://dl.dbank.com/c0w0ehqynd 2013.3补充在线视频教程 ...

  9. stm32中如何进行printf重定向用于串口调试输出

    1 在main中包含stdio.h 文件 2 Target选项框里选Use MicroLib 选项 3 在main中添加UART1_Configuration()初始化的代码 Uart1初始化, vo ...

最新文章

  1. 关于git bush 中不能复制黏贴的问题
  2. 苹果汽车高管几乎流失殆尽,一年损失7人,新年又有人被Meta挖走
  3. 如何将文字转换成语音?文字转语音哪个工具好
  4. 选项卡示例代码###
  5. 手电筒java_Java鼠标“手电筒”效果如何?
  6. 腾讯的迷你门户首页新闻用到的Silverlight技术引用
  7. protobuf序列化协议python教程
  8. 资管新政:银行资产管理业务的转型与发展 -中国银行刘东海
  9. Ubuntu 周立功CAN分析仪 USBCAN-II 驱动
  10. python对Excel合并单元格拆分
  11. 【verbs】ibv_reg_mr()
  12. 腾讯云服务器放音乐,使用腾讯云函数实现网易云音乐自动打卡签到
  13. C# 之 Word光标移动 GoTo 方法
  14. [设计报告]有屏的地方就有Bad Apple!! —— 12864版
  15. 提升职场表现力:讯飞智能录音笔SR901实力优选
  16. Leetcode--Java--340. 至多包含 K 个不同字符的最长子串
  17. 学python-学 Python 都用来干嘛的?
  18. PHPMyWind支持PDF粘贴
  19. 如何使用facebook_Facebook观看派对可供所有人使用(这是巨大的)
  20. java3d点线面_3D游戏与计算机图形学中的数学方法-点线面

热门文章

  1. 修改ardupilotmega.h中MAV_CMD联合体中的命令定义,增加MAV_CMD_LED_CONTROL命令
  2. SQL必知必会第4版读书笔记
  3. 路由器DNS被劫持 解决办法、网站被劫持怎么办怎么解决
  4. 几个强大到没朋友的资源网站 个个都是精品
  5. Life feelings--10--inspiration and inner motivation
  6. 腾讯云轻量级服务器端口开放无法访问
  7. 电机控制书籍复习--高性能变频调速及其典型控制系统-马小亮
  8. 杨建允:2022年社交电商要如何突围、会走向何方?
  9. BP神经网络实用性操作(四步模板)和主要网络参数介绍
  10. C语言与Java实现:数制转换