STM32 printf函数重映射

发布者:和谐共融最新更新时间:2016-03-01 来源: eefocus关键字:STM32  printf  函数重映射 手机看文章 扫描二维码
随时随地手机看文章
/* Private function prototypes -----------------------------------------------*/

#ifdef __GNUC__
  /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
     set to 'Yes') calls __io_putchar() */
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */

 

/**
  * @brief  Retargets the C library printf function to the USART.
  * @param  None
  * @retval None
  */
PUTCHAR_PROTOTYPE
{
  /* Place your implementation of fputc here */
  /* Loop until the end of transmission */
  while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)
  {}
  
  /* write a character to the USART */
  USART_SendData(EVAL_COM1, (uint8_t) ch);

  return ch;
}

 

某人的解释:

这段代码的意思是将C语言的库函数printf重定向,或重映射,这词有点太专业,简单的讲:
就是C语言的库中printf函数会调用PUTCHAR_PROTOTYPE这个硬件接口函数,向显示器上输出char型变量,用来显示,
STM32当然是没有显示器的,所以就用UART输出Char型变量到PC机,由PC机的超级终端来显示,说白了,
就是原来送到显示器上的显示数据,现在送到STM32的串口上;
如果调不过去,你要注意两点:
1.你的板子上用的是不是USART1,如果是,那连到PC的串口,就可以在超级终端上,看到打印出来的东西了,如果不是,请参考第2点.
2.先将你的板子上的USART初始化,然后把PUTCHAR_PROTOTYPE函数体中的USART1换成你现在用的那个USART.
于免费送一个注意点,当然以上也都免费,呵呵
1.STM32的外设输出引脚可以重映射,如USART2,要注意板子上,是按原来的引脚连的,还是重映射后的,如果是重映射后的,请参考第2点.
2.如果连接是重映射后的引脚,请在原初始化之前,加一个重映射函数,当然ST例程中也有这部分代码,可以参考.

关键字:STM32  printf  函数重映射 引用地址:STM32 printf函数重映射

上一篇:对S3C2440片上总线(AMBA)的一点理解
下一篇:内存扩展测试

推荐阅读最新更新时间:2024-03-16 14:45

STM32系统的应用中如何避免数据受断电影响
在嵌入式设备的开发中,断电时通常需要保存一些非易失性数据。如果添加了系统配置,用户定义的信息等,并且添加了额外的ROM IC(例如基于I2C的24C02等),则额外的PCB空间将增加,硬件成本将增加,并且产品将减少。如果仅从实用角度出发,在诸如STM32系统的应用中,作者建议可以尝试以下两种方法并作为参考。 基于备份寄存器 原理:对于大容量MCU系列,它具有42个16位备份寄存器,而中小型微处理器仅具有10个16位备份寄存器。以stm32f103c8t6为例,这42个备份寄存器的地址偏移量为:0x04〜0x28、0x40〜0xbc,可以存储84个字节的数据。备用寄存器取决于备用电源。当外部VDD掉电时,只要系统的Vbat可以正
[单片机]
基于STM32LED书写点阵屏设计与实现
  近年来,随着信息产业的高速发展,点阵LED 显示屏已广泛应用于金融行业、邮电行业、体育馆、广告业等各种广告发布和信息显示系统,成为信息传送的重要手段。本文介绍的LED 书写点阵屏,不但可以像普通显示屏一样作为信息输出设备,而且可以通过光笔直接在LED 显示屏上进行信息输入,普通的显示屏也具有"手写"的功能了。    1 硬件系统设计   本系统总体框图如图1 所示,由键盘与显示模块、光笔模块、LED 点阵屏模块、STM32 控制模块、电源模块五部分组成。 图1 总体方案方框图    1. 1 核心控制模块   本系统以STM32F103VCT6 为控制核心。   STM32 是32 位微处理器,
