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

STM32:CubeMX+IAR环境搭建全流程

一:前期准备

硬件:STM32F103C8T6最小系统板、ST-LINK/V2下载器

IDE:STM32CubeMX v6.12.0、IAR for ARM v9.30.1

固件包:STM32Cube MCU Package for STM32F1 Series v1.8.0

补充:固件包可在CubeMX中直接下载,也可提前从ST官网下载,下载后放在STM32Cubed的Repository文件下,CubeMX会自动识别。

附:STM32 Cube 固件包下载地址:

https://www.st.com.cn/zh/embedded-software/stm32cube-mcu-mpu-packages/products.html

二:CubeMX工程创建与配置

1.新建工程

打开STM32CubeMX,点击首页Start My project from MCU(从MCU新建工程).

在MCU搜索框中输入STM32F103C8T6,选中对应芯片.

2.下载接口及时钟配置

开启SWD调试模式:

晶振配置(外部8Mhz高速时钟)

时钟配置,其中除APB1时钟线为36Mhz,其余均为72Mhz(APB1最大36M).

3.工程设置与代码生成(对接IAR)

设置PC13为推挽输出

设置工程名、输出路径和IAR工具链,IAR新版本可以覆盖老版本,因此这里选择无误。

工程输出配置,其中:

copy all used libraries into the projectfolder:复制所有库文件到生成的工程目录中
Copy only the necessary library files:只复制必要的库文件。
Add necessary library files as reference in the toolchain projectconfiguration file:在工具链项目配置文件中添加必要的库文件作为参考。

Generate peripheral initialization as a pair of’.c/.h’ files perperipheral:每个外设生成独立的.C .H文件,方便独立管理。

Backup previously generated files whenre-generating:在重新生成时备份以前生成的文件。

keep user code when re-generating:重新生成代码时,保留用户代码。

delete previously generated files when not re-generated:删除以前生成但现在没有选择生成的文件。

所有选项都配置完成后点击右上角的GENERATE CODE,生成代码

点击打开工程

首次打开时,会弹出提示(工程是CubeMX生成的旧版本格式,IAR版本较高),直接点击Yes,完成工程格式转换(转换后会自动备份原文件,不影响使用)。

三:IAR代码编写

在IAR左侧Project窗口中,展开Core→Src,双击打开main.c文件;

在while(1)循环中,添加两行核心代码(翻转LED电平+延时),完整代码如下:

HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13); // 翻转PC13电平(LED亮/灭切换) HAL_Delay(500); // 延时500ms,控制闪烁频率

如图:

HAL库函数说明

HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13):翻转GPIOC端口的13号引脚电平,实现LED亮灭切换;

HAL_Delay(500):延时500毫秒,参数单位为ms,可修改参数调整闪烁频率(如1000表示1秒闪烁一次);

四:编译下载工程

如果没有配置下载器的需要配置下下载环境,详情可见我另一篇文章:https://blog.csdn.net/weixin_62938013/article/details/159986094?fromshare=blogdetail&sharetype=blogdetail&sharerId=159986094&sharerefer=PC&sharesource=weixin_62938013&sharefrom=from_link

点击F7编译工程,后点击F5下载工程,按一下开发板上的复位按钮,可以看到程序已经在跑了。

五:IAR IDE常用快捷键功能设置

这里以将F5设置为只下载不调试 F6只调试不下载为例器,其它可按需自行定义。

1.点击IAR顶端的Tools,选择Options,

按图示即可完成快捷键配置。

六:IAR 9.30.1痛点:STLINK下载后需手动复位

编译成功后,需要将程序下载到STM32芯片中,核心问题的是下载后需手动按复位键才能运行,尝试了多种办法一直不成功,如果有知道如何解决的烦请评论区指教。

七:写在后面

本博客仅记录自己的学习进程,无任何商业用途,基于论坛上已经存在的内容结合自己实操过程完成了此博客,自己也做了一些细节验证,在此记录下来作为学习沉淀。如有侵权,联系速删。

http://www.jsqmd.com/news/647098/

相关文章:

  • AI,技术革命还是财富转移?
  • 讲点码德!避免这些代码坏味道,努力做一名优秀的程序员
  • 算法训练营第三天| 209. 长度最小的子数组
  • CVPR 2026 | 提速100倍!首个端到端Real-to-Sim物体级感知与重建框架
  • 别再硬编译了!Flash-Attn安装失败?先检查你的GLIBC和CUDA Toolkit版本匹配
  • 进阶篇一 Nuxt4 SSR 原理:服务端渲染到底做了什么
  • 手把手教你用微信云托管绕过域名备案,快速上线小程序后端服务
  • 基于Matlab的矩形波导TE10模电磁场动态可视化实现
  • 算法小记5 二分答案+差分 - whisper
  • MyBatis批量插入数据避坑指南:如何避免TDS协议流参数过多错误
  • 使用 Apache Fesod 读写 Excel
  • 我把Claude Code泄露的代码改造成python程序了,其中的大模型记忆模块与上下文工程分析
  • [特殊字符]Openclaw 梦境(Dream)系统详细研究
  • Adobe-GenP通用补丁:如何安全高效地解锁Adobe全家桶功能
  • opencode 配置本地ollama模型编程
  • 从零到一:基于STM32的L298N电机驱动与PWM调速实战
  • 2026深度分析罗兰艺境市场研究专业服务GEO技术案例,测评北京市场调研公司优化过程与效果验证 - 罗兰艺境GEO
  • 互补PWM死区时间如何根据MOSFET开关参数精确计算?
  • 职场里,越亲近越好?怎样的边界感,才是舒服关系?
  • mysql大表数据清理的利器_使用表分区按天删除数据
  • HTML5 Input 类型详解
  • 新都区急着入住怎么快又好?2026高效靠谱、工期准时的装修公司终极推荐! - 推荐官
  • 【MATLAB实战】手把手教你设计超前校正:从原理到代码实现
  • 渗透测试不够用?红蓝对抗如何精准击穿企业安全体系的深层弱点
  • 大麦抢票脚本终极教程:5分钟学会自动化抢票技巧
  • package.json resolutions:从依赖冲突到版本锁定的实战指南
  • 春茶季,教你一眼认出茶山上的“紫芽”
  • 从AlphaGo到ChatGPT:聊聊强化学习(RL)是如何成为AI进化‘隐藏引擎’的
  • 5分钟搞定openEuler防火墙放行vsftp:主动/被动模式全解析
  • ribbon--重点笔记