STM32CubeIDE的MCU开发

        以前做stm32嵌入式开发均使用的是破解版的keil软件,现在工作需要无法按照此步骤进行,最近针对ST官方免费软件STM32CubeIDE进行了相关调研工作。

1 STM32CubeIDE简介

        目前主流的STM32开发环境是ARM公司的KEIL软件, 由于KEIL对于STM32大部分型号是收费的, 使用需要破解, 存在版权问题。 并且使用KEIL编译大型工程, 编译太慢了, 编译耗时长。

        STM32CubeIDE是ST公司推出的免费多功能STM32开发工具,采用了行业标准的开放式许可条款,为简化和加快基于STM32的嵌入式设计,新增了STM32专用功能,包括功能强大的STM32CubeMX微控制器配置和项目管理工具。用户能够最大限度地提高产品的功能和性能,缩短研发周期,降低开发成本。

        STM32CubeIDE是一个多操作系统集成开发工具,它是STM32Cube软件生态系统的一部分。STM32CubeIDE具有STM32 MCU和MPU的外设配置、代码生成、代码编译和调试功能,它基于Eclipse®/CDT框架和GCC工具链进行开发,GDB进行调试。STM32CubeIDE集成了STM32的配置和项目创建功能,提供了一体化的工具体验,节省安装和开发时间。在开发过程中任何时间,用户都能返回到外设/中间件的初始化和配置,并且在不影响用户代码的情况下生成初始化代码。

2 STM32CubeIDE下载与安装

2.1 STM32CubeIDE下载

        进入意法半导体的官网 STM32CubeIDE - STM32的集成开发环境 - STMicroelectronics,选择最新版本,按照提示下载STM32CubeIDE软件安装包,如下图所示。

STM32CubeIDE的MCU开发_第1张图片

图1 官网获取最新安装包

       例如,作者的电脑是windows操作系统,选择了当前最新版本1.6.1 STM32CubeIDE-Win的安装包进行下载。

2.2 STM32CubeIDE安装

        软件下载成功后,解压缩软件安装包,右键.exe文件 —> 以管理员身份运行,注意:安装目录中不允许有中文路径

STM32CubeIDE的MCU开发_第2张图片

 图2 管理员身份运行

        弹出的界面,点击Next。

STM32CubeIDE的MCU开发_第3张图片

 图3 安装界面

        弹出的界面,点击I Agree。

STM32CubeIDE的MCU开发_第4张图片

图4 同意安装

        选择安装路径,点击Next。

STM32CubeIDE的MCU开发_第5张图片

图5 选择安装路径

        勾选“SEGGER J-Link drivers”和“ST-LINK drivers”,点击“Install”,等待安装完成。

STM32CubeIDE的MCU开发_第6张图片

图6 勾选调试工具

        安装完成,点击Next。

STM32CubeIDE的MCU开发_第7张图片

图7 安装完成

        弹出的界面,点击Finish。

STM32CubeIDE的MCU开发_第8张图片

图8 Finish

2.3 STM32CubeIDE器件包安装

        双击软件STM32CubeIDE 1.6.1.exe  ,点击help —> Manage Embedded Software Packages 。

STM32CubeIDE的MCU开发_第9张图片

图9 安装器件包

        根据项目需要选择安装STM32器件库,例如要使用STM32F1系列和STM32F4系列,勾选最新的器件库,点击Install Now直接安装即可。

STM32CubeIDE的MCU开发_第10张图片

图10 STM32F1系列器件包

STM32CubeIDE的MCU开发_第11张图片

图11 STM32F4系列器件包

        安装成功后勾选框显示为绿色,查看器件包的安装路径,点击Window —> Preferences 。

STM32CubeIDE的MCU开发_第12张图片

图12 查看已器件包路径

        在STM32Cube —> Firmware Updater中可以看到器件库的默认安装路径,此路径也可以自行修改。

STM32CubeIDE的MCU开发_第13张图片

图13 器件包默认路径

        查看此路径,可以看到已经安装成功的器件库,项目开发就可以正常使用该系列的STM32芯片。

STM32CubeIDE的MCU开发_第14张图片

图14 已安装器件包文件夹

3 STM32CubeIDE的使用

        下面以STM32F407ZGT6型号为例,开发和调试LED闪烁、串口中断回环的功能,介绍STM32CubeIDE软件的基本使用方法。

3.1 资料准备

        STM32F407ZG - 带DSP和FPU的高性能基础系列ARM Cortex-M4 MCU,具有1 MB Flash、168 MHz CPU、ART加速器、以太网和FSMC - STMicroelectronics

《STM32参考手册》,用于查询STM32各类寄存器的使用方法;

《STM32数据手册》(产品规格书),用于查询STM32的物理结构(总线架构、时钟树、管脚功能等);

《板卡原理图》

3.2 搭建工程

        点击File —> New —> STM32 Project 。

STM32CubeIDE的MCU开发_第15张图片

图15 新建工程

        弹出的界面,在1中搜索项目使用的STM32芯片型号,点击2处,然后再点击Next。

