littlebot
Published on 2025-04-10 / 0 Visits
0

【源码】基于STM32F1xx微控制器的半主机调试项目

项目简介

本项目基于STM32F1xx系列微控制器,展示了半主机(Semihosting)技术在该系列微控制器上的实现。半主机技术可在调试时将信息(如日志)输出到调试控制台,无需硬件设备显示屏,可通过GDB调试器输出窗口查看调试信息。

项目的主要特性和功能

  1. 半主机接口实现:通过配置STM32微控制器软硬件,实现半主机接口功能,使调试信息能输出到GDB调试控制台。
  2. 系统时钟管理:利用SystemInitSystemCoreClockUpdate函数,完成系统时钟的初始化与更新,确保系统时钟正常运行。
  3. GPIO控制:通过MX_GPIO_Init函数,实现GPIO(通用输入输出)的初始化,以控制LED闪烁。
  4. 中断处理:在stm32f1xx_it.c文件中实现对STM32F1xx微控制器多种中断的处理,包括非屏蔽中断、硬故障、内存管理故障等。
  5. 格式化输入输出:支持使用printf输出信息,以及用sscanf转换字符串中的整数、浮点数和双精度数。

安装使用步骤

准备工作

  1. 准备STM32F1xx系列微控制器开发板及相关硬件(如LED)。
  2. 安装支持STM32F1xx系列的开发环境,如STM32CubeIDE或Keil uVision等。

配置项目

  1. main.cstm32f1xx_hal_msp.cstm32f1xx_it.csystem_stm32f1xx.c等文件作为项目基础代码。
  2. 配置项目参数,如时钟源、GPIO引脚等。
  3. 配置链接器标志:在SW4STM32 IDE中,点击Project Properties,选择C/C++ Build,再选Settings。在MCU GCC Linker菜单中,选择Miscellaneous,在Linker flags字段更新为: -specs=nosys.specs -specs=nano.specs -specs=rdimon.specs -lc -lrdimon
  4. Debug ConfigurationsStartup选项卡添加以下内容: monitor arm semihosting enable
  5. main.c中包含stdio.h头文件,添加函数原型和函数调用initialise_monitor_handles(),且该调用要在任何printf调用之前。
  6. 添加printf()调用输出信息,使用\n确保信息刷新到控制台。

编译烧录

使用开发环境对项目进行编译和烧录。

调试运行

  1. 在开发环境中启动调试会话。
  2. 若要输出浮点数,在Debug Configurations中移除-specs=nano.specs选项,但会使代码大小和数据大小分别增加约20KB和2KB。
  3. 在调试模式下运行程序,Hello, world!等信息会在OpenOCD控制台输出。
  4. 若要重置程序,在GDB控制台输入以下命令: tb main monitor reset halt c

注意:本项目详细使用步骤可能因开发环境和硬件配置不同而有差异,建议参考开发环境文档和STM32F1xx系列微控制器产品手册进行配置和调试。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】