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芯片中,核心问题的是下载后需手动按复位键才能运行,尝试了多种办法一直不成功,如果有知道如何解决的烦请评论区指教。
七:写在后面
本博客仅记录自己的学习进程,无任何商业用途,基于论坛上已经存在的内容结合自己实操过程完成了此博客,自己也做了一些细节验证,在此记录下来作为学习沉淀。如有侵权,联系速删。
