项目简介
本项目基于STM32F1xx系列微控制器,展示了半主机(Semihosting)技术在该系列微控制器上的实现。半主机技术可在调试时将信息(如日志)输出到调试控制台,无需硬件设备显示屏,可通过GDB调试器输出窗口查看调试信息。
项目的主要特性和功能
- 半主机接口实现:通过配置STM32微控制器软硬件,实现半主机接口功能,使调试信息能输出到GDB调试控制台。
- 系统时钟管理:利用
SystemInit
和SystemCoreClockUpdate
函数,完成系统时钟的初始化与更新,确保系统时钟正常运行。 - GPIO控制:通过
MX_GPIO_Init
函数,实现GPIO(通用输入输出)的初始化,以控制LED闪烁。 - 中断处理:在
stm32f1xx_it.c
文件中实现对STM32F1xx微控制器多种中断的处理,包括非屏蔽中断、硬故障、内存管理故障等。 - 格式化输入输出:支持使用
printf
输出信息,以及用sscanf
转换字符串中的整数、浮点数和双精度数。
安装使用步骤
准备工作
- 准备STM32F1xx系列微控制器开发板及相关硬件(如LED)。
- 安装支持STM32F1xx系列的开发环境,如STM32CubeIDE或Keil uVision等。
配置项目
- 将
main.c
、stm32f1xx_hal_msp.c
、stm32f1xx_it.c
、system_stm32f1xx.c
等文件作为项目基础代码。 - 配置项目参数,如时钟源、GPIO引脚等。
- 配置链接器标志:在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
- 在
Debug Configurations
的Startup
选项卡添加以下内容:monitor arm semihosting enable
- 在
main.c
中包含stdio.h
头文件,添加函数原型和函数调用initialise_monitor_handles()
,且该调用要在任何printf
调用之前。 - 添加
printf()
调用输出信息,使用\n
确保信息刷新到控制台。
编译烧录
使用开发环境对项目进行编译和烧录。
调试运行
- 在开发环境中启动调试会话。
- 若要输出浮点数,在
Debug Configurations
中移除-specs=nano.specs
选项,但会使代码大小和数据大小分别增加约20KB和2KB。 - 在调试模式下运行程序,
Hello, world!
等信息会在OpenOCD控制台输出。 - 若要重置程序,在GDB控制台输入以下命令:
tb main monitor reset halt c
注意:本项目详细使用步骤可能因开发环境和硬件配置不同而有差异,建议参考开发环境文档和STM32F1xx系列微控制器产品手册进行配置和调试。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】