0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32的半主机机制介绍

单片机与嵌入式 来源:单片机与嵌入式 2023-07-10 09:01 次阅读

半主机机制的作用

半主机是用于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;
}





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 仿真器
    +关注

    关注

    14

    文章

    988

    浏览量

    82997
  • ARM处理器
    +关注

    关注

    6

    文章

    346

    浏览量

    41325
  • STM32单片机
    +关注

    关注

    58

    文章

    545

    浏览量

    57936
  • printf函数
    +关注

    关注

    0

    文章

    30

    浏览量

    5827
  • USART串口
    +关注

    关注

    0

    文章

    31

    浏览量

    6723

原文标题:STM32的半主机机制

文章出处:【微信号:单片机与嵌入式,微信公众号:单片机与嵌入式】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何在POSC中使用主机

    如何在POSC中使用主机? 以上来自于百度翻译 以下为原文How to use semi hosting in POSC?
    发表于 12-19 14:52

    何谓主机方式?

    嵌入式简答题问题 1 .何谓主机方式?主机是一种调试机制,目标机可借助该机制将应用程序发出的
    发表于 10-27 06:38

    使用主机模式的printf()函数会出现什么情况呢

    使用微库的printf()函数该如何去实现呢?使用主机模式的printf()函数会出现什么情况呢?
    发表于 11-30 07:57

    如何构建用于非主机环境的应用程序

    主机是什么?如何构建用于非主机环境的应用程序?
    发表于 12-02 06:32

    什么是主机模式?为什么不用它

    1.禁用主机模式方法一:禁用主机模式,禁用了主机模式才能使用标准库函数printf()打印
    发表于 01-12 06:23

    嵌入式USB主机系统的研究与设计

    摘要:介绍了USB主机的核心机制及设计方法。
    发表于 07-09 19:01 23次下载

    OTG IP主机介绍(上)

    STM32单片机的OTG IP主机介绍(上)
    发表于 11-25 14:50 0次下载

    电脑主机板的工作原理介绍

    电脑主机板的工作原理介绍,电脑主机板的工作原理介绍,电脑主机板的工作原理介绍,电脑
    发表于 05-19 15:32 0次下载

    主机器人足球系统的通信机制

    电子开发机器人相关教程资料——自主机器人足球系统的通信机制
    发表于 09-06 16:42 0次下载

    关于STM32主机机制的作用

    主机机制的作用 半主机是用于ARM目标的一种机制,可将来自STM32单片机应用程序的输入输出请求传送至运行仿真器的PC
    的头像 发表于 04-09 14:02 2354次阅读
    关于<b class='flag-5'>STM32</b>半<b class='flag-5'>主机</b><b class='flag-5'>机制</b>的作用

    "MODBUS移植STM32,分别配置STM32做从机和主机"

    MODBUS移植STM32分别配置STM32做从机和主机近期自学了MODBUS通信协议,也从网上找了很多资料,自己也分别做了从机和主机的配置,现在进行配合操作。MCU采用
    发表于 12-06 18:06 76次下载
    "MODBUS移植<b class='flag-5'>STM32</b>,分别配置<b class='flag-5'>STM32</b>做从机和<b class='flag-5'>主机</b>"

    STM32的半主机机制

    主机是用于ARM目标的一种机制,可将来自STM32单片机应用程序的输入输出请求传送至运行仿真器的PC主机
    发表于 02-08 16:21 0次下载
    <b class='flag-5'>STM32</b>的半<b class='flag-5'>主机</b><b class='flag-5'>机制</b>

    stm32_FSMC机制

    stm32_FSMC机制介绍FSMC机制入门
    发表于 02-21 15:16 16次下载

    AN4860_STM32F4系列与STM32F7系列和STM32L4plus系列微控制器DSI主机

    AN4860_STM32F4系列与STM32F7系列和STM32L4plus系列微控制器DSI主机
    发表于 11-21 17:06 0次下载
    AN4860_<b class='flag-5'>STM32</b>F4系列与<b class='flag-5'>STM32</b>F7系列和<b class='flag-5'>STM32</b>L4plus系列微控制器DSI<b class='flag-5'>主机</b>

    stm32 usb 主机发送 pid in的原理和实现方法

    STM32是一款常用的微控制器系列,它具有广泛的应用领域,包括工业控制、汽车电子、消费电子等。其中,STM32同时支持USB主机和设备功能,使得它在与其他USB设备的通信中具有很大的优势。在本文
    的头像 发表于 12-20 15:56 543次阅读