历史上的今天
返回首页

历史上的今天

今天是:2025年03月06日(星期四)

正在发生

2020年03月06日 | STM32开发笔记86:使用printf向串口输出数据

2020-03-06 来源:eefocus

单片机型号:STM32L053R8T6


本文介绍使用printf向串口输出数据的方法,具体如下:


1、根据原理图确认使用哪路串口进行printf输出,并在config.h文件予以声明,程序如下:


/**

  配置调试信息

 */

#define DEBUG_UART 2 //指定调试端口号


2、建立该串口类,从CMiniUART继承,初始化该串口,程序如下:


#ifndef UART_COMMUNICATION_H_

#define UART_COMMUNICATION_H_

 

#include "mini_uart.h"

 

#ifdef __cplusplus

extern "C"{

class CUartCommunication:public CMiniUART

{

public:

CUartCommunication(void);

};

 

}

#endif

#endif

#include "include.h"

 

CUartCommunication::CUartCommunication(void):CMiniUART(2, 9600, 0) {}


3、包含相应头文件,并在HAL.h中声明相应的成员变量。


#ifndef HAL_INCLUDE_H_

#define HAL_INCLUDE_H_

 

#include "uart_communication.h"

#include "hal.h"

 

#endif

class CHAL

{

public:

CUartCommunication UartCommunication;

CLed Led;

};


4、如果希望接收数据,还需在定时器中断和串口中断中,加入相应的处理函数,程序如下:


void CommonTimer_InterruptFunction(void)

{

static uint16_t count = 0;

if (count >= 1000)

{

count = 0;

Target.bMilliSecond_1000 = true;

}

else

{

count++;

}

if (count % 100 == 0)

{

Target.bMilliSecond_100 = true;

}

if (count % 10 == 0)

{

Target.bMilliSecond_10 = true;

}

Target.HAL.UartCommunication.TimerInterruptFunction();

}

void UART2_InterruptFunction(void)

{

Target.HAL.UartCommunication.UARTInterruptFunction();

}


5、完成上述程序后,就可以调用printf函数了,样例程序如下:


while(1)

{

Target.HAL.Led.Turn();

DebugOutput("Hello worldn");

Target.Delayms(1000);

#if IWDG_MODE != 0

Target.Iwdg.Refresh();

#endif


6、查看效果

推荐阅读

史海拾趣

Amphenol(安费诺)公司的发展小趣事

Amphenol Corporation,通常简称为Amphenol,是一家全球领先的连接技术公司,提供广泛的连接器解决方案,涵盖了航空航天、汽车、通信、工业、医疗和军事等多个领域。以下是关于Amphenol公司发展的五个相关故事:

  1. 创立与起步阶段:Amphenol公司成立于1932年,总部位于美国康涅狄格州沃拉姆。最初,公司致力于生产无线电连接器,并通过不断的创新和技术改进,逐步发展成为连接器行业的领导者之一。在第二次世界大战期间,Amphenol公司为美国军队提供了大量的军用连接器,为公司的发展奠定了坚实的基础。

  2. 技术创新与产品多样化:随着电子技术的不断进步和市场需求的不断变化,Amphenol公司不断进行技术创新,拓展产品线的多样性。除了传统的连接器产品,公司还开发了许多新型连接器,如光纤连接器、高速数据连接器、环境密封连接器等,以满足不同行业的需求。

  3. 全球化发展与市场拓展:Amphenol公司在全球范围内建立了广泛的销售网络和生产基地,实现了全球化布局和市场覆盖。公司在美国、欧洲、亚洲和其他地区设有多个生产工厂和研发中心,为客户提供当地化的服务和支持。通过不断扩大市场份额和提升产品质量,Amphenol公司成为了全球连接器市场的主要参与者之一。

  4. 客户合作与定制化解决方案:Amphenol公司与客户建立了紧密的合作关系,根据客户的需求和应用场景,提供定制化的连接器解决方案。公司的工程团队与客户共同设计和开发符合特定要求的产品,为客户提供专业化和个性化的服务。这种定制化解决方案能够满足客户多样化的需求,增强了公司在市场上的竞争优势。

  5. 质量管理与持续改进:Amphenol公司高度重视产品质量管理,严格遵循国际质量管理体系标准。公司的生产工艺和质量管理体系通过了ISO 9001质量管理体系认证,并持续进行质量改进和技术创新。此外,Amphenol公司的产品还通过了各种行业认证和标准,如航空航天领域的AS9100认证等,确保产品的可靠性和稳定性。

这些故事展示了Amphenol公司从创立初期到如今在技术创新、产品多样化、全球化发展、客户合作与定制化解决方案以及质量管理与持续改进等方面取得的重要进展。

CHERRY公司的发展小趣事

90年代初,薄膜键盘凭借其低廉的价格和轻便的特性迅速占据了市场主导地位,机械键盘一度被边缘化。然而,Cherry并未放弃机械键盘业务,而是不断进行技术创新和产品升级。随着电竞行业的兴起和消费者对高品质输入设备的需求不断增加,机械键盘市场逐渐复苏。Cherry凭借其深厚的技术积累和品牌优势,成功抓住了这一市场机遇,实现了机械键盘业务的复兴。

Eagle Plastic Devices公司的发展小趣事

为了保持技术领先地位和满足不断变化的市场需求,Eagle Plastic Devices公司不断加大研发投入,引进先进的研发设备和人才。公司建立了完善的研发体系,包括新产品开发、工艺改进、性能测试等环节。通过不断的技术创新和产品升级,Eagle Plastic Devices公司成功推出了多款具有竞争力的新产品,进一步巩固了其在行业内的领先地位。

Dresden Elektronik公司的发展小趣事

随着公司的发展壮大,Dresden Elektronik公司越来越意识到合作的重要性。他们积极与产业链上下游的企业开展合作,共同推动整个行业的发展。同时,公司也注重与科研机构、高校等的合作,引进先进的技术和人才,为公司的发展注入新的活力。这种合作共赢的理念使公司在激烈的市场竞争中保持了稳健的发展态势。

Daniel Woodhead公司的发展小趣事

随着技术的不断进步,Daniel Woodhead公司开始将目光投向更广阔的市场。公司推出了一系列基于自家微处理器的电子产品,如个人计算机、服务器和工作站等。这些产品凭借其出色的性能和稳定性,在市场上获得了良好的口碑。同时,公司还加大了品牌宣传力度,通过赞助科技展会和举办技术研讨会等活动,进一步提升了品牌影响力。

Grand Halo Technology Co Ltd公司的发展小趣事

随着公司业务的不断发展壮大,Daniel Woodhead公司开始关注社会责任和可持续发展。公司积极参与公益事业,捐赠资金和技术支持教育、环保等领域。同时,公司还注重环保和节能技术的研发与应用,努力减少生产过程中的环境污染和资源浪费。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实基础。

问答坊 | AI 解惑

TFT液晶显示原理

本帖最后由 jameswangsynnex 于 2015-3-3 20:00 编辑 [;)][ip]TFT液晶显示原理TFT型的液晶显示器较为复杂,主要的构成包括了,萤光管、导光板、偏光板、滤光板、玻璃基板、配向膜、液晶材料、薄模式晶体管等等。首先液晶显示器必须先利用背光源, ...…

