Stm32 - Printf重定向(不)使用微库(Keil MDK)

转载 2017年01月02日 21:35:23


#define DEBUG_USART USART1


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

方法1--使用微库:

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

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

3Printf重定向,修改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

举报

相关文章推荐

Keil C51重定向printf到串口

进行C/C++开发的时候我们都会需要打印调试信息,打印调试信息时我们习惯使用printf函数,但是在Keil C51环境下,由于我们的程序是下载到单片机里,使用printf函数时不能直接打印到串口上,...

STM32 printf重定向

STM32串口通信中使用printf发送数据配置方法(开发环境 Keil RVMDK) 标签:  STM32  串口通信  printf方法  2011-06-29 23:29  在STM32串口...

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

KEIL编译上的问题

楼主后来怎么解决的? 我现在也遇到类似问题,也是在51822上,用keil5. 莫名其妙的就编译报错: .\_build\ble_app_uart.axf: Error: L6200E: Symbol...

使用Keil MDK以及标准外设库创建STM32工程 (http://emouse.cnblogs.com)

1.1 使用Keil MDK以及标准外设库创建STM32工程 通过上一节对标准外设库的介绍,想必各位读者对标准外设库已经有了基本的认识,然而由于标准外设库中文件众多,很多初学者在开始很长一段时间内甚...

案例说明stm32官方库函数使用方法 (库版本v3.5, Keil MDK 5)

相关文件下载:http://alanzjl.sinaapp.com/2015/02/stm32-peripheral-library-manual/ stm32的官方库非常方便,但是里面的使用手册...

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

1.1 使用Keil MDK以及标准外设库创建STM32工程 通过上一节对标准外设库的介绍,想必各位读者对标准外设库已经有了基本的认识,然而由于标准外设库中文件众多,很多初学者在开始很长一段时间...

STM32中ADC的使用/printf函数重定向串口显示内部温度传感器测量值

STM32F334C8T6这款MCU中有两个12位ADC(模数转换器),ADC1的通道16连接到内置的一个温度传感器,本文使用该温度传感器测量MCU和周围的环境温度,并且通过串口发送到PC的串口助手进...

基于固件库的STM32F10x程序在Keil v5 MDK 下的RAM调试方法

为什么要RAM调试? 相比于FLASH调试,在RAM调试可以很快地装载代码,可以节省将代码下载到Flash的时间。 RAM的擦写次数几乎无限,RAM调试可延长Flash的使用寿命。图1 ...

STM32中printf与scanf的重定向问题

关于STM32中 printf 与 scanf 的重定向问题在此我仅对不使用 "USE MircoLIB" 的情况做整理(针对Keil RVMDK开发环境)。 ① :首先需要在 usart....
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)