关于STM32半主机机制的作用

发布者:BlossomBeauty最新更新时间:2024-09-11 来源: elecfans关键字:STM32  输入输出 手机看文章 扫描二维码
随时随地手机看文章

半主机机制的作用

半主机是用于ARM目标的一种机制,可将来自STM32单片机应用程序的输入输出请求传送至运行仿真器的PC主机。使用此机制可以启用C库中的函数,如printf()和scanf(),来使用PC主机的屏幕和键盘。这样就可以看到单片机的输入输出,方便进行调试。注意:种机制的运行需要仿真器,否则无法运行。


简单的来说,半主机模式就是通过仿真器实现开发板在电脑上的输入和输出。

开发时单片机需要独立运行,开发者就应该去掉仿真器,把printf函数通过单片机的外设来实现,例如通过开发板的串口。

非半主机机制下printf函数的实现方法

Use MicroLIB(微库)

因为使用微库的话,不会使用半主机模式。

如下图,在点开MDK软件的魔术棒,勾选Target选项卡中的“Use MicroLIB”。这样就可以使用printf()函数,通过USART输出数据到电脑串口助手。

37a51ec0-9869-11eb-8b86-12bb97331649.png

在主程序中添加代码

不使用Use MicroLIB(微库),就要在工程中加入以下代码, 以支持printf函数 。代码是写在USART的初始化文件中,记得修改USARTx,换成你要输出的USART端口号。

【功 能】 printf函数重定向支持代码 * 加入以下代码, 使用printf函数时, 不再需要选择use MicroLIB * 参 数: * 返回值:

#pragma import(__use_no_semihosting) //为确保没有从C库链接使用半主机的函数 struct __FILE { int handle; }; // 标准库需要的支持函数FILE __stdout; // FILE 在stdio.h文件void _sys_exit(int x) // 定义_sys_exit()以避免使用半主机模式{ x = x; }

int fputc(int ch, FILE *f) // 重定向fputc函数,使printf的输出,由fputc输出到UART, 这里使用串口1(USART1){ //if(xFlag.PrintfOK == 0) return 0; // 判断USART是否已配置,防止在配置前调用printf被卡死

while((USARTx -》SR&0X40)==0); // 等待上一次串口数据发送完成 USARTx -》DR = (u8) ch; // 写DR,串口1将发送数据 return ch;}


关键字:STM32  输入输出 引用地址:关于STM32半主机机制的作用

上一篇:stm32串口接收数据程序
下一篇:Visual Studio 2019 +STM32实现串口通讯

小广播
设计资源 培训 开发板 精华推荐

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

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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