[电源管理]
基于STM32LED书写点阵屏设计与实现
STM32 HAL库学习系列第10篇---串口空闲中断接收不定长数据
串口重定向配置: 可以直接复制使用 /************************************************* * 函数功能: 重定向c库函数printf到DEBUG_USARTx * 输入参数: 无 * 返 回 值: 无 * 说 明:无 */ int fputc(int ch, FILE *f) { HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff); return ch; } /** * 函数功能: 重定向c库函数getchar,scanf到DEBUG_USARTx * 输入参数: 无 * 返 回 值: 无 *
[单片机]
STM32通用定时器---基本定时学习
1.STM32的Timer简介 STM32中一共有11个定时器,其中2个高级控制定时器,4个普通定时器和2个基本定时器,以及2个看门狗定时器和1个系统嘀嗒定时器。其中系统嘀嗒定时器是前文中所描述的SysTick,看门狗定时器以后再详细研究。今天主要是研究剩下的8个定时器。 定时器 计数器分辨率 计数器类型 预分频系数 产生DMA请求 捕获/比较通道 互补输出 TIM1 TIM8 16位 向上,向下,向上/向下 1-65536之间的任意数 可以 4 有 TIM2 TIM3 TIM4 TIM5 16位 向上,向下,向上/向下 1-65536之间的任意数 可以 4 没有 TIM6 TI
[单片机]
stm32之CAN发送、接收详解
CAN接收报文并过滤之标识符过滤:(重点、难点)   在CAN协议里,报文的标识符不代表节点的地址,而是跟报文的内容相关的。因此,发送者以广播的形式把报文发送给所有的接收者。节点在接收报文时-根据标识符的值-决定软件是否需要该报文;如果需要,就拷贝到SRAM里;如果不需要,报文就被丢弃且无需软件的干预。   为满足这一需求,bxCAN为应用程序提供了14个位宽可变的、可配置的过滤器组(13~0),以便只接收那些软件需要的报文。硬件过滤的做法节省了CPU开销,否则就必须由软件过滤从而占用一定的CPU开销。每个过滤器组x由2个32位寄存器,CAN_FxR0和CAN_FxR1组成。这两个寄存器用途在下面有大用处; 可变的位宽
[单片机]
<font color='red'>stm32</font>之CAN发送、接收详解
STM32 LED灯的另一种写法
#ifndef __BSP_LED_ #define __BSP_LED_ #include MM32x103.h // 这个换成STM32的库文件就行 #include type.h //================================================================================== #define LED1_RUN_GRP GPIOC #define LED1_RUN_IDX GPIO_Pin_6 #define LED1_RUN_OFF() GPIO_ResetBits(LED1_RUN_GRP, LED1_RUN_IDX) #define
[单片机]
stm32和电机开发(开篇)
第一次知道电机开发,是在2019年的时候,也就是差不多3年半前。当时有一位同事在美的上班,是他让我知道了电机控制的一些应用场景。等到后来自己做了AGV的一些工作,对电机开发和控制这块就更有兴趣了。利用pwm就可以控制加速度、速度和位置,这本身就是很神奇的事情。现在网上,尤其是b站上面已经有很多mcu控制电机的视频了,某野火、某原子、某硬石也出了类似开发板,正好可以拿来学一下。 1、电机种类 常用电机主要是直流有刷电机、直流无刷电机、步进电机、舵机和永磁同步电机(pmsm)这几种。 2、电机控制构成 电机控制一般有这几个部分组成,控制电路板(一般是mcu开发板)、驱动板(实现控制信号到电机驱动信号的转变)、电机、电源这几个部
[单片机]
STM32 + ESP8266 + MQTT协议连接OneNet
一、环境介绍 单片机 采用: STM32 F103C8T6 上网方式:采用 ESP8266 ,也可以使用其他设备代替,只要支持TCP协议即可。比如:GSM模块、有线网卡等。 开发软件: keil 5 硬件 连接功能:ESP8266接在STM32的串口3上。通过AT指令与ESP8266进行 通信 。 注意:本篇文章没有贴ESP8266的底层 编程 代码,如果不会ESP8266底层编程,请看这里: https://blog.csdn.net/xiaolong1126626497/ar ti cle/det ai ls/107379554 如果需要了解ESP8266+MQTT协议连接阿里云 物联网 服务器请看这里:https:/
[单片机]
<font color='red'>STM32</font> + ESP8266 + MQTT协议连接OneNet
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved