1、下载安装STM32CubeMX
STM32CubeMX是STM32Cube工具家族中的一员,从MCU/MPU选型,引脚配置,系统时钟以及外设时钟设置,到外设参数配置,中间件参数配置,它给STM32开发者们提供了一种简单,方便,并且直观的方式来完成这些工作。所有的配置完成后,它还可以根据所选的IDE生成对应的工程和初始化C代码。除此以外,STM32CubeMX还提供了功耗计算工具,可作为产品设计中功耗评估的参考。
下载地址:STM32CubeMX - STM32Cube初始化代码生成器 - 意法半导体STMicroelectronics
安装完成后,打开STM32CubeMX,先设置下载文件路径。
点击按钮,选择目标文件夹。
下载芯片支持包。
下载之前,记得先要登录ST账号。
2、创建工程
点击New Project的“ACCESS TO MCU SELECTOR”:
可通过搜索等方式选择目标型号的芯片。
双击芯片后可以进入新工程的配置界面。
3、基本配置
3.1、下载口配置
在Pinout&Configuration中左侧选择“DEBUG”,在右侧下拉框中选择自己使用的调试接口。我这里选择“SerialWire”,即SDIO口。可在下方查看SWIO口引脚配置。
选择好后,会在右边看到下载后,被点亮成绿色。
3.2、时钟配置
选择高速时钟,和低速时钟,选择后,会在右边点亮引脚。
时钟口,是外部时钟给芯片提供时钟信号的,高速时钟8-25MHz,低速时钟32.768kHz。
打开“Clock Configuration”,对时钟树进行配置,选择时钟树后可以选择自己想使用的时钟源(可输入编辑),也可以直接在图中红框中输入主时钟频率,软件会自动对时钟树进行配置。
4、功能配置
4.1、串口配置
配置LPUART1为调试打印输出串口。
4.2、LED输出引脚配置
可以在“System Core”中的GPIO中查找IO引脚进行配置,可以自定义引脚名称。
也可以在芯片图形下方搜索引脚名称,右击该引脚进行配置。
5、实时操作系统配置
5.1、配置FREERTOS
CubeMX支持FreeRTOS,可在“Middleware and Software Packs”中选择FREERTOS,并对其进行配置。
Interface使用 CMSIS_V2 最新的版本,主要是提供相同接口的函数,便于我们编写代码。CMSIS的英文全称是:Common Microcontroller Software Interface Standard,直译过来就是“通用微控制器软件接口标准”;它是一个用来让微控制器开发者减少学习时间、简化软件移植、加速工程创建仿真和加速应用产品上架的工具集合;
CMSIS的作用:
1.提供了接口标准,便于移植和管理
2.提供了很多第三方固件,便于业务开发
3.因为统一了接口,使底层硬件和上层应用耦合降低,更换硬件平台时只需开发人员改变底层硬件的驱动即可,上层业务应用程序无需做改动。
可以点击“Config parameters”等选项卡对FreeRTOS系统进行设置,如点击 add 去创建 任务,互斥量,信号量,队列等,或者右击进行编辑。
5.2、更改系统时钟
由于 FreeRTOS 是基于系统定时器的,所以创建 stm32 工程时要使用其他的定时器来进行计时。这里我使用的是定时器 TIM16。
6、工程配置和输出
6.1、工程设置
点击“ProjectManager”的Project选项卡,设置工程属性。
6.2、代码生成配置
点击Code Generator选项卡,对生成代码进行设置。
由于不同的单片机的性能可能不同,所以这里只添加必须的库即可。设置自动生成 .c/ .h 文件。
6.3、生成工程
点击右上角“GENERATE CODE”,生成工程项目。
然后就会在指定文件夹中生成工程代码。
7、编译运行
用keiluv5打开MDK-ARM中的工程,项目结构代码如下图所示。
编译无问题。
在void MX_GPIO_Init(void)函数中,对LED1引脚进行初始化。相关定义在main.h中!
#define LED1_Pin GPIO_PIN_0
#define LED1_GPIO_Port GPIOB
在任务函数中加入LED点亮和熄灭函数:
下载运行,功能正常!