Freertos第一课

news2025/1/16 11:08:59

freertos与裸机的区别

裸机的程序:一般是执行完一个任务后,再执行下一个任务。
freertos的程序:当存在不同优先级时,会把优先级比较高的任务执行完,再执行优先级较低的任务,当存在任务的优先级一样时,会交替的执行,比如一个任务是100%,当存在任务(a,b)的优先级一样时,会a先执行1%,b再执行%1,再回到a执行%1,这样交替的执行,因为cpu切换的快,给人一种同时在执行的感觉。

堆和栈的概念

堆:一块空闲的内存,可由我们来管理,且可释放。
栈:也是一块空闲的内存,由操作系统自动分配释放,存放函数的参数值,局部变量的值等。

!!!每一个任务都有自己的栈。

freertos的数据类型和编程规范.

数据类型

每个移植的版本都含有自己的 portmacro.h 头文件,里面定义了2个数据类型:
TickType_t:
FreeRTOS配置了一个周期性的时钟中断:Tick Interrupt
每发生一次中断,中断次数累加,这被称为tick count
tick count这个变量的类型就是TickType_t
TickType_t可以是16位的,也可以是32位的
FreeRTOSConfig.h中定义configUSE_16_BIT_TICKS时,TickType_t就是uint16_t
否则TickType_t就是uint32_t
对于32位架构,建议把TickType_t配置为uint32_t
BaseType_t:
这是该架构最高效的数据类型
32位架构中,它就是uint32_t
16位架构中,它就是uint16_t
8位架构中,它就是uint8_t
BaseType_t通常用作简单的返回值的类型,还有逻辑值,比如 pdTRUE/pdFALSE

变量名

在这里插入图片描述

函数名

在这里插入图片描述
比如vTaskPrioritySet中,v表示返回类型为void,task表示函数在task.c里被定义.

宏的名字

在这里插入图片描述

任务的静态创建和动态创建

动态创建

在这里插入图片描述
在这里插入图片描述

静态创建任务

在这里插入图片描述
puxStackBuffer :自己定义的数组

使用静态创建任务,要自己创建一个数组,来存储数组(划分栈区)。
把该宏置1,freertos工程,有些没用的功能,默认是关闭的。这时我们就要打开它的宏。
在这里插入图片描述

