基于STM32F103的HAL库手动配置FreeRTOS

news2024/11/24 6:23:18

基于STM32F103的HAL库手动配置FreeRTOS

源码下载

FreeRTOS源码下载包括示例工程与内核工程。
示例工程:获取与开发环境相关的架构文件
内核工程:移植FreeRTOS的内核文件
示例工程Gitee地址
内核工程GirHub地址

STM32工程创建

使用STM32CubeMX创建新工程,注意基准时钟源使用除滴答时钟(SysTick)外的定时器担当。
原因:在FreeRTOS中滴答定时器被作为任务调度定时器。
在这里插入图片描述

FreeRTOS移植

1、源文件移植
将下载的内核工程目录下的所有C文件添加到工程中
2、头文件移植
将下载的内核工程目录中的include文件夹添加到工程中
3、环境文件移植
将下载的内核工程目录中的portable文件夹添加到工程中,其中保留Keil、MenMang、RVDS三个文件夹即可,Keil为使用的环境,MenMang为内存管理文件,RVDS为所使用的芯片架构
4、添加配置文件
在下载的示例工程中选择对应的芯片Demo,复制FreeRTOSConfig.h(配置头文件)到工程下
在这里插入图片描述
在这里插入图片描述

Keil工程配置

创建Groups并添加相应的资源文件
在这里插入图片描述
在这里插入图片描述
在FreeRTOSConfig.h文件中添加宏定义(用于顶替默认工程的相关中断),同时删除默认工程下的对应定义(stm32f1xx_it.c文件夹中)
在这里插入图片描述
编译后无报错无警告即可。

测试

测试示例:一个LED1S闪烁,另外一个0.5S闪烁
添加头文件:

#include "FreeRTOS.h"
#include "task.h"

任务函数:

void VTask1(void *pvParameters)
{
	while(1)
	{
		HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);
		HAL_Delay(1000);
	}
}

void VTask2(void *pvParameters)
{
	while(1)
	{
		HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);
		HAL_Delay(500);
	}
}

创建任务并执行:

  xTaskCreate(VTask1,"LED1",128,NULL,1,NULL);
  xTaskCreate(VTask2,"LED2",128,NULL,1,NULL);

  vTaskStartScheduler();

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

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

相关文章

电动汽车变频器

目录 1、电动汽车与汽油动力车的区别 2、变频器 3、变频器内元件 3.1、汽车变频器的组成和功能 3.1.1、电容器 3.1.2、变频器控制单元 3.1.3、逆变桥驱动单元 3.1.4、逆变桥单元 3.2、汽车上变频器的组成和功能 3.2.1、DC/DC升压转换器。 3.2.2、DC/DC降压转换器。 …

Java语言----二叉树

目录 一、二叉树 1.1 二叉树概念 1.2 两种特殊的二叉树 1.3二叉树的性质 二 、二叉树的实现 2.1第一种 使用数组 2.2第二种 使用链表实现 2.2.1二叉树代码构建 2.2.2二叉树的基本操作 三、二叉树的三种遍历 3.1递归方法实现 前、中、后遍历 3.2非递归方法实现 前、中…

Spark入门介绍

目录 一、Spark框架概述 1、Spark简介 2、发展 二、Spark功能及特点 1、定义

Kubernetes部署+kubesphere管理平台安装

Kubernetes官网;kubesphere官网 不论是Kubernetes官网还是找的其它部署步骤,基本都是推荐搭建集群的方式,是为了实现高可用.....等等,这样一来至少需要两台或三台的服务器来搭建,这样对我们的成本也是非常大的&#xf…

HCIA-MSTP替代技术之链路捆绑(手工模式)

目录 1,网络的可靠性需求 2,链路聚合原理 链路聚合: 聚合组(Link Aggregation Group,LAG): 成员接口和成员链路: 活动接口和活动链路: 非活动接口和非活动链路: 聚合模式&…

应急响应-web

应急响应的流程分为6个阶段 PDCERF 准备 ,检测,抑制,根除,恢复,总结 准备: 准备阶段就是以预防为主,准备一些应急响应的预案,对应急响应的分工操作制定一些计划,进行应…

Redis的数据结构

一)SDS 在redis中,保存key的是字符串,value往往是字符串或者是字符串的集合,可见字符串是redis中最常用的一种数据结构: 但是在redis中并没有直接使用C语言的字符串,因为C语言的字符串存在很多问题 1)获取字符串的长度需要通过运算…

突破自动化测试瓶颈!WEB自动化测试鼠标与键盘操作最佳实践分享

