在STM32开发过程中必然需要串口打印参与调试,而往往STM32调试分配串口不会固定,可能是在串口1,也有可能为串口2。该如何对printf进行重新映射串口呢?
只需要在生成的工程代码中添加如下代码:
#include "stdio.h"
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart2 , (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
这之后将MCU的打印口修改为串口2进行打印。
关键字:STM32 print f重映射串口
引用地址:
STM32-printf重映射串口
推荐阅读最新更新时间:2024-11-12 07:44
STM32 串口之中断接受
使用STM32串口的中断方式接收数据,接收来自另外一板子的按键数字,同时点亮相应的LED灯。 工程结构图: 1、 main.c代码截图如下; 2、其中的LED代码与另外一篇《STM32 基于库函数控制按键蜂鸣器 LED显示》代码完全同。这里就不上了。 3、USART驱动部分: #include stm32f10x.h #include usart1.h #include #include //===================================================
[单片机]
stm32学习笔记(八)中断服务函数与函数调用的区别
在《微机原理》和《计算机组成》等课程 教学中(本文以MCS-51单片机为例),中断过程既是教学难点又是教学重点,它与主程序调用子程序过程有一定相似性,但又有很大区别,调用子程序过程相对比较容易掌握,通过把两过程结合起来,采用比较教学方法,能收到了很好的教学效果。 1、两过程定义与作用 子程序是微机基本程序结构中的1种,基本程序结构包括顺序(简单)、分支(判断)、循环、子程序和查表等5种。 子程序是一组可以公用的指令序列,只要给出子程序的入口地址就能从主程序转入子程序。子程序在功能上具有相对的独立性,在执行主程序的过程中往往被多次调用,甚至被不同的程序所调用。一般微机首先执行主程序,碰到调用指令就转去执行子程序,
[单片机]
stm32 GPIO原理: 输入和输出控制
pre name= code class= html #include stm32f10x.h int main(void) { //1.PA.0 工作在推揽输出,50MHZ; PA.8输入 浮空输入 GPIOA- CRL=0X03; GPIOA- CRH=0X04; //2. PA.0 输出 = PA.8输入 while(1){ if((GPIOA- IDR&0X0100)==0X0100) GPIOA- ODR=0X01; else GPIOA- ODR=0x00; } return 0; }
[单片机]
探析STM32上UART丢失的那一字节数据
串口 UART =Universal Asynchronous Receiver / Transmit te r,通用异步收发传输器,是工程师最常用的一种串行外设,常见的 接口 形式有TTL、 RS232 、 RS485 ,但在实际应用中还是会经常遇到各种问题,比如:丢失一字节数据。下面就结合 STM32 来讲讲UART相关内容,谈谈容易丢失一字节数据的问题。 1、UART几个标志位 STM32上UART状态 寄存器 中的几个标志位:TXE、TC、RXNE、 OR E。这几个标志位在 编程 中经常使用,数据丢失有可能就是对它们操作不当而导致出错。 TXE=Transmit dataregister empty
[单片机]
ANSIC几种特殊的标准定义(__FILE__、__LINE__、__STDC__···)
Ⅰ写在前面 为方便大家阅读,本文内容已经整理成PDF文件: http://pan.baidu.com/s/1gfHygyn 对于我们大部分使用单片机进行裸机开发的朋友来说,可能很少有人在程序中许多关键的地方打印一些关键信息。 有较大系统开发,或复杂系统开发经验的朋友一般都会在程序中输出很多调试信息,如在UCOS、freeRTOS、Linux等系统开发调试时打印许多关键信息。 1.我们在使用STM32库开发时,在stm32fxxx_conf.h文件下会发现如下这么一条语句: #define assert_param(expr) ((expr) ? (void)0 : assert_failed((uint8_t *)__F
[单片机]
浅谈STM32的启动过程
浅谈STM32的启动过程 分享这篇文章,谈一下STM32启动流程。如果读者朋友已经有过汇编相关基础,能够更好理解本文内容。汇编语言是比C语言更接近机器底层的编程语言,能让我们更好的理解和操纵硬件底层。 STM32三种启动模式 下好程序后,重启芯片时,SYSCLK的第4个上升沿,BOOT引脚的值将被锁存,这就是所谓的启动过程。 STM32上电或者复位后,代码区始终从0x00000000开始,其实就是将存储空间的地址映射到0x00000000中。三种启动模式如下: 从 主闪存存储器 启动,将主Flash地址0x08000000映射到0x00000000,这样代码启动之后就相当于从0x08000000开始。主闪存存储器是STM32内
[单片机]
STM32固件库使用USART
1.USART的配置 (1)关键结构体 GPIO_InitTypeDef USART_InitTypeDef NVIC_InitTypeDef//用于接收的中断 1.1USART的TX在PA9,RX在PA10. 2.时钟线 2.1 USART时钟挂载在APB2上 RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//配时钟 3.代码段 3.1(单发送) void usart_init(void){ GPIO_InitTypeDef gpio_
[单片机]
STM32低功耗Demo
本例展示了如何使用NVIC固件函数库来来展示Cortex-M3低功耗性能(WFE和WFI)。 本例使用了3条外部中断线路,线路3--KEY2,线路4--KEY3和线路13--JOY,在每一个信号下降研做为中断发生源或者事件源(event),其中外部中断线路3和13被设置为中断而线路4被设置成事件。用户需要在main程序开头的5个定义(define)语句中选择定义一个来决定进入那种低功耗模式。 这些选择为: - Wait For Interrupt (WFI) Sleep On Exit:先按JOY,再加任一中断,即可进入SLEEP =》无法唤醒 只有key2可进入中断 选择“#define
[单片机]