printf()函数的重映射:
在配置的target选项中选择use
microlib,然后在main()函数之前添加函数重映射,如下:
int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (u8) ch);
while(USART_GetFlagStatus(USART1, USART_FLAG_TC)
== RESET);
return ch;
}
在main()函数中包含stdio.h头文件,在其他自己创建的函数中若使用printf()函数也应该包含改头文件,这样一来,prinft()函数重映射的使用便不会有警告以及错误。
若不是用微库,则应该在重映射printf()之前添加一段代码,如下:
#pragma import(__use_no_semihosting)
_sys_exit(int x)
{
x = x;
}
struct __FILE
{
int handle;
};
FILE __stdout;
完成后即可使用printf()重映射函数。
关键字:STM32 printf()函数 重映射
引用地址:
关于STM32的printf()函数重映射
推荐阅读最新更新时间:2024-03-16 15:42
【STM32】HAL库 STM32CubeMX教程五----看门狗
前言: 今天我们来学习看门狗的配置与函数,看门狗可以有效解决程序的跑飞,在使用过程中比较常见,是防止芯片故障的有效外设,我们一起来学习下HAL库 STM32CubeMX的独立看门狗,窗口看门狗的使用。本系列教程将HAL库与STM32CubeMX结合在一起讲解,使您可以更快速的学会各个模块的使用 所用工具: 1、芯片: STM32F407ZET6 2、STM32CubeMx软件 3、IDE: MDK-Keil软件 4、STM32F1xx/STM32F4xxHAL库 知识概括: 通过本篇博客您将学到: STM32CubeMX创建看门狗例程 独立看门狗,靠窗看门狗 工作原理 看门狗 在由单片机
[单片机]
Ubuntu下安装Stm32的Eclipse的开发环境(1)
在最起初的时候,我刚刚接触linux上单片机的开发,最喜欢的就是 eclipse + arm-plug-in + arm-none-eabi 的开发环境,因为这是在Linux上最接近于windows下keil、IAR等IDE的开发方式,然而那是由于对eclipse亦或是makefile等编译过程中的工具的不甚了解,很多时候会遇到一些莫名的错误,也导致了那是觉得这样的环境很鬼畜,现在看来多是一些很浅显的问题,直到最近我再一次的尝试了eclipse开发环境的搭建和使用,我才很顺利的完成了程序的配置。现在也把这个方法推荐给大家,不过在使用这个方式前,还是建议大家先把之前的文章内容看懂了,否则很多时候遇到问题都会不知道怎么解决。 安装
[单片机]
分析TCP/IP协议栈代码之UDP(STM32平台)
1. UDP介绍 UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个 UDP数据报,并组装成一份待发送的IP数据报。这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系。 UDP数据报封装成一份 IP数据报的格式如图11 - 1所示。 RFC 768 是UDP的正式规范。 UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。由于缺乏可靠性,我们似乎觉得要避免使用UDP而使用一种可靠协议如TCP。在讨论完TCP后将再回到这个话题,看看什么样的应用程序可以使用UDP。 2. UDP首部 UDP首部的各字段如图1
[单片机]
STM32分类定义
#define STM32F10X_LD STM32F10X_LD: STM32 Low density devices */ #define STM32F10X_LD_VL STM32F10X_LD_VL: STM32 Low density Value Line devices */ #define STM32F10X_MD STM32F10X_MD: STM32 Medium density devices */ #define STM32F10X_MD_VL VLSTM32F10X_MD_VL: STM32 Medium density Value Line device
[单片机]
stm32 USART接收总线空闲中断--USART_IT_IDLE
串口DMA接收: 接收数据的流程: 串口接收DMA在初始化的时候就处于开启状态,一直等待数据的到来,在软件上无需做任何事情,只要在初始化配置的时候设置好配置就可以了。 判断数据数据接收完成: 这里判断接收完成是通过串口空闲中断的方式实现,即当串口数据流停止后,就会产生IDLE中断。这个中断里面做如下几件事: 1. 关闭串口接收DMA通道,2点原因:a.防止后面又有数据接收到,产生干扰。b.便于DMA的重新配置赋值,下面第4点。 2. 置位接收完成标志位 3. 处理接收buffer中数据 4. 重新设置DMA下次要接收的数据字节数,注意,这里是给DMA寄存器重新设置接收的计数值,这个数量只能大于或者等
[单片机]
Proteus仿真STM32实现--DS18B20和LCD1602显示
proteus仿真stm32103r6,实现18B20温度值在1602上显示,可测量正负温度。程序及仿真工程已上传附件,利用proteus仿真18b20温度为0和-0.1时返回值均为零,新手上路,请多指教。使用proteus8.8版本进行仿真。 原理图 时序 原理图 单片机部分程序如下: #include stm32f10x.h #include bsp-lcd1602.h #include delay.h #include sys.h #include ds18b20.h #include stdio.h #include math.h short tem,tem1; u8 a,b,c,t
[单片机]
STM32 Cubemax(九) ——利用输入捕获中断实现超声波测距
前言 因为要实现一下卡尔曼滤波,所以这次先写一下超声波,顺便重温一下输入捕获中断。 一、超声波模块原理 但凡在网上搜过超声波这个模块的,对这个图都不陌生,简单的说就是想得到超声波的数据,包含以下几个步骤。 1.发送大于10us的触发信号。 2.检测超声波发出信号时产生的高电平。 3.检测超声波接收到信号时产生的低电平 而我们就是通过后两步,即去检测处因为超声波产生的高电平的时间,从而来得到距离信息的。而输入捕获的作用就是用来去捕获高电平或者低电平的持续时间的 我们的编程就是根据上图来实现的。 二、Cubmax配置 1.配置定时器输入捕获 本实验板子为F407,分频系数选择84-1,则计数精度达到1us。10
[单片机]
意法半导体:低功耗策略的延伸
“现在低功耗看起来是个非常热门的词,但实际上我们04年左右就已经制定这个策略了。”意法半导体大中国区微控制器市场经理James表示。伴随着云计算概念的普及,智能家居再一次被人们所关注,而意法半导体显然不愿意错过终端处理器市场。 STM32L低功耗处理器发布 STM32L处理器是意法半导体最新发布的一款基于Cortex-M3 32位内核的低功耗处理器,与之前的STM32其他系列产品相比,最大的特点是采用了EnergyLite超低功耗平台。 究竟何为EnergyLite呢?意法半导体单片机部市场经理张军辉解释道,“EnergyLite包含两部分,一个是意法半导体独创的130nm技术的抄底漏电流工艺,另外则是与S
[单片机]