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

news2024/12/22 6:01:35

文章目录

  • 前言
  • 一、工程的创建
  • 二、什么是CMSIS
  • 三、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初始化和开启调度器:

  /* 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进行配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1119791.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

00-开源离线同步工具DataX3.0重磅详解!

1 概览 DataX 是一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。 1.1 设计理念 为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了…

Tomcat部署项目的两种方式

第一种: 将项目放到tomcat的webapps目录下,war包会自动解压 里面有个页面 为什么会默认访问asd.html 可以配置 tomcat--->conf---->web.xml 第二种方式 在Tomcat/conf/Catalina/localhost/目录下随便建个xxx.xml文件 注意字符编码 utf-8 注意aaa就是上下文地址 …

【计算机网络笔记】OSI参考模型中端-端层(传输层、会话层、表示层、应用层)功能介绍

系列文章目录 什么是计算机网络? 什么是网络协议? 计算机网络的结构 数据交换之电路交换 数据交换之报文交换和分组交换 分组交换 vs 电路交换 计算机网络性能(1)——速率、带宽、延迟 计算机网络性能(2)…

C++笔记之遍历vector的所有方式

C笔记之遍历vector的所有方式 —— 2023年4月15日 上海 code review 文章目录 C笔记之遍历vector的所有方式1.普通for循环2.迭代器版3.const迭代器4.C11引入的范围for循环5.使用auto关键字和迭代器6.使用std::for_each算法7.使用std::for_each和lambda表达式8.普通版vector::at…

API接口随心搭,自由定制你的数据流

API接口是现代软件开发中非常重要的一部分。API接口可以帮助不同的系统和应用程序之间进行数据交换和通信。随着计算机网络技术的不断发展,API接口的适用范围也越来越广泛。如今,在互联网上许多网站和应用程序都提供了各种各样的API接口,供开…

html5语义化标签

目录 前言 什么是语义化标签 常见的语义化标签 语义化的好处 前言 HTML5 的设计目的是为了在移动设备上支持多媒体。之前网页如果想嵌入视频音频,需要用到 flash ,但是苹果设备是不支持 flash 的,所以为了改变这一现状,html5 …

自然语言处理---Tr ansformer机制详解之Transformer结构

1 Encoder模块 1.1 Encoder模块的结构和作用 经典的Transformer结构中的Encoder模块包含6个Encoder Block.每个Encoder Block包含一个多头自注意力层,和一个前馈全连接层. 1.2 Encoder Block 在Transformer架构中,6个一模一样的Encoder …

《算法设计与分析(第4版)》笔记——第 1 章 算法入门

现在跟的是 b站黑马 的视频课,还是这个好哇 2023新版数据结构与算法Java视频教程(上篇) 2023新版数据结构与算法Java视频教程(下篇) 之前跟的是 青岛大学 张公敬教授 的《算法设计与分析》(做了笔记就发出…

【德哥说库系列】-RHEL8环境源码编译安装MySQL8.0

📢📢📢📣📣📣 哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】!😜&am…

docker 安装 sftpgo

sftpgo 简介 sftpgo 是一个功能齐全且高度可配置的 SFTP 服务器,具有可选的 HTTP/S、FTP/S 和 WebDAV 支持。支持多种存储后端:本地文件系统、加密本地文件系统、S3(兼容)对象存储、Google 云存储、Azure Blob 存储、SFTP。 官…

香港科技大学广州|可持续能源与环境学域博士招生宣讲会—广州大学城专场!!!(暨全额奖学金政策)

香港科技大学广州|可持续能源与环境学域博士招生宣讲会—广州大学城专场!!!(暨全额奖学金政策) “面向未来改变游戏规则的——可持续能源与环境学域” ���专注于能源环…

【27】c++设计模式——>迭代器模式(遍历双向链表)(2)

//实现双向链表 #pragma once #include<iostream> #include<string> #include<vector> using namespace std;class Iterator; class ForwardIterator; class ReverseIterator;//链表的最小组成部分是一个节点&#xff0c;先实现一个节点 struct Node //c中st…

【每周一测】Java阶段二第五周学习

目录 1、关于static说法不正确的是&#xff1f; 2、以下关于继承的叙述正确的是&#xff08;&#xff09; 3、Restful风格传参用的注解是 4、反射可以访问私有成员变量和方法吗&#xff1f; 5、关于SqlSession的说法&#xff0c;说法正确的是 6、自定义SpringMvc拦截器时…

Web攻防04_MySQL注入_盲注

文章目录 MYSQL-SQL操作-增删改查盲注概念盲注分类盲注语句参考&更多盲注语句/函数 注入条件-数据回显&错误处理PHP开发项目-注入相关条件&#xff1a;基于延时&#xff1a;基于布尔&#xff1a;基于报错&#xff1a; CMS案例-插入报错&删除延时-PHP&MYSQL1、x…

项目管理实战总结(一)-沟通路径问题

前言 那是2021年春节之后&#xff0c;我决定主动申请参与到这个项目&#xff0c;是知道工作强度大、难度大的情况的。有很多的同事是想躲&#xff0c;而我是明知山有虎偏向虎山行。我确定&#xff0c;通过这个项目&#xff0c;一定有我需要的东西。现在项目已经完成了终验专家…

java1.8流的新特性使用

案例描述 今天跟着黑马程序员的视频&#xff0c;完成“瑞吉外卖”项目的菜品信息管理模块的时候&#xff0c;遇到了一个比较陌生的写法 用到了Java8的新特性 stream().map((item) -> {}).collect() List<DishDto> collect records.stream().map((item) -> {DishDt…

数据库基础(一)【MySQL】

文章目录 安装 MySQL修改密码连接和退出数据库服务器使用 systemctl 管理服务器进程配置数据库从文件角度看待数据库查看连接情况 安装 MySQL 这是在 Linux 中安装 MySQL 的教程&#xff1a;Linux 下 MySQL 安装。本系列测试用的 MySQL 版本是 5.7&#xff0c;机器是 centOS7.…

力扣刷题 day51:10-21

1.分发饼干 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&#xff0c;都有一…

Python在列表中如何对多个参数进行修改

1 问题 在python中经常会使用到列表&#xff0c;列表是常见的一种数据类型。对于一个庞大的列表&#xff0c;要调取列表中的对象&#xff0c;应如何快速准确的调取或快速的调取多个对象&#xff1f; 2 方法 解决问题的步骤采用如下方式&#xff1a; 基本的&#xff0c;已知元素…

【C语言进阶】指针进阶(三)

指针进阶&#xff08;三&#xff09; 9.指针和数组笔试题解析10.指针笔试题 9.指针和数组笔试题解析 数组名的理解 数组名是数组首元素的地址 但是有2个例外&#xff1a; sizeof(数组名)&#xff0c;这里的数组名表示整个数组&#xff0c;sizeof(数组名)计算的是整个数组的大…