STM32串口通信printf重定向方法

发布者:HarmoniousVibes最新更新时间:2021-10-08 来源: eefocus关键字:STM32  串口通信  printf重定向 手机看文章 扫描二维码
随时随地手机看文章

在源程序中加入如下代码,包含“stdio.h”。


默认使用USART1,确认串口已经初始化成功、


#pragma import(__use_no_semihosting) 

_sys_exit(int x) 

x = x; 

struct __FILE 

int handle; 

/* Whatever you require here. If the only file you are using is */ 

/* standard output using printf() for debugging, no file handling */ 

/* is required. */ 

}; 

/* FILE is typedef’ d in stdio.h. */ 

FILE __stdout;

int fputc(int ch, FILE *f)

{

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

        USART_SendData(USART1,ch);

        return ch;

}

关键字:STM32  串口通信  printf重定向 引用地址:STM32串口通信printf重定向方法

上一篇:STM32重定向printf到串口
下一篇:STM32CubeIDE 的应用: 重定向printf 到stm32串口

推荐阅读最新更新时间:2024-11-13 10:19

stm32 PUSH 按键控制LED闪烁
int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configu
[单片机]
STM32单片机的模拟电压采集卡设计
要求: 采集16路模拟电压值(0~5V) 方案: 接口:与电脑USB口连接。采用USB转串口芯片,实际转化成串口,方便开发板上位机软件。 主控MCU: STM32 F103RBT6 硬件原理:CH340+STM32+LM324 CH340:USB转串口芯片 连接电脑USB口,方便, 实际为串口,写上位机软件方便。 STM32 F103RBT6自带16路ADC引脚。 LM324在系统中至关重要,它的作用是电压跟随器。 作用1:防止电压信号线直接连接 单片机 引脚,在电压意外突变时,烧毁单片机。 作用2:电压跟随器输入阻抗高,可有效防止 采集卡 影响电压信号数值。 电路图: PCB: 成品板: 装入外壳:
[电源管理]
<font color='red'>STM32</font>单片机的模拟电压采集卡设计
STM32之USART(串口通信)
如果你看过《STM32的中文手册》,你会发现STM32的串口是非常强大的,不仅支持最基本的通用串口同步,异步通讯,还具有LAN总线的功能(局域互联网),IRDA功能(红外通讯),SmartCard功能 异步串口通讯协议: 这里介绍的是串口最基本,最常用的方式,全双工,异步通讯方式. 通过串口的通讯协议,我们知道要配置串口通讯,至少要配置几个参数: 字长(一次传送的数据长度); 波特率(每秒传输的数据位数); 奇偶校验位; 还有停止位; 当然,在我们的ST库里面,肯定有一个串口初始化结构体啦,这个结构体肯定有几个成员是来存储这些控制参数的!!!!! *串口线:* 要实现基本的全双工异步通讯,只要3条线,分别为Rx、Tx、和GND.
[单片机]
解决烧录问题:Jlink的三线制SWD方式连接STM32芯片无法识别
网上找到此文章解决了j-flash只能连接后不能烧录的问题,希望遇到相同问题的小伙伴,可以用同样的办法解决: 前段时间,做了一块板子,调试接口只留了三个口SWD、SWCLK、GND,在使用Jlink的SWD方式调试的时候发现无法连接。使用ST-link的时候可以连接,无奈楼主的ST-link的链接方式相当的不可靠,时而能识别时而不能识别:当然我的ST-link是山寨版的。 那么问题来了:为什么通过20针全部连接的方式可以调试,而三针的方式就不行了呢? 古人云知之为知之,不知Google之,Google不让用,那就问度娘好了。 通过查阅网上资料发现,jlink的20针,不光有调试的功能还有供电和检测电压的功能。 下面是jl
[单片机]
STM32下uIP移植问题
就我个人认为在uIP的移植中除了驱动之处有以下几点需要注意: 1.uip_timer 时钟要加入到中断中去。 2.各种appcall实现。如在tcp_client_demo.c 有如下语句 if(uip_len 199) { ((u8*)uip_appdata) =0; } strcpy((char*)tcp_client_databuf,uip_appdata); 这样在处理数据长时都是以tcp_client_databuf 数组的长来处理,这样不灵活,client从网络中接收到的数据长本来就是用一个全局变量uip_len来存储的。
[单片机]
STM32学习之路-不得不说的SysTick时钟
SysTick时钟,俗称“嘀嗒定时器”,这家伙能按固定的时间产生一次中断,通常是多长时间产生一次中断呢?官方给出的一个时间是1ms 那么,它是怎么准确的产生1ms的呢.. 先来看看这家伙在时钟树的哪里吧 是它,是它,就是它,红色框里的东东,可以看到,它是由HCLK/8得到的,也就是:72MHz/8=9MHz 我们还能在STM32手册上找到这么一句话:系统嘀嗒校准值固定位9000,当系统嘀嗒时钟设为9MHz,产生1ms时间基准. 让我们来看看9000是怎么来的,这里要看下SysTick寄存器的配置了 当然,这个图截得真他妈丑..不过来是可以看到SysTick共有4个寄存器.下面的图盗自别人的博客的, = = 但是
[单片机]
<font color='red'>STM32</font>学习之路-不得不说的SysTick时钟
STM32最小系统设计
下面主要说明一下STM32最小系统设计时的一些注意事项: 1、STM32的工作电压(VDD)为2.0~3.6v,通过内置的电压调节器提供所需的1.8v电源,其部分引脚是3.3v/5v兼容的 2、BOOT0,BOOT1的连接方式决定了程序的启动模式。 4、根据启动模式,在没有一键下载电路的情况下,我们可以另BOOT0=1,BOOT1=0,此时运行系统存储区中STM32自带的启动代码,可以通过串口工具下载我们的程序(下载到主闪存存储区,地址:0x08000000),待下载完成后,设置BOOT0=0,BOOT1=0,此时就开始执行我们的代码了。 5、STM32的最小系统可以不接外部晶振,由内部8MHZ晶振提供,但通常为了更加精确的提供
[单片机]
<font color='red'>STM32</font>最小系统设计
STM32之外部中断控制
一、STM32外部中断 1、STM32外部中断结构图   如上图所示:主要包括四个环节,GPIO、AFIO、EXTI、NVIC。以STM32F103VE(100脚)为例说明硬件模块的数量: GPIO:       80个 AFIO选择通道:   16个 外部中断线EXTI:  16 + 3 = 19个 NVIC     :  1个  2、EXTI控制器结构图 ① 功能 中断   申请中断 事件   当事件发生的时候,将产生事件脉冲,可以用来唤醒内核 ② 功能详细说明     如果要产生中断,必须事先配置好并使能中断线。根据需要的边沿检测设置2个触发寄存器,同时在中断屏蔽寄存器的相应位写 1 允许
[单片机]
<font color='red'>STM32</font>之外部中断控制
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
更多往期活动

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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