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

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.dtcms.com/a/348273.html

相关文章:

  • Java全栈开发面试实录:从基础到实战的深度探讨
  • 微服务-19.什么是网关
  • 【论文阅读】AI 赋能基于模型的系统工程研究现状与展望
  • Redis--day12--黑马点评--附近商铺用户签到UV统计
  • Excel 表格 - 合并单元格、清除单元格格式
  • 包裹堆叠场景漏检率↓79%!陌讯多目标追踪算法在智慧物流的实践优化
  • EXCEL实现复制后倒序粘贴
  • 暗影哨兵:安全运维的隐秘防线
  • 深度学习部署实战 Ubuntu24.04单机多卡部署ERNIE-4.5-VL-28B-A3B-Paddle文心多模态大模型(详细教程)
  • 用墨刀开发能碳管理系统 —— 从流程图到设计稿全流程拆解
  • EAM、MES和CRM系统信息的整理
  • c语言指针学习
  • C文件编译
  • IQC、IPQC、PQC、FQC、OQC在ERP/MES/WMS中的系统协同
  • 【SBP】Unity 打包构建管线原理解析于对比
  • 什么是服装企业管理软件?
  • 【Canvas与旗帜】金波浪圈法兰西国旗
  • 广告业务连续四季度双位数增长,B站做了什么?
  • DAY 51 复习日+退款开始
  • 数据挖掘 4.8 评估泛化能力
  • 【DeepResearch调研】基于知识图谱与数据合成的大语言模型幻觉缓解研究前沿
  • C++ Core Guidelines: 最佳实践与深入解析
  • 服务器硬件电路设计之 SPI 问答(五):服务器场景下的ESD防护策略与通信故障诊断指南
  • Flink元空间异常深度解析:从原理到实战调优指南
  • LLM实践系列:利用LLM重构数据科学流程07 - 工程化实践与挑战
  • 计算机网络基础(三) --- TCP/IP网络结构(运输层)
  • 实时操作系统FreeRTOS移植到STM32VGT6
  • Axure RP 9的安装
  • 2025年渗透测试面试题总结-31(题目+回答)
  • leetcode 1504. 统计全 1 子矩形 中等