目录 引言 鼠标操作方法 说明 实例化对象 方法 实例1 实例2 拖拽 注意 键盘操作 说明 Keys类 常用的键盘操作 案例 结语 引言 在现代软件测试中,WEB自动化测试已经成为了必不可少的一部分,然而,面对各种繁琐的测试场景&#xf…

章节2: husky + 自动检测是否有未解决的冲突 + 预检查debugger + 自动检查是否符合commit规范

在章节1中我们学习到了commit的规范、husky的安装和使用、lint-staged怎么安装以及怎么用来格式化代码。那么这篇文章我们来看看commit预处理中我们还能做哪些处理呢? 自然,我们还是要用到husky这个东西的,大致过程其实和章节1异曲同工&#…

sql语句查询数据库字段和表字段数量

》新建数据库:CREATE DATABASE IF NOT EXISTS 数据库名; 示例::CREATE DATABASE IF NOT EXISTS test_db; 》进入数据库:use 数据库名称; 示例:use test_db; 》数据库中创建表: create table 表名(字段名 字段类型(长度),字段名 字…

零基础自学黑客【网络安全】啃完这些足够了

我刚学网络安全,该怎么学?要学哪些东西?有哪些方向?怎么选? 怎么入门? 这个 Web 安全学习路线,整体大概半年左右,具体视每个人的情况而定。 (上传一直很模糊&#xff0c…

网络安全做红队攻防 35 岁以后可以干嘛?

35岁之后不是都当技术总监,CTO了或者自己创业了吗? 不会,单渗透测试来说,到后期更多是经验的积累。同一个事情,经验老道师傅的可能用更少的命令,发更少的请求完成这个事情,更隐蔽,更…

从AI到BI:隐语SCQL深度解读(附视频)

3月29日,“隐语开源社区开放日”活动顺利举办。当天隐语社区正式开源SCQL引擎,在工业界首次实现了隐私数据从Al到BI分析,是隐语走向易用的重要一步!下文为隐语框架负责人王磊在活动现场的分享内容。 我们知道,在隐私计算目前应用较多的场景中,无论是风控场景的LR、XGB,还…

每日学术速递5.27

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Control-A-Video: Controllable Text-to-Video Generation with Diffusion Models 标题:Control-A-Video:使用扩散模型生成可控的文本到视频 作者&#xff…

vcruntime140.dll无法继续执行代码如何修复,使用这个方法不求人

VCRUNTIME140.dll 是由微软公司开发的一个库文件,属于 Visual C Redistributable 软件包的一部分。它包含了许多与 C 应用程序运行时相关的函数和数据类型。这些函数和数据类型包括内存管理、异常处理、文件 I/O 等等。如果您在运行某个程序时发现缺少了 VCRUNTIME1…

PriorityQueue优先级队列

前言 优先级队列就是在堆的基础上进行改造,那么什么是堆,又什么是优先级队列呢? 我们一起来看看吧! 目录 前言 一、堆 (一)堆的创建 (二)堆的插入 (三)堆…

win10 nvprof的性能分析表

交叉访问是全局内存中最糟糕的访问模式&#xff0c;因为它浪费总线带宽 使用多个线程块对基于交叉的全局内存访问重新排序到合并访问 https://mp.weixin.qq.com/s/h2XKth1bTujnrxyXTJ2fwg <<<numBlocks, blockSize>>> 的两个参数应该怎么设置好呢。首先&…

lazada商品评论数据接口,支持多站点

可以使用Lazada的开放平台API来获取商品评论数据。以下是使用API获取Lazada商品评论数据的基本步骤&#xff1a; 1.注册Lazada开发者账号&#xff0c;创建API密钥和访问令牌。 2.调用Lazada Open API中的Product Review API&#xff0c;提供商品的SKU或Seller SKU参数&#x…

Spring Authorization Server 系列(二)获取授权码

Spring Authorization Server 系列&#xff08;二&#xff09;获取授权码 概述获取授权码获取授权码的url逻辑解析匹配url参数解析 三级目录 概述 Spring Authorization Server 是基于 OAuth2.1 和 OIDC 1.0 的。 只有 授权码&#xff0c;刷新token&#xff0c;客户端模式。 …

Python GUI:真的只知道PyQt?

B站|公众号&#xff1a;啥都会一点的研究生 有时候我们有需求将程序制作成GUI&#xff08;图形用户界面&#xff09;格式&#xff0c;以方便用户通过图形图标与电子设备进行交互&#xff0c;而大多数像我一样的小白基本上只知道PyQt&#xff0c;往往制作出来的界面一眼就可辨别…