freertos入门---创建FreeRTOS工程

news2024/10/5 23:27:10

freertos入门—创建FreeRTOS工程

1 STM32CubeMx配置

  双击运行STM32CubeMX,在首页选择“ACCESS TO MCU SELECTOR”,如下图所示:
在这里插入图片描述
  在MCU选型界面,输入自己想要开发的芯片型号,如:STM32F103C8T6:
在这里插入图片描述

2 配置时钟

  在“System Core”的“RCC”处选择外部高速时钟源和低速时钟源,这里我们选择外部高速时钟源,如下图所示:
在这里插入图片描述
  此外,本实验使用FreeRTOS,FreeRTOS的时基使用的是Systick,而STM32CubeMX中默认的hal库时基也是Systick,为了避免可能的冲突,最好将HAL库的时基换为其它的硬件定时器。如下图所示:
在这里插入图片描述
  最后在时钟配置界面配置系统时钟频率,STM32F103的最高频率为72Mhz,所以直接输入MCU允许的最高时钟频率然后按回车:
在这里插入图片描述
  回车后,STM32CubeMX会自动计算得到各个分频系数与倍频系数:
在这里插入图片描述
  点击完“OK”后,STM32CubeMX开始自动配置时钟,配置成功后,结果如下图所示:

在这里插入图片描述

3 配置GPIO

  在本实验中,我们需要使用LED,LED所使用的GPIO引脚为PC13,如下图所示:

  在STM32CubeMX的引脚配置界面,选择PC13:
在这里插入图片描述
  在芯片图中,点击PC13,会弹出此IO支持的模式:
在这里插入图片描述
  选择GPIO Output,使PC13配置为通用输出IO,以此驱动LED的亮灭。

4 配置FreeRTOS

  STM32CubeMX已经将FreeRTOS集成到工具中,并且将RTOS的接口进行了封装CMSIS-RTOS V1/V2,相较之于 V1 版本的 CMSIS-RTOS API,V2 版本的 API 的兼容性更高,为了将来的开发和移植,我们使用 V2 版本的 API:
在这里插入图片描述
  选择了CMSIS V2接口后,还需要进一步配置FreeRTOS 的参数和功能。

4.1 配置参数

  FreeRTSOS的参数包括时基频率、任务堆栈大小、是否使能互斥锁等,需要我们根据对FreeRTOS的了解以及项目开发的需求来定制参数。
在这里插入图片描述

4.2 添加任务

  使用STM32CubeMX,可以手动添加任务、队列、信号量、互斥锁、定时器等。不过我们并不想太依赖STM32CubeMX工具,而是选择用代码使用这些对象。
在这里插入图片描述

5 生成Keil MDK的工程

  当对外设配置完成后,我们在“Project Manager”中设置工程的名称、存储路径以及开发的IDE:
在这里插入图片描述
  接着去界面“Code Generator”设置、生成工程:
在这里插入图片描述
  生成代码后,会弹出以下提示,点击Yes下载所依赖的文件:
在这里插入图片描述
  接着,会弹出以下提醒,我们点击“Open Folder”可以打开工程目录:
在这里插入图片描述

6 添加用户代码

  STM32CubeMX帮我们初始化了硬件模块,但是想要实现具体功能,还是需要我们自己添加代码。

6.1 打开工程

  在工程的“MDK-ARM”目录下,双击.uvprojx文件,便会使用keil打开工程:
在这里插入图片描述

6.2 添加代码

  双击打开freertos.c文件,找到StartDefaultTask 函数里的循环,添加如下代码:
在这里插入图片描述

我们编写的代码,需要位于“USER CODE BEGIN xxx”和“USER CODE END xxx”之间,否则以后再次使用STM32CubeMX配置工程时,不在这些位置的用户代码会被删除。

7 编译、运行

  配置好后,我们就可以将程序烧录到单片机中运行了。

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

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

相关文章

【MATLAB】解决不同版本MATLAB出现中文乱码的问题

解决不同版本MATLAB出现中文乱码的问题 方法1:更改保存类型为GBK方法2:记事本打开方法3:Notepad参考 低版本matlab打开高版本Matlab的.m文件时,出现中文乱码问题。比如下图: 出现原因为: 编码格式不统一问…

【深度学习】第二门课 改善深层神经网络 Week 1 深度学习的实践层面

🚀Write In Front🚀 📝个人主页:令夏二十三 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝 📣系列专栏:深度学习 💬总结:希望你看完之后,能对…

力扣---二叉树的锯齿形层序遍历

