前言
本篇文章将带大家使用STM32cubemx对FreeRTOS进行工程模板的配置。
一、工程的创建
1.开始工程的创建:
2.芯片型号选择:
3.修改时钟为TIM8:
在FreeRTOS中SYSTICK需要为FreeRTOS提供心跳,故这里选择TIM8替换SYNTICK。
4.配置RCC:
5.配置FreeRTOS:
6.开启串口方便调试和观察:
7.工程路径及编译器选择等:
8.生成独立的.c和.h文件:
9.串口重定向:
二、什么是CMSIS
CMSIS,即 Cortex Microcontroller Software Interface Standard(Cortex 微控制器软件接口标准),是由ARM(Advanced RISC Machines)开发的一套标准,旨在为嵌入式系统开发提供一致的、可移植的软件接口。CMSIS为ARM Cortex 微控制器的开发提供了一种标准化的方法,以简化嵌入式系统的开发过程,并提高代码的可移植性。
CMSIS 主要包括以下几个组件和功能:
1.Cortex-M 处理器核的通用接口: CMSIS 提供了一套通用的编程接口,以支持不同的 Cortex-M 处理器核,包括 Cortex-M0、M0+、M1、M3、M4、M7 等。这些接口定义了中断控制器、系统控制寄存器、异常处理等。
2.Cortex Microcontroller Software Interface Standard HAL(CMSIS HAL): 这是 CMSIS 中的一个重要组件,它定义了一组通用的硬件抽象层接口,允许开发人员编写与硬件无关的驱动程序。这些驱动程序包括 GPIO、UART、SPI、I2C 等外设的操作函数。
3.CMSIS-CORE: CMSIS-CORE 提供了处理器内核的核心功能,包括中断管理、系统控制、系统定时器和系统初始化函数。
4.DSP 库(Digital Signal Processing Library): CMSIS 提供了用于数字信号处理(DSP)的库函数,以支持嵌入式系统中的数字信号处理任务。
5.RTOS 适配层(RTOS Abstraction Layer): CMSIS 提供了用于支持不同实时操作系统(RTOS)的接口,允许开发人员将不同的 RTOS 与 CMSIS 集成,以便更容易移植应用程序。
6.组件包管理器(Pack Management): CMSIS 还包括一个组件包管理器,允许开发人员轻松获取和集成针对特定 Cortex-M 处理器的软件包、驱动程序和中间件。
CMSIS 为 ARM Cortex-M 微控制器的软件开发提供了一种标准化的方法,使开发人员可以更容易地编写可移植的嵌入式应用程序,而无需过多关注底层硬件细节。这有助于加速嵌入式系统的开发,提高代码的可维护性,并促进生态系统的发展。
CMSIS
封装的RTOS接口有两个版本RTOS V1
和RTOS V2
,V2兼容V1,支持更多的cortex内核。
三、STM32cubemx生成的FreeRTOS工程分析
1.在Middlewares下包含了全面的FreeRTOS功能组件:
2.FreeRTOS初始化和开启调度器:
/* Init scheduler */ osKernelInitialize(); /* Call init function for freertos objects (in freertos.c) */ //初始化调度器 MX_FREERTOS_Init();//cubemx配置的代码 /* Start scheduler */ osKernelStart();//开启调度器
3.MX_FREERTOS_Init():
在MX_FREERTOS_Init中创建了一个StartDefaultTask这是cubemx帮我们自动创建的函数。
cubemx自动创建的任务:
总结
本篇文章就讲解到这里,下篇文章我们继续讲解如何使用STM32cubemx对FreeRTOS进行配置。