STM32的FreeRtos的学习

news2025/1/16 3:38:34

首先就是去官网下载一个源文件:FreeRtos官网

下载下来的是一个zip文件,解压缩了。

然后再工程文件夹中创建个文件夹:

在这个文件夹中创建3个文件夹:

然后开始把下载下来的文件夹中的文件挑选出来放到我们的工程文件夹中:

至此所需要的文件就全部拷贝齐全了,接下来就是在工程中添加各个文件了。

最后三个文件夹的文件在工程中的分布如图:

接下来就是主程序了,其实过程就是:

1:声明一个任务句柄。

2:创建一个任务函数。

3:创建一个任务。

4:开启调度器。

#include "stm32f10x.h"                  // Device header
#include "freertos.h"      //包含freeRtos头文件
#include "task.h"           //包含task头文件

TaskHandle_t myTaskHandler;   //声明一个任务句柄

void myTask( void * arg)     //创建一个任务函数
{
	while(1)             //任务函数就是一个死循环
	{
		GPIO_ResetBits(GPIOC, GPIO_Pin_13);   //GPIO13口置0
		vTaskDelay(500);                      //延时500
		GPIO_SetBits(GPIOC, GPIO_Pin_13);     //GPIO13口置1
		vTaskDelay(500);                      //延时500
	}
}


int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
	GPIO_InitTypeDef GPIO_InitStruct;
	GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;
	GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOC, &GPIO_InitStruct);
	
	GPIO_ResetBits(GPIOC, GPIO_Pin_13);
	
	/*创建一个任务(第一个参数是任务函数名称,
				   第二个参数是一个字符串,随便写
				   第三个参数是任务堆栈大小,我定的是512
	               第四个参数是任务传递参数,这里暂时不用写NULL
				   第五个参数是任务优先级,可以随意设置,我设置的是2
				   第六个参数是任务句柄)*/
	xTaskCreate(myTask, "myTask", 512, NULL, 2, &myTaskHandler); 
	
	vTaskStartScheduler();   //开启调度器
	while(1)
	{
		
	}
}

还需要在FreeRTOSConfig.h中添加几行宏定义:

#define xPortPendSVHandler                PendSV_Handler
#define vPortSVCHandler                   SVC_Handler
#define xPortSysTickHandler               SysTick_Handler

还要在stm32f10x_it.c文件中把刚刚宏定义的三个函数注释掉:107行    126行     135行

至此编译主函数下载到单片机中就能看到PC13的小灯在闪烁了。其他的地方我也不懂呢?今天第一天开始学习。

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

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

相关文章

uniapp中u-input点击事件失效

当给u-input设置了disabled/readonly属性后,pc浏览器中点击事件失效,但是app/移动端h5中却仍有效 解决办法 给外边包上一个盒子设置点击事件,给input加上css属性:pointer-events:none pointer-events CSS 属性指定在什…

【APP移动端自动化测试】第二节.Appium介绍和常用命令代码实现

文章目录 前言一、Appium介绍和安装二、python代码功能实现 2.1 hello appium 参数详解 2.2 在脚本内启动其他app 2.3 获取app的包名和界面名 2.4 关闭app和驱动对象 2.5 安装和卸载以及是否安装app 2.6 将应用置于后台总结 前言 一、Appium介绍…

[AI资讯·0612] AI测试高考物理题,最高准确率100%,OpenAI与苹果合作,将ChatGPT融入系统中,大模型在物理领域应用潜力显现

AI资讯 国产AI大战高考物理,第1题全对,第2题开始放飞终于放大招了,2024WWDC,苹果开启AI反击战苹果一夜重塑iPhone!GPT-4o加持Siri,AI深入所有APPOpenAI确认苹果集成ChatGPT 还任命了两位新高管GPT-4搞不定…

GUI编程(Python)

本章,我们将学习GuI (Graphics User Interface) ,即图形用户界面编程,我们可以通过python提供的丰富的组件,快速的实现使用图形界面和用户交互. GUI编程类似于“搭积木”,将一个个组件(Widget)放到窗口中.如下是 windo…

windows环境下配置git环境变量

路由当前目录 vim 打开 .bash_profile PATH$PATH:/d/phpstudy_pro/Extensions/php/php7.4.3nts PATH$PATH:/d/phpstudy_pro/Extensions/php8/php8.2.9nts PATH$PATH:/d/phpstudy_pro/Extensions/composer2.5.8 …

大数据概论总结

三次信息化浪潮 : 信息技术的支撑 : 存储设备容量不断增加 CPU的处理能力不断提高 网络带宽不断增加 数据产生方式的变革促成大数据时代的来临 运营式系统阶段用户原创内容感知式系统阶段 大数据发展历程 : 分为三个阶段 : 大数据的概念 : 1 . 数据量大 : 根据IDC作出…

再也不用担心流量超过上限了!Windows 11中监控数据使用情况的几种方法

