STM32的半主机机制介绍

发布时间:2024-07-31  

半主机机制的作用

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


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

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

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

Use MicroLIB(微库)

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

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

5fa2d2ca-1e2f-11ee-962d-dac502259ad0.png

在主程序中添加代码

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


/******************************************************************************

 * 【功  能】 printf函数重定向支持代码

 *           加入以下代码, 使用printf函数时, 不再需要选择use MicroLIB   

 * 参  数:

*返回值:

 ******************************************************************************/  

#pragmaimport(__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;

}


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

相关文章

    RS瑞森半导体在PC电源上的应用;又称电脑电源,是电脑各部件供电的枢纽,是电脑的重要组成部分。主要作用是将220V交流电(全球不同国家电压不同,做到80V-264Vac全球通用)变换为+5VSB......
    购买一款外接的扩展坞就显得尤为重要了。您可以将含有USB Type C 3.1协议的电脑主机,通过此产品连接到具有HDMI的显视器、电视机或其他显示设备。产品可以接入硬盘、U盘、鼠标和键盘等USB设备,产品可以接入有线以太网络。 另外......
    走的十箱芯片被追回 事情是怎么发生的?据王先生介绍,在报警当天早上上班时,他就发现仓库10箱芯片“不翼而飞”。本想去查看公共区域监控视频,没想到,就连监控的电脑主机也被人拆走了。 初步怀疑有“内鬼” 民警......
    硕盟SM-T54USB-C 多功能扩展坞 USB-C Multifunction Adapter 说明书;硕盟SM-T54是一款USB-C扩展坞,您可以将含有USB 3.1协议的电脑主机,通过......
    3.1协议的电脑主机,通过此产品连接到具有HDMI或VGA的显示器、电视机或其他显示设备。产品可以接入硬盘、U盘、鼠标、键盘和光驱等HDMI或VGA设备。 另外,此产品还可以通过USB-C接口给电脑主机......
    用相应配套的USB线从电脑主机获取+5V直流电源,在电源模块中加有保护电路,即电路中有短路,不会对7805三端稳压器及电脑主机电源有损害!其电路原理图如图1.4所示: 5.程序下载模块 该模......
    三星ArtPC Pulse超级电脑曝光!对标Mac Pro;手机不给力,不妨关注一下三星的PC吧。 日前,亚马逊上出现了一款名为ArtPC Pulse的三星产品,这是一台垃圾桶形状的电脑主机,跟苹......
    Intel祝贺小米主机发布:双方基于NUC共创 四大升级;12月11日,首台桌面电脑主机——发布,拥有仅手掌大小的体积,媲美台式机的性能,首发价3699元。本文引用地址:不少网友感觉,这款主机......
    可口可乐电竞主机亮相:想一口把水冷喝掉;美国硬件厂商MAINGEAR携手可口可乐推出了一款超酷炫的电脑主机,可乐元素相当抢眼。 这款电竞主机名为Rush 1ofONE,外观......
    Flash存储叠封在芯片内部的方式,还可将这两部分外部硬件组成省掉。下面具体介绍扫码引擎各组成部件的基本功能。 1、电源模块 电源模块用于实现电压转换和电源管理。使用高运算处理器时,需提供多种电压,如3.3V......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>