查看全部问答>

未来中国安防市场IP产品的增长成为热点

IMSResearch最近发布了一份名为《中国安防产业IP趋势》的研究,目的是希望了解IP相关技术如何在安防领域应用以及发展前景等问题。该研究针对中国本土提供电子物理安防产品的系统集成商和工程商,根据他们对IP安防产品的经验,对市场进行了分析。这 ...…

查看全部问答>

急需Tornado 2.2.1 for PowerPC!

如题,急需Tornado 2.2.1 for PowerPC,请问什么途径可以得到?欢迎来电13971652738,王先生。…

查看全部问答>

winpcap在evc下使用

winpcap在evc下怎么使用? D:\\PROGRAM FILES\\INCLUDE\\packet32.h(53): Could not find the file airpcap.h. D:\\PROGRAM FILES\\INCLUDE\\packet32.h(62): Could not find the file dagc.h. 有这样的提示。。。找不到系统的头文件 可有谁在E ...…

查看全部问答>

WinCE LCD驱动配置问题

各位大虾:     目前正在搞WinCE下LCD驱动, 在一个现有模板的基础上,进行了简单的修改。     引脚配置 跟 LCD控制器部分的设置应该是没有什么问题的。也将屏幕的一些配置参数进行了修改,原来的是320*240,现在我用的是800 ...…

查看全部问答>

malloc频繁申请大内存会导致异常吗

我在程序中 { ...... malloc 400K字节的缓冲区   ...... free ~ } 请问如果频繁的反复以上操作会导致异常或者死机吗 我的程序 疯狂进行30次会出现异常  不知道是不是这个原因引起的…

查看全部问答>

driver中调用MmAllocateNonCachedMemory向系统申请1MB空间,请问各位,怎么才能验证,申请到的空间是连续的?

我在driverentry中直接调用的MmAllocateNonCachedMemory函数,想要申请1MB空间,但不知道怎么用最简单的方式,得知空间是否连续?我是想申请1MB连续空间.   …

查看全部问答>

请问各位过来人IC封装测试是干什么的呢

    最近找工作,请问大家“IC封装测试”是干什么的呢? 主要是以下几个问题,谢谢了哈 1.工作的主要内容是什么的呢? 2.工作的前景如何,以后发展方向主要是怎样的呢? 3.行业的待遇具体怎么样呢?  …

查看全部问答>

别扭的1640

这两天,板子焊好了,一点一点在翻阅此前做的各种笔记,想起当时没太仔细考虑 充电程式的问题。   于是开始想MAX1640充电程式的设置问题。   做一个高质量点的 锂电池充电器 自然希望能实现典型的三段式充电程式CCCV。 然而,在这方 ...…

查看全部问答>

请教一个关于ATmega64串口和LCD显示的问题。。。。急!!!

芯片是ATmega64,LCD(12864)接PD口,串口通信用的PE口(usart0 RXD0 TXD0)。。。单独调试串口通信,LCD显示完全正常。。。只是要把两个程序合在一起时LCD显示就出问题,原本可以显示出的字符现实不出来。串口通讯没有问题。观察板子上的发光二极 ...…

查看全部问答>