STM32cubemx对FreeRTOS的适配(工程模板配置)

文章目录


前言

本篇文章将带大家使用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 V1RTOS V2,V2兼容V1,支持更多的cortex内核。

三、STM32cubemx生成的FreeRTOS工程分析

1.在Middlewares下包含了全面的FreeRTOS功能组件:

2.FreeRTOS初始化和开启调度器:

c 复制代码
  /* 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进行配置。

相关推荐
BT-BOX9 小时前
普中开发板基于51单片机贪吃蛇游戏设计
单片机·游戏·51单片机
驴友花雕9 小时前
【花雕动手做】CanMV K230 AI视觉识别模块之使用CanMV IDE调试运行人脸代码
ide·人工智能·单片机·嵌入式硬件·canmv k230 ai视觉·canmv ide 人脸代码
Bigan(安)10 小时前
【奶茶Beta专项】【LVGL9.4源码分析】09-core-obj_class对象类系统
linux·c语言·mcu·arm·unix
点灯小铭11 小时前
基于单片机的酒驾报警刹车系统设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
Bigan(安)12 小时前
【奶茶Beta专项】【LVGL9.4源码分析】08-theme主题管理
linux·c语言·mcu·arm·unix
boneStudent12 小时前
Day29:I2C 高级应用
stm32·单片机·嵌入式硬件
Shawn_CH12 小时前
epoll_wait 及相关函数原理详解
嵌入式
Shawn_CH12 小时前
Linux 进程冻结机制原理详解
嵌入式
@good_good_study13 小时前
STM32 I2C配置函数及实验
stm32·单片机
芯联智造13 小时前
【stm32简单外设篇】- 28BYJ-48 步进电机(配 ULN2003 驱动板)
c语言·stm32·单片机·嵌入式硬件