当前位置: 首页 > backend >正文

STM32 入门实录:macOS 下从 0 到点亮 LED

1. 环境准备

软件清单

软件版本下载地址校验
STM32CubeIDE1.15.0SST 官网 DMG打开后 About 显示 1.15.0-19437
SST-LinkUtility 3.16.9STSW-LINK007-
ST-Link FirmwareV2J45S7通过 STLinkUpgrade 自动刷-

硬件清单

  1. Blue-Pill 开发板 ×1
  2. ST-Link V2 调试器 ×1
  3. 4 根母对母杜邦线

2. 安装 & 升级 ST-Link

2.1 插上 ST-Link

macOS 无需额外驱动,终端验证:

$ system_profiler SPUSBDataType | grep -i stHost Controller Driver: AppleUSBXHCIARHost Controller Driver: AppleUSBXHCISPTLPSTM32 STLink:Vendor ID: 0x0483  (STMicroelectronics)Manufacturer: STMicroelectronics

2.2 升级固件

  1. 打开 STLinkUpgrade(安装完 STSW-LINK007 后,在
    /Applications/STM32CubeIDE.app/Contents/Eclipse/plugins/…/STLinkUpgrade.app)

  2. 拔掉目标板 → 按住 ST-Link 上的 RESET 按钮 → 插入 USB(进入 DFU 模式)

  3. 点击 Upgrade → 等待 10 秒 → 显示 Upgrade OK

  4. 松开按钮,重新插一次,终端再次验证:

$ st-info --probe
Found 1 stlink programmers

3. STM32CubeIDE 创建工程

3.1 新建项目

  1. 打开 CubeIDE → File → New → STM32 Project
  2. Target Selector → 搜索框输入 STM32F103C8Tx → 双击选中
  3. 工程名:Test,Toolchain:STM32Cube → Finish
  4. 第一次弹出 Initialize peripherals 时直接点 Yes(默认即可)
  5. CubeMX 视图出现 → 右上角 Save → 自动生成代码

3.2 目录结构确认

在这里插入图片描述

3.3 示例代码

#include <stdint.h>
#include "stm32f10x.h"#if !defined(__SOFT_FP__) && defined(__ARM_FP)#warning "FPU is not initialized, but the project is compiling for an FPU. Please initialize the FPU before use."
#endif/* 简易毫秒延时(基于 72 MHz 内核时钟) */
static void delay_ms(volatile uint32_t ms)
{/* 粗略值:72 MHz / 4 ≈ 18 M 次循环 ≈ 1 ms */while (ms--)for (volatile uint32_t i = 0; i < 18000; i++);
}int main(void)
{/* 打开 GPIOC 时钟 */RCC->APB2ENR |= RCC_APB2ENR_IOPCEN;/* PC13 推挽输出 50 MHz */GPIOC->CRH &= ~(GPIO_CRH_MODE13 | GPIO_CRH_CNF13);   /* 清掉旧配置 */GPIOC->CRH |=  (GPIO_CRH_MODE13_1 | GPIO_CRH_MODE13_0); /* 11: Output 50 MHz */while (1){GPIOC->ODR ^= (1u << 13);   /* 翻转 PC13 */delay_ms(10);              /* 延时 500 ms */}
}

4. 编译错误:RCC 未定义 → 手动补 CMSIS

现象

RCC->APB2ENR |= 0x00000010;

报错:error: ‘RCC’ undeclared

4.1 原因

当前工程是 “Managed Build” 极简模板,缺少 stm32f10x.h。

4.2 解决方案

方案 A:手动拷贝 CMSIS(3 分钟)

  1. 下载 STM32CubeF1 → 解压
  2. 把下面 3 个文件 复制到工程 Inc 目录:
Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f10x.h
Drivers/CMSIS/Core/Include/core_cm3.h
Drivers/CMSIS/Device/ST/STM32F1xx/Include/system_stm32f10x.h

方案 B:用 CubeIDE 重新生成(推荐)

  1. File → New → STM32 Project 选中 STM32F103C8Tx
  2. 勾选 Initialize all peripherals with their default mode → Finish
    生成的工程已自带 CMSIS,直接写寄存器即可。

5.ST-Link 烧录

  1. 编译:Project → Build All
  2. 烧录:Run → Run → LED 闪烁

6.问题 FAQ

现象解决
OpenOCD: no device found确认 ST-Link 已升级,USB 线支持数据
Not Target目标板未供电;SWD 线序错;按住 Reset 下载
Not ST-Link detected固件未升级 → 2.2 节流程
macOS 无权限首次弹窗 “Allow accessory” → 允许

烧录步骤:

  1. Run → Run → OK
  2. 勾选 Reset after programming
  3. 观察 Console 日志:
** Programming Finished **
** Verify OK **
** Resetting target **
http://www.xdnf.cn/news/18596.html

相关文章:

  • Java 编译器的世界:前端、JIT 与 AOT 的秘密:详解 Java 的编译过程与编译器生态
  • QT面试题总结(持续更新)
  • Excel 表格 - 合并单元格、清除单元格格式
  • kubernetes中的认证和授权
  • 小程序全局状态管理:使用MobX进行跨组件数据共享详解(九)
  • 国内使用SSH稳定使用github
  • 分布式账本:当不可篡改性遭遇法律拷问
  • ​Mac用户安装JDK 22完整流程(Intel版dmg文件安装指南附安装包下载)​
  • 【链表 - LeetCode】206. 反转链表【带ACM调试】
  • [身份验证脚手架] 前端认证与个人资料界面
  • 商密保护迷思:经营秘密到底需不需要鉴定?
  • 高并发内存池(1)-定长内存池
  • 通过python程序将实时监测数据写入excel软件进行保存是常用和非常实用的功能,本文教会大家怎么去搞定此功能
  • 塔能科技物联精准节能如何构建智慧路灯免疫系统
  • pycharm的matplotlib不显示动图问题的解决
  • `free` 内存释放函数
  • Linux --网络基础概念
  • 分布式事务的两种解决方案
  • K8s部署MySQL8.0数据库
  • 【大语言模型 17】高效Transformer架构革命:Reformer、Linformer、Performer性能突破解析
  • Baumer高防护相机如何通过Tiny-YOLO单类模型实现人体跌倒检测与跟踪(C#代码UI界面版)
  • 从 UMG 到 Unreal 引擎深层的 UI 定制艺术:Slate 底层 UI 框架简介
  • Python爬虫-解决在抓包的过程中,找不到接口地址的问题
  • 『深度编码』操作系统-进程之间的通信方法
  • 使用dumpbin指令分析Windows下的PE文件(伍)
  • 跨语言文化的统一语义真理:存在性、形式化及其对自然语言处理(NLP)深层语义分析的影响
  • Transformer实战(13)——从零开始训练GPT-2语言模型
  • Redis--day12--黑马点评--附近商铺用户签到UV统计
  • Trip Footprint_Trae Solo模式生成一个旅行足迹App
  • 【卷积神经网络详解与实例】2——卷积计算详解