序言 如果你使用按流量计费的连接或担心超过数据上限,在Windows上监控你的数据使用情况可能是有益的。这允许你调整你的使用模式,以确保你有效地使用数据。方法如下。 使用任务管理器密切关注数据使用情况 在任务管理器中,你可以实时监控计算机上的应用程序使用的数据量。…

Prisma数据库ORM框架学习

初始化项目 中文网站 点击快速开始,点击创建sql项目,后面一步一步往后走 这个博主也挺全的,推荐下 可以看这个页面初始化项目跟我下面是一样的,这里用得是ts,我下面是js,不需要额外的配置了 1.vscode打开一个空文件夹 2.npm init -y 初始化package.json 3.安装相关依赖 …

判断环形链表-链表题

141. 环形链表 - 力扣(LeetCode) class Solution { public:bool hasCycle(ListNode *head) {ListNode* slow head;ListNode* fast head;while(fast ! NULL &&fast->next ! NULL){fast fast->next->next;slow slow->next;if(fast…

跟着AI学AI_07张量、数组、矩阵

说明这三个概念不是一个范畴的东西,但是很容易混淆,因此放到一起进行说明。 张量(Tensor) 张量是一个多维数组的通用概念,用于表示具有任意维度的数值数据。在数学和计算机科学中,张量是广泛用于表示数据的…

力扣752. 打开转盘锁

Problem: 752. 打开转盘锁 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.用一个集合 deads 存储所有的“死锁”状态,一个集合 visited 存储所有已经访问过的状态,以避免重复访问,一个队列 q 进行广度优先搜索(BF…

操作系统入门系列-MIT6.828(操作系统工程)学习笔记(七)---- 系统调用函数与GDB(Lab: system calls)

系列文章目录 操作系统入门系列-MIT6.828(操作系统工程)学习笔记(一)---- 操作系统介绍与接口示例 操作系统入门系列-MIT6.828(操作系统工程)学习笔记(二)---- 课程实验环境搭建&am…

组织创新|AI赋能敏捷实践,助力企业敏捷转型

在工业5.0时代,随着项目变得越来越复杂,对效率的需求也在增长,致力于敏捷转型的组织正在寻求创新的解决方案来应对常见的挑战:工作量不平衡、低效的任务分配和知识孤岛等等。对此,AI等尖端技术的潜力可以帮助实现更高效…

mask2former利用不确定性采样点选择提高模型性能

在机器学习和深度学习的训练过程中,不确定性高的点通常代表模型在这些点上的预测不够可靠或有较高的误差。因此,关注这些不确定性高的点,通过计算这些点的损失并进行梯度更新,可以有效地提高模型的整体性能。确定性高的点预测结果…

互联网全栈开发:产品经理、后端开发、前端开发、运维、测试等

我们都知道互联网公司,有几个较为重要的职业: 产品经理 后端开发 前端开发 运维 测试 这些技术往往相互隔阂,存在技术壁垒,而我开通了抖音号,常在抖音中发送这些视频,我的抖音号:1056668488。请大家麻…

EVA-CLIP实战

摘要 EVA-CLIP,这是一种基于对比语言图像预训练(CLIP)技术改进的模型,通过引入新的表示学习、优化和增强技术,显著提高了CLIP的训练效率和效果。EVA-CLIP系列模型在保持较低训练成本的同时,实现了与先前具有相似参数数量的CLIP模型相比更高的性能。特别地,文中提到的EV…

10 款最佳免费 Google SEO 工具

谷歌提供了免费测试和报告的工具,以帮助网站所有者和 SEO 专业人员分析和提高其网站的搜索性能。这些是最好的免费谷歌搜索引擎优化工具,用于升级您的搜索引擎优化,以及帮助您发现新的关键字机会以及帮助您发现新的关键字机会的工具。 无论您…

Nature最新!浙大王浩华团队:一种创新方法使量子态传输的保真度大大提高

在量子计算的快速发展过程中,量子信息传输技术(量子态传输)的进步至关重要。 然而,当前固态量子系统在实现量子信息传输方面存在一些显著的挑战,例如量子混沌或者系统不完美,其传输的保真度和效率通常难以…

VMware Ubuntu虚拟机上设置SSH连接,win直接用ssh连接虚拟机

要在Ubuntu虚拟机上设置SSH连接,并进行一些特定配置,您可以按照以下步骤进行操作: 步骤 1:安装OpenSSH Server 打开终端。 更新包列表并安装OpenSSH Server: sudo apt update sudo apt install openssh-server安装完…

51单片机实验05 -点阵

目录 一,熟悉矩阵led小灯 1,点亮矩阵的一只led 2,点亮矩阵的一排led 3,点亮矩阵的全部led static 关键字 unsigned 关键字 4,点阵的静态显示 2)心形矩阵显示代码 3)效果 二,课…