1,前言
本章内容是CubeMX工程配置freeRTOS的demo工程,后续其他本专栏文章中不再提及,默认在本章内容上完成。
单片机型号:STM32F407
编程环境 :STM32CubeMX + Keil v5
2,STM32CubeMX新建工程
双击打开STM32CubeMX软件,选择File(1)->New Project(2)新建工程。也可以直接通过ACCESS TO MCU SELECTOR(3)直接进行新建工程。这两种方法都可以。
在(1)位置输入自己的芯片型号,在(2)位置双击自己的芯片型号完成芯片选型。
完成芯片选型后,进入到如下界面。
3,STM32CubeMX的Debug配置
首先我们来进行Debug的配置,选择System Core->SYS(1)->Debug(2),下拉选择Serial Wire模式,也就是SWD的调试模式。并在下方Timebase Source时基来源(3)中选择TIM14(由于HAL库的默认时基和freeRTOS的默认时基均为系统滴答时钟,可能会有影响,故将HAL库的时基改为定时器)。
4,STM32CubeMX的时钟选择
接着我们来进行时钟选择的配置,选择System Core->RCC(1),在High Speed Clock(HSE)高速时钟源(2)下拉选择外部时钟Crystal Resonator,在Low Speed Clock(LSE)高速时钟源(3)下拉选择外部时钟Crystal Resonator。
选择配置完成后,我们可以观察到右侧(4)部分的两组时钟信号引脚变成绿色,说明我们已经成功配置时钟。
5,STM32CubeMX的时钟树配置
使用外部8MHz高速晶振(1),将系统时钟(SYSCLK)配置为最高频率168MHz,PCLK1配置为最高频率42MHz,PCLK2配置为最高频率84MHz。
在上方点击Clock Configuration,然后按下图进行配置,本文用的是STM32F407单片机,所以系统最快时钟为168MHz,如果是STM32F103单片机最快系统时钟为72MHz。
6,STM32CubeMX配置串口1
在Connectivity(1)中选择USART1(2)进行配置串口1,在Mode中下拉选择异步通信方式Asynchronous(3),做好后我们可以看到RX和TX两个引脚已经被配置完毕。
生成代码后,我们需要在main.c中添加fpuc的重定向和添加#include“stdio.h”头文件。下方红色框中即为所添加内容。
7,STM32CubeMX配置freeRTOS工程
配置freeRTOS工程。点击Middieware中的FREERTOS(1),在Interface中选择CMSIS_V2(2)这里的版本2是兼容版本1的,下方Configuration区域(3)为配置区这里我们使用默认。
8,STM32CubeMX生成项目工程
配置完成后,开始生成代码。点击上方Project Manager,在Project中输入项目工程名称(1),选择文件地址(2),选择编写代码的IDE(3)。
选择Code Generator(1),如图配置(2)仅复制所需文件,(3)生成.c/.h文件。完成后点击GENERATE CODE(4)生成工程文件。
生成后在文件名/MDK-ARM文件夹中使用Keil5打开工程,进行工程编译(1),编译后0错误0警告(2),至此配置完成。
9,烧录与测试
在main.c中添加以下内容。
在freertos.c中添加以下内容。
点击烧录下载,打开串口助手连接串口。复位单片机后可以看到实验结果如下。试验成功!!!