还要定义一个vApplicationGetIdleTaskMemory函数。
在这里插入图片描述
原因在这:可以看到任务调度函数里,如果把静态创建任务的相关宏打开,就要定义一个vApplicationGetIdleTaskMemory();
![在这里插入图片描述](https://img-blog.csdnimg.cn/339a983e511542cf84d036f6c5c04e05.png

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

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

相关文章

初步认识OSPF的大致内容(第三课)

1 路由的分类 直连路由(Directly Connected Route)是指网络拓扑结构中相邻两个网络设备直接相连的路由,也称为直接路由。如果两个设备属于同一IP网络地址,那么它们就是直连设备。直连路由表是指由计算机系统生成的一种用于路由选择…

根据源码,模拟实现 RabbitMQ - 虚拟主机 + Consume设计 (7)

目录 一、虚拟主机 Consume设计 1.1、承接问题 1.2、具体实现 1.2.1、消费者订阅消息实现思路 1.2.2、消费者描述自己执行任务方式实现思路 1.2.3、消息推送给消费者实现思路 1.2.4、消息确认 一、虚拟主机 Consume设计 1.1、承接问题 前面已经实现了虚拟主机大部分功…

Vim学习(四)——命令使用技巧

命令模式 打开文本默认模式,按**【ESC】**重新进入 【/关键字】:搜索匹配关键字 G:最后一行 gg:第一行 hjkl:左下右上 yy: 复制一行 dd:删除一行 p:粘贴 u: 撤销插入模式 按**【i / a / o】**键均可进入文本编辑模式…

2023年国赛 高教社杯数学建模思路 - 案例:退火算法

文章目录 1 退火算法原理1.1 物理背景1.2 背后的数学模型 2 退火算法实现2.1 算法流程2.2算法实现 建模资料 ## 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 退火算法原理 1.1 物理背景 在热力学上&a…

STM32f103c6t6/STM32f103c8t6寄存器开发

目录 资料 寻址区 2区 TIMx RTC WWDG IWDG SPI I2S USART I2C USB全速设备寄存器 bxCAN BKP PWR DAC ADC ​编辑 EXTI ​编辑 GPIO AFIO SDIO DMA CRC RCC FSMC USB_OTG ETH(以太网) 7区 配置流程 外部中断 硬件中断 例子 点灯 …

【Jenkins】rpm方式安装Jenkins(2.401,jdk版本17)

目录 【Jenkins】rpm方式安装Jenkins 1、主机初始化 2、软件要求 RPM包安装的内容 配置文件说明 3、web操作 【Jenkins】rpm方式安装Jenkins 1、主机初始化 [rootlocalhost ~]# hostname jenkins[rootlocalhost ~]# bash[rootjenkins ~]# systemctl stop firewalld[roo…

Ribbon:使用Ribbon实现负载均衡

Ribbon实现的是实线走的 建立三个数据库 /* SQLyog Enterprise v12.09 (64 bit) MySQL - 5.7.25-log : Database - db01 ********************************************************************* *//*!40101 SET NAMES utf8 */;/*!40101 SET SQL_MODE*/;/*!40014 SET OLD_UNIQ…

RabbitMQ---基本消息模型

1、 基本消息模型 官方介绍: RabbitMQ是一个消息代理:它接受和转发消息。 你可以把它想象成一个邮局:当你把邮件放在邮箱里时,你可以确定邮差先生最终会把邮件发送给你的收件人。 在这个比喻中,RabbitMQ是邮政信箱&a…

shell脚本——循环语句、sed、函数、数组、免交互expect

目录 循环语句 for while 与 until sed 基本用法 sed脚本格式 函数 注意事项 定义函数和调用函数 脚本中函数的位置 查看函数 删除函数 函数返回值 函数的传参操作 使用函数文件 递归函数 数组 声明数组 数组切片 免交互expect 定义 基本命令 循环语句 …

学习笔记|认识蜂鸣器|控制原理|电磁炉LED实战|逻辑运算|STC32G单片机视频开发教程(冲哥)|第八集(上):蜂鸣器应用

文章目录 1.认识蜂鸣器区别 2.控制原理实现蜂鸣器控制原理 3.蜂鸣器实战应用需求分析代码编写步骤一代码编写及分析test.h的固定模板Tips:提示:“test\test.c(14): error C16: unprintable character 0xA3 skippedTips:“test\test.c(14): warning C137:…

Mysql with as定义子查询

文章目录 1. 定义2. 适用场景3. 语法4. 示例 1. 定义 使用with as 可以让子查询重用相同的with查询块, 并在select查询块中直接引用, 一般用在select查询块会多次使用某个查询sql时, 会把这个sql语句放在with as 中, 作为公用的表…

使用威胁搜寻增加网络安全

什么是威胁搜寻 威胁搜寻(也称为网络威胁搜寻)是一种主动网络安全方法,涉及主动搜索隐藏的威胁,例如组织网络或系统内的高级持续性威胁和入侵指标。威胁搜寻的主要目标是检测和隔离可能绕过网络外围防御的威胁,使管理…

代码随想录算法训练营第四十二天 | 01背包问题,01背包问题(滚动数组),416. 分割等和子集

代码随想录算法训练营第四十二天 01背包问题01 背包二维dp数组01背包 01背包问题(滚动数组)416. 分割等和子集 01背包问题 视频讲解 以下是几种背包,如下: 至于背包九讲其其他背包,面试几乎不会问,都是竞赛级别的了,…

Ribbon:自定义负载均衡

自定义负载均衡算法 package com.kuang.myconfig;import com.netflix.client.config.IClientConfig; import com.netflix.loadbalancer.AbstractLoadBalancerRule; import com.netflix.loadbalancer.ILoadBalancer; import com.netflix.loadbalancer.Server;import java.util.…

Java网络编程(二)NIO和Netty实现多人聊天功能

NIO实现 服务端 package com.bierce.io; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.*; import java.nio.charset.Charset; import java.util.Iterator; import java.util.Set; //服务器端 publ…

基于Python科研论文绘制学习 - task2

Matplotlib 1、subplot() matplotlib.pyplot模块提供了一个 subplot() 函数,它可以均等地划分画布,该函数的参数格式如下: plt.subplot(nrows, ncols, index) nrows 与 ncols 表示要划分几行几列的子区域&#xff0…

Jmeter性能 —— 事务控制器

统计性能测试结果一定会关注TPS,TPS表示:每秒处理事务数,JMeter默认每个事务对应一个请求。我们可以用逻辑控制器中的事务控制器将多个请求统计为一个事务。 1、添加事务控制器 2、事务控制器参数说明 Generate parent sample:如…

Spring Framework

文章目录 一 Spring Framework简介 1.1 Spring Framework系统架构 1.2 对spring的理解 1.3 设计理念 二 核心 1. IoC 容器 1.1. Spring IoC容器和Bean简介 1.2. 容器概述 1.2.1. 配置元数据 1.2.2. 实例化一个容器 构建基于XML的配置元数据 Groovy Bean Definitio…

传递函数零极点对系统的影响

传递函数的零点和极点分别对系统的影响的详细介绍: 零点(Zero)的影响:传递函数的零点是使得传递函数的分子为零的点。零点对系统的频率响应和稳定性产生影响。具体而言: 频率响应:零点的位置会影响系统在不…

Linux常用配置(持续记录)

写在前面:学的东西太多,一个健忘的程序猿,只记得那啥那啥,这东西好像是这个,哎,又忘了。现在就记在这个小本本上,方便日后来回顾。 全局配置host 命令: vim /etc/hosts 作用&#…