给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历 。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 示例 1: 输入:root [3,9,20,null,null,15,…

通信光缆主要敷设方式有哪些(续)

在《通信光缆主要敷设方式有哪些》一文中,介绍了光缆的直埋、架空和管道敷设方式。此外,根据敷设场景的不同,光缆的常见敷设方式还包括:高铁槽道内敷设、水底敷设、墙壁敷设、引上、室内敷设等。 1 高铁槽道内光缆敷设 光缆顺沿高…

机器学习每周挑战——二手车车辆信息交易售价数据

这是数据集的截图 目录 背景描述 数据说明 车型对照: 燃料类型对照: 老规矩,第一步先导入用到的库 第二步,读入数据: 第三步,数据预处理 第四步:对数据的分析 第五步:模型建…

会声会影电影片头怎么做 会声会影电影质感调色技巧

片头通常通过一系列的图像、音乐和文字等元素来引入电影的主题和氛围。通过视觉和音频的呈现方式,给观众留下深刻的第一印象,为电影的故事铺设基础。这篇文章来学习一下会声会影片头怎么做,会声会影电影质感调色技巧。 一、会声会影电影片头…

数据库(MySQL)基础:多表查询(一)

一、多表关系 概述 项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种:…

npm install digital envelope routines::unsupported解决方法

目录 一、问题描述二、问题原因三、解决方法 一、问题描述 执行命令 npm install 报错:digital envelope routines::unsupported 二、问题原因 Node.js 17 版本引入了 OpenSSL 3.0,它在算法和密钥大小方面实施了更为严格的限制。这一变化导致 npm 的升…

badKarma:一款功能强大的网络侦查GUI工具

关于badKarma badKarma是一款开源的网络侦查工具,该工具基于Python 3开发,提供了友好的图形化用户接口,可以帮助广大渗透测试人员在网络基础设施安全审计过程中执行网络侦查任务。 badKarma是一个模块化工具,基于python3 GTK套件…

【研发管理】产品经理知识体系-产品创新流程

导读:产品创新流程是一个系统性的过程,旨在通过创造和引入新的产品或改进现有产品来满足市场需求、解决用户问题或实现竞争优势。 目录 1、产品创新引论 2、决策基本框架 3、模糊前端 4、产品创新流程模型概论 5、门径管理流程 6、并行工程和集成产…

基于ssm+jsp+mysql+java的人事管理系统

💞文末获取源码联系🙉 👇🏻 精选专栏推荐收藏订阅👇🏻 🎀《Java精选实战项目-计算机毕业设计题目推荐-期末大作业》😘更多实战项目~ https://www.yuque.com/liuyixin-rotwn/ei3euo/d…

设计模式: 工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 工厂模式提供了一种创建对象的方式,而无需指定要创建的具体类。 工厂模式属于创建型…

Linux的Shell脚本详解

本文目录 一、什么是 Shell 脚本文件 ?二、编写Shell脚本1. 基本规则2. shell 变量(1)创建变量(2)引用变量(3)删除变量(4)从键盘读取变量(5)特殊变…

PHP的数组练习实验

实 验 目 的 掌握索引和关联数组,以及下标和元素概念; 掌握数组创建、初始化,以及元素添加、删除、修改操作; 掌握foreach作用、语法、执行过程和使用; 能应用数组输出表格和数据。 任务1:使用一维索引数…

一键实现在VS Code中绘制流程图

VS Code是一款常用的IDE,受到许多用户的欢迎和喜爱。而其较为出众的一点,就是较好的可拓展性,即丰富的插件应用,这些应用可以极大地提高生产效率,并优化日常使用。 流程图是一种直观的图示方法,可以用简明…

富文本编辑器 iOS

https://gitee.com/klkxxy/WGEditor-mobile#wgeditor-mobile 采用iOS系统浏览器做的一款富文本编辑器工具。 原理就是使用WKWebView加载一个本地的一个html文件,从而达到编辑器功能的效果! 由于浏览器的一些特性等,富文本编辑器手机端很难做…

wordpress子比主题美化-为图文列表封面添加动态缩略图特效 多种效果演示

wordpress子比主题-为图文列表文章封面添加动态缩略图特效 给自己子比主题加一个列表文章封面添加动态缩略图 直接复制以下代码,添加到主题自定义CSS代码中即可,下图为效果演示 wordpress子比主题-为图文列表文章封面添加动态缩略图特效 给自己子比主题…

SpringData JPA - ORM 框架下,打造高效数据访问层

目录 一、SpringData JPA 概述 1.1、什么是 JPA 1.2、什么是 ORM 1.3、什么是 Hibernate 1.4、JPA 和 Hibernate 的关系 1.5、JPA 的优势 二、SpringData JPA 实战开发 2.1、依赖 2.2、配置文件 2.3、启动类 2.4、创建实体 2.5、基于 JpaRepository 的 CRUD 三、…

空闲缓冲区(empty) 和 非空缓冲区(full) 的的概念和区别【操作系统 生产者——消费者进程】

首先,我们得有个环境——通常是个缓冲池,这个池子里可以塞很多缓冲区,它们是用来存放数据的。生产者就是那个不停造东西的家伙,而消费者则是等着用这些东西的人。 1. 空闲缓冲区(empty): 这玩意…

基于SSM的“大学生创新团队管理系统”的设计与实现(源码+数据库+文档+PPT)

基于SSM的“大学生创新团队管理系统”的设计与实现(源码数据库文档PPT) 开发语言:Java 数据库:MySQL 技术:SSM 工具:IDEA/Ecilpse、Navicat、Maven 系统展示 系统功能结构图 首页页面 团队风采页面 团队招新页面…