STM32CubeIDE的MCU开发_第16张图片

图16 搜索STM32芯片型号

        设置project名,点击Finish 。

STM32CubeIDE的MCU开发_第17张图片

图17 工程命名

        此时弹出与STM32CubeMX相同的图形化外设配置界面,根据本次例程的功能,我们需要配置时钟、IO、串口、中断等功能。

        首先配置时钟管脚, 选择晶振(板卡上配置频率为8MHz的)作为外部高速时钟(HSE),外部低速时钟(LSE)暂时不需要。

STM32CubeIDE的MCU开发_第18张图片

图18 配置外部高速时钟HSE

        配置系统管脚,debug用,选择4pin的jtag功能。

STM32CubeIDE的MCU开发_第19张图片

图19 配置调试接口

        配置LED IO引脚为输出功能引脚,查看板卡原理图,LED0连接在PF9引脚、LED1连接在PF10引脚,那么分别将PF9和PF10配置为OUTPUT引脚。

STM32CubeIDE的MCU开发_第20张图片

图20 配置LED0管脚

STM32CubeIDE的MCU开发_第21张图片

图21配置LED1管脚

        修改引脚命名。

STM32CubeIDE的MCU开发_第22张图片

图22 修改LED0名

STM32CubeIDE的MCU开发_第23张图片

图23 修改LED1名

        配置串口,本次测试使用USART3,配置USART的IO引脚、波特率、中断等参数。

STM32CubeIDE的MCU开发_第24张图片

图24 配置串口3管脚

STM32CubeIDE的MCU开发_第25张图片

图25 配置串口3中断

        开启USART3的中断功能,由于本次测试仅使用一个串口中断的功能,所以在界面中的中断优先级分组、抢占优先级和子优先级按默认设置即可。

STM32CubeIDE的MCU开发_第26张图片

图26 配置串口3中断

        配置时钟树,此处将APB1配置为最高的42MHz,APB2配置为最高的84MHz。

STM32CubeIDE的MCU开发_第27张图片

图27 配置时钟树

        STM32F407时钟树,HSE(高速外部时钟信号)、LSE(低速外部时钟信号)、HSI(高速内部时钟信号)、LSI(低速内部时钟信号)。

STM32CubeIDE的MCU开发_第28张图片

图28 STM32F4时钟树结构

        工程设置,先查看工程名和路径,再选择生成的Code格式。

STM32CubeIDE的MCU开发_第29张图片

图29 确认工程名和路径

STM32CubeIDE的MCU开发_第30张图片

图30 勾选生成的code特征

        保存.ioc文件,生成project code模板。

图31 生成code

        可以看到生成的工程文件夹结构。

STM32CubeIDE的MCU开发_第31张图片

图32 生成的project结构

3.3 用户程序编写

        用户程序的编写只能在注释有“USER CODE BEGIN”与“USER CODE END”之间进行,防止修改.ioc文件后重新生成project code时将已经编写的用户程序覆盖掉。

STM32CubeIDE的MCU开发_第32张图片

图33 用户程序编写区域

3.4 编译、调试

        工程编译。

STM32CubeIDE的MCU开发_第33张图片

图34 工程编译

        设置调试工具。

STM32CubeIDE的MCU开发_第34张图片

图35 调试工具设置

        选中当前工程,设置调试器,本次测试使用JLINK进行调试,因此调试探头选中SEGGER J-LINK,接口选中JTAG接口,调试初始速度默认为4000kHz。

STM32CubeIDE的MCU开发_第35张图片

图36 选择jlink

        1表示下载程序(.elf文件),2表示Debug程序。

STM32CubeIDE的MCU开发_第36张图片

图37 下载与调试

        下载程序成功。

STM32CubeIDE的MCU开发_第37张图片

图38 程序下载

        Debug程序成功,程序运行暂停在main函数内的第一条语句。

STM32CubeIDE的MCU开发_第38张图片

图39 程序debug

        全速运行程序后,从板卡上可以看到led0(红色)开始闪烁/led1(绿色)常亮,这是因为我们在STM32CubeIDE的.ioc中配置了这两个IO(默认低电平,低电平常亮),但是应用程序中只针对led0做了翻转功能,所以现象就是红灯闪烁、绿灯常亮。

图40 LED0灭、LED1亮

图41 LED0亮、LED1亮

STM32CubeIDE的MCU开发_第39张图片

图42 STM32CubeMX中GPIO的默认状态

        测试串口中断回环功能。

STM32CubeIDE的MCU开发_第40张图片

图43 串口中断回环测试

4 STM32CubeIDE使用小结

  1. 使用STM32CubeMX的图形化界面生成和修改底层驱动,可操作性更强、入门难度更小、开发效率更高,我们只需要将重心放在应用程序的开发上即可;
  2. STM32CubeIDE软件是免费软件,无需破解,程序运行大小不受影响,对于我们进行STM32嵌入式开发的成本更低。

你可能感兴趣的:(嵌入式开发,mcu,stm32)