E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
FreeRTOS
FREERTOS
之任务创建删除
http://bluefish.blog.51cto.com/214870/158404tskTCB结构的定义这里就不再给出来了,需要注意的是其中uxBasePriority元素,它用于解决优先级反转,
freertos
jerrylwb_2011
·
2020-07-29 19:59
FreeRTOS
临界资源保护(临界区保护)
临界区未保护出现的异常 有一种问题相信大家都不愿碰上,就是低概率偶现问题,这类问题的根源,根据作者的经验常见于以下四种情况:野指针引用数组越界栈溢出临界资源未保护 今天我们说说其中之一的原因:临界资源未保护。 我们先看个例子,假如有一个5个节点单向链表,如下结构:head->1->2->3->4->5->NULL 有一任务A在一个单向链表的2->3节点之间插入一个新的2a节点,已经将2->
Jason00525
·
2020-07-29 19:15
RTOS
临界资源保护
FreeRTOS
-任务切换源码分析
前面分析了启动任务调度器的源码,在创建好空闲任务、启动滴答定时器(systick)后就调用SVC中断跳转到任务去执行,但作为OS我们一般不会只创建一个任务,都是有多任务需求才使用OS,后续任务一旦多了,就涉及了到了任务切换,这也是OS的核心,如何根据任务的优先级的和当前状态来切换任务,怎么保证每个任务都有执行的机会,这就是调度器做的工作,而调度器的核心就是任务切换,任务切换工作都在是PendSV中
itdo_just
·
2020-07-29 19:54
FreeRTOS
FreeRTOS
-内存管理源码分析
FreeRTOS
总共提供了5种内存分配方法:heap_1.cheap_2.cheap_3.cheap_4.cheap_5.c这五种分配方式各有各的优势,用户可根据应用情况按需使用,在分析源码之前先了解一下内存管理的一些相关知识
itdo_just
·
2020-07-29 19:54
FreeRTOS
FreeRTOS
-事件标志组源码分析
事件标志组的具体实现过程和前面信号量实现方式非常相似,信号量只能和单个任务或事件进行同步,而事件标志组能和多个任务或事件进行同步。事件标志组顾名思义就是用事件位来表示某个任务是否发生了,发生了的话就标记一个标志位,然后通知接收任务去做相应的处理工作。当然标志可以以组的形式出现,就是接收任务同时要求有多个事件(所有需求的标志都置位了)发生了才执行处理。事件标志组的相关接口函数如下:/*创建事件标志组
itdo_just
·
2020-07-29 19:23
FreeRTOS
FreeRTOS
-时间管理(延时、系统时钟)源码分析
在写
FreeRTOS
的应用程序时,经常需要使用到延时函数,当执行到延时函数时,会将任务从就绪状态变为延时等待状态,这里会放弃CPU的占用权进入阻塞态,将CPU让给其它任务使用,直到延时时间结束会重新变为就绪态
itdo_just
·
2020-07-29 19:23
FreeRTOS
FreeRTOS
-空闲任务、低功耗源码分析
FreeRTOS
在启动任务调度时会自动创建一个空闲任务,空闲任务主要在系统没有其它任务或任务都处于挂起状态时执行,它被系统设置为最低优先级,不会去抢占其它高优先级的任务,从而既能保证系统总有至少一个任务可以运行又不干扰到其它任务
itdo_just
·
2020-07-29 19:23
FreeRTOS
FreeRTOS
-队列源码分析
FreeRTOS
的队列是用于任务与任务、任务与中断之间通信的一种数据结构。
itdo_just
·
2020-07-29 19:23
FreeRTOS
FreeRTOS
-任务删除、挂起、恢复源码分析
由于后面的源码分析会涉及到一些任务的操作函数,所以这里先分析一下任务的一些相关操作,包括任务的删除、挂起、恢复操作。任务删除:#if(INCLUDE_vTaskDelete==1)voidvTaskDelete(TaskHandle_txTaskToDelete){TCB_t*pxTCB;/*进入临界区*/taskENTER_CRITICAL();{/*如果没有指定删除的任务(参数为NULL),则
itdo_just
·
2020-07-29 19:23
FreeRTOS
FreeRTOS
-任务通知源码分析
任务通知可用来代替信号量、消息队列、事件标志位,而且使用任务通知的形式效率会更高,它不需要像信号量那样创建队列和操作队列,任务通知的存储变量来自任务控制块中,当宏configUSE_TASK_NOTIFICATIONS被定义为1时就可以使用任务通知相关的函数了。任务通知的接口函数同样存在发送和接收,发送的接口函数如下:/*发送通知,有通知值但不保留接收任务原通知值*/xTaskNotify(xTa
itdo_just
·
2020-07-29 19:23
FreeRTOS
freeRtos
调度函数代码解读
读了一下下
freeRTOS
的代码,结合代码过一下
freeRTOS
调度器是怎么工作的。
奔跑的橘子
·
2020-07-29 19:04
RTOS
FreeRTOS
查看任务运行时间信息统计函数vTaskGetRunTimeStats
使用前准备工作将宏configGENERATE_RUN_TIME_STATS置为1。#defineconfigGENERATE_RUN_TIME_STATS1//为1时启用运行时间统计功能定义两个宏,第一个是任务运行统计时间的时基初始化,第二个是计数的。#defineportCONFIGURE_TIMER_FOR_RUN_TIME_STATS()ConfigureTimeForRunTimeSta
喝橘子汽水的少年
·
2020-07-29 19:18
FreeRTOS
FreeRTOS
中使用中断的一些注意事项
1.几个宏定义的解释[configLIBRARY_LOWEST_INTERRUPT_PRIORITY]这个宏是可以定义的中断最低优先级,由于STM32中断管理只用了4位来分配抢占优先级和子优先级,并且
FreeRTOS
喝橘子汽水的少年
·
2020-07-29 19:18
FreeRTOS
FreeRTOS
源码分析-异常处理
__asmvoidvPortSVCHandler(void){PRESERVE8ldrr3,=pxCurrentTCB/*Restorethecontext.*/ldrr1,[r3]/*UsepxCurrentTCBConsttogetthepxCurrentTCBaddress.*/ldrr0,[r1]/*ThefirstiteminpxCurrentTCBisthetasktopofstack
hohaixrh
·
2020-07-29 19:05
keil
ARM
FreeRTOS
例程3-串口中断接收不定长的数据与二值信号量的使用
基础知识点串口中断种类串口中断属于STM32本身的资源,不涉及到
FreeRTOS
,但可与
FreeRTOS
配合使用。
码农爱学习
·
2020-07-29 19:28
嵌入式/FreeRTOS
FreeRTOS
串口
信号量
FreeRTOS
例程1-基础任务创建
API函数任务创建xTaskCreate()函数原型(tasks.c中):BaseType_txTaskCreate(TaskFunction_tpxTaskCode,constchar*constpcName,constuint16_tusStackDepth,void*constpvParameters,UBaseType_tuxPriority,TaskHandle_t*constpxCre
码农爱学习
·
2020-07-29 19:57
嵌入式/FreeRTOS
FreeRTOS
例程2-任务挂起恢复与使用中断遇到的坑!
任务挂起简单点理解就是现在不需要执行这个任务,让它先暂停,就是挂起。恢复就是从刚才挂起的状态下继续运行。API函数任务挂起vTaskSuspend()函数原型(tasks.c中):voidvTaskSuspend(TaskHandle_txTaskToSuspend)参数:xTaskToSuspend:需要挂起的任务句柄任务恢复vTaskResume()函数原型(tasks.c中):voidvTa
码农爱学习
·
2020-07-29 19:57
嵌入式/FreeRTOS
嵌入式
freertos
第九章 低功耗 tickless 模式
官网介绍:https://www.
freertos
.org/low-power-tickless-rtos.html
freeRTOS
提供了一个叫做TickLess的低功耗模式。一、如何降低功耗?
happygrilclh
·
2020-07-29 19:23
freertos
276_浮点运算导致
FreeRTOS
卡在xQueueGiveFromISR
完整的S32K144的学习汇总如下:https://github.com/GreyZhang/g_s32k144继续S32K144的学习,这一次整理一个我在学习中遇到的BUG。我的软件中有一个基于串口的printf功能,最初这个功能都是OK了。但是,当我增加了一个浮点运算之后,打印了一下之后不再打印了。使用调试器,查看到软件停在了xQueueGiveFromISR函数中。由于的软件中没有队列的实际
grey_csdn
·
2020-07-29 18:10
S32K
嵌入式
RTOS
183_
FreeRTOS
事件组的使用
先做一个个人理解上的功能小结:队列以及信号的功能:1.把task置于阻塞状态;2.信号发生的时候,结束阻塞;时间组的特殊点:1.可以让一个任务等待一个或者多个时间;2.还可以一个信号组解除多个任务的阻塞。接下来,分析下官方的例程。创建一个事件组,这个里面的有效标志为是24个。创建了3个任务,优先级分别为123。优先级最低的任务,中间有2个阻塞行为,每次阻塞之后都打印一个提示字符串,然后对一个事件标
grey_csdn
·
2020-07-29 18:09
RTOS
171_
FreeRTOS
阻塞型任务与非阻塞型任务同时使用
接触这个例子之前,我认为在
FreeRTOS
如果软件设计中出现非阻塞任务或许是一个设计的失败。如果有的非阻塞的任务的话,那么直应该是idle。从这个例程看,或许我理解的还是不正确。
grey_csdn
·
2020-07-29 18:09
RTOS
166_
FreeRTOS
任务创建例程学习
这部分内容是官方文档中的例程1的学习、调试以及简单的修改尝试。从内容看,主要的目的是简单展示一下如何创建一个Task。首先,看一下其中一个Task的原型设计。三个要素:1,范围void;2,接收的参数是void*;3,函数中一个死循环。接下来,再看一下创建的方式:创建Task的方式也有几个要素,主要是传入参数。第一个是Task的函数名称;第二个是用不到的Task的名字,这个没有什么实质的作用,只是
grey_csdn
·
2020-07-29 18:38
RTOS
174_
FreeRTOS
任务删除
不知道是不是我工作比较特殊的原因,在我的工作经历中几乎没有什么删除Task的需求。不过,既然这是一个标准性的OS支持功能,还是来掌握一下。先分析官方例子代码:任务开始只创建了一个Task1,优先级是1。之后,OS的调度器启动。在Task1中,打印一个字符串同时创建Task2,优先级是2,之后延迟100ms。这里有一个问题我也很想弄清楚,什么时候能够触发调度?会是系统Tick会触发调度器动作?其实有
grey_csdn
·
2020-07-29 18:38
RTOS
信号量的几点理解
信号量用于进程/线程同步/通信,大到Linux,Windows,小到
FreeRTOS
,RT-Thread等等都能见到她靓丽的身影。
igaobinbin
·
2020-07-29 18:01
Linux
单片机嵌入式
FreeRTOS
任务通知与使用任务通知作事件标志组
目录特性应用限制任务通知用作事件标志组任务通知用作事件标志组的优点任务通知用作事件标志组的缺点部分API测试程序特性每个任务都有一个32位的任务任务通知值,任务通知是直接发送到任务的事件,可以解除接收任务的阻塞。任务通知可以通过下面四种方式更新任务通知值:设置接收任务的通知值(不覆盖前面的值);设置接收任务的通知值(覆盖前面的值);设置接收任务通知值的一位或多位;增加接收任务的通知值。由于任务通知
freemote
·
2020-07-29 18:44
FreeRTOS
使用
FreeRTOS
任务通知作计数信号量
关于任务通知特点、优缺点:
FreeRTOS
任务通知关于计数信号量的特点、本质:
FreeRTOS
计数信号量使用ulTaskNotifyTake()替代xSemaphoreTake()其中参数xClearOnExit
freemote
·
2020-07-29 18:12
FreeRTOS
FreeRTOS
使用任务通知作二值信号量
关于任务通知特点、优缺点:
FreeRTOS
任务通知关于二值信号量特点、本质:二值信号量使用ulTaskNotifyTake()替代xSemaphoreTake()xTaskNotifyGive()替代xSemaphoreGive
freemote
·
2020-07-29 18:12
FreeRTOS
FreeRTOS
队列结构体-学习笔记
仅为个人理解,个人笔记,有些地方因为还没看源码纯属是自己的猜测,出错的地方以后如果弄明白了会改正
FreeRTOS
内核版本为V10.0.1感谢朱工大大的文章,
FreeRTOS
高级篇5—
FreeRTOS
队列分析
chengche245
·
2020-07-29 18:01
FreeRTOS
接口: vTaskList() - 可优化内存和 task 栈溢出定位
vTaskList()介绍使用ESP32/ESP8266进行开发时,读者可通过vTaskList()来协助分析操作系统当前task状态,以帮助优化内存,帮助定位栈溢出问题,帮助理解和学习操作系统原理相关知识。读者若想深入了解vTaskList(),可参考vTaskList()英文原版介绍相关文档。vTaskList()使用注意:使用vTaskList()前需使能:makemenuconfig->C
espressif
·
2020-07-29 18:41
操作系统(FreeRTOS)
vTaskList
freertos
esp8266
esp32
内存
freeRTOS
学习之xTaskCreat
一xTaskCreate参数说明。个人觉得在说明参数参数前,先上一个简单demo显得更为直观:-------------------------------------------------------------------------------------------voidtest_task(void*pvParameter){while(1){printf("justtest_task
erfengwon
·
2020-07-29 18:09
freeRTOS学习
FreeRTOS
事件组之事件组的创建(xEventGroupCreate())
1.使用事件组的前提:(1)与互斥量、队列集等其他内核资源不同,想要使用事件组(xEventGroup)重点不在宏定义上是否配置为1,重点在组织程序以及程序编译的时候是否包括event_groups.c源代码以及event_groups.h头文件。(2)另外需要将宏configSUPPORT_DYNAMIC_ALLOCATION设置为1,否则不能应用事件组创建函数(xEventGroupCreat
心跳包
·
2020-07-29 18:46
FreeRTOS
FreeRTOS
静态和动态创建任务
静态创建任务源代码xTaskCreateStatic静态的方式创建任务,需要用户先申请任务控制模块和任务栈需要的内存(一般使用静态内存),然后把内存地址传递给函数,函数负责其他初始化。函数按顺序完成:*根据用户传递内存,初始化任务TCB*初始化任务堆栈*将新建任务加入到就绪链表中*如果调度器运行,新任务优先级更高,触发系统切换TaskHandle_txTaskCreateStatic(TaskFu
心跳包
·
2020-07-29 18:46
嵌入式
【
FreeRTOS
】事件标志组
为什么要使用事件标志事件标志组是实现多任务同步的有效机制之一。也许有不理解的初学者会问采用事件标志组多麻烦,搞个全局变量不是更简单?其实不然,在裸机编程时,使用全局变量的确比较方便,但是在加上RTOS后就是另一种情况了。使用全局变量相比事件标志组主要有如下三个问题:使用事件标志组可以让RTOS内核有效地管理任务,而全局变量是无法做到的,任务的超时等机制需要用户自己去实现。使用了全局变量就要防止
心跳包
·
2020-07-29 18:46
FreeRTOS
FreeRTOS
--二元信号量--任务与中断的同步
一般二元信号量用于任务同步,利用二元信号量对任务与中断同步,中断服务例程中只是释放信号量,相当于把中断应该处理的事情放到了任务里进行处理,如果某个中断处理任务特别紧急,则相应的任务优先级可以设置为最高,以保证此任务随时抢占系统中的其他任务。使用一个定时器TIM6,每隔3秒释放一次信号量,TASK2设置优先级最高,等待信号量而被阻塞,TASK1每间隔一秒打印信息。1/*Createthethread
djdx14443
·
2020-07-29 18:09
FreeRTOS
专栏8:任务运行时间统计
任务运行时间统计:函数使用的注意事项:这在
FreeRTOS
源码中如下所示:接下来,要配置系统时基定时器,如下所示:
FreeRTOS
配置宏定义:系统时基初始化函数(配置成周期100us=0.1ms)和中断服务函数
小小刘木子
·
2020-07-29 18:04
FreeRTOS专栏
FreeRTOS
专题八:支持时间片
FreeRTOS
与RT-Thread和μC/OS一样,都支持时间片的功能。所谓时间片就是同一个优先级下可以有多个任务,每个任务轮流地享有相同的CPU时间,享有CPU的时间我们叫时间片。
小小刘木子
·
2020-07-29 18:04
FreeRTOS
专栏10:
FreeRTOS
时间管理
FreeRTOS
时间管理
FreeRTOS
的两个延时函数:vTaskDelay()相对延时vTaskDelayUntil()绝对延时1相对延时主要过程:挂起任务调度器,将任务以参数延时值添加到演示列表,然后恢复任务调度器
小小刘木子
·
2020-07-29 18:04
FreeRTOS专栏
FreeRTOS
专题四:临界段的保护
在
FreeRTOS
里面,这个临界段最常出现的就是对全局变量的操作。那么什么情况下临界段会被打断?一个是系统调度,还有一个就是外部中断。
小小刘木子
·
2020-07-29 18:04
FreeRTOS
- 如何根据
FreeRTOS
提供的功能(信号量、任务通知、队列等)设计程序
原文地址:http://www.cnblogs.com/god-of-death/p/6917837.html1、二值信号量就像一个标志位,事件产生置一,事件处理后直零用于任务之间的同步,即一个任务givetoken,另一个任务taketoken特别提醒:V7.X版本中使用vSemaphoreCreateBinary函数,使用该函数创建的信号量初始值为“满”V8.X版本以后版本中使用xSemaph
dee53994040
·
2020-07-29 18:03
FreeRTOS
------ 栈、堆、任务栈
1、任务的栈资源(创建任务分配的资源,单位是4字节)来自configTOTAL_HEAP_SIZE定义的堆,如果任务栈总量超过configTOTAL_HEAP_SIZE,任务创建失败;2、如果在某个任务运行中,某个函数导致栈总量超过创建任务时分配的栈空间大小,会调用voidvApplicationStackOverflowHook(TaskHandle_txTask,char*pcTaskName
dee53994040
·
2020-07-29 18:03
FreeRTOS
列表与列表项分析
本博客中部分图片,来自《
FreeRTOS
开发手册》(正点原子)。列表与列表项是
FreeRTOS
中的之中的数据结构。列表的底层实际是使用链表实现的。
csdnmll
·
2020-07-29 18:48
STM32F103
FreeRTOS
记录
STM32F103
FreeRTOS
记录一、移植(测试翻转led)1.添加
freertos
9.0相关文件。
lainien
·
2020-07-29 17:42
STM32
[
FreeRTOS
] configTICK_RATE_HZ
configTICK_RATE_HZ
FreeRTOS
的时钟Tick的频率,也就是
FreeRTOS
用到的定时中断的产生频率。这个频率越高则定时的精度越高,但是由此带来的开销也越大。
AndyCheng_hgcc
·
2020-07-29 17:16
FreeRTOS
FreeRtos
-xTimerStart启动软件定时器函数,参数介绍
函数xTimerStart用于启动软件定时器。u第1个参数是定时器句柄。u第2个参数是成功启动定时器前的最大等待时间设置,单位系统时钟节拍,定时器组的大部分API函数不是直接运行的(见19.2小节说明),而是通过消息队列给定时器任务发消息来实现的,此参数设置的等待时间就是当消息队列已经满的情况下,等待消息队列有空间时的最大等待时间。u返回值,返回pdFAIL表示此函数向消息队列发送消息失败,返回p
若水三千只取一瓢
·
2020-07-29 17:18
freertos
FreeRtos
-xTimerCreate创建软件定时器参数讲解
函数xTimerCreate用于创建软件定时器。u第1个参数是定时器名字,用于调试目的,方便识别不同的定时器。u第2个参数是定时器周期,单位系统时钟节拍。u第3个参数是选择周期模式还是单次模式,若参数为pdTRUE,则表示选择周期模式,若参数为pdFALSE,则表示选择单次模式。u第4个参数是定时器ID,当创建不同的定时器,但使用相同的回调函数时,在回调函数中通过不同的ID号来区分不同的定时器。u
若水三千只取一瓢
·
2020-07-29 17:48
freertos
FreeRTOS
学习笔记
而
FreeRTOS
的任务优先级则与之相反:优
宁静以致墨
·
2020-07-29 17:00
自己的小笔记
在使用
FreeRTOS
时,硬件中断的 设置
/*Thehighestinterruptprioritythatcanbeusedbyanyinterruptserviceroutinethatmakescallstointerruptsafe
FreeRTOS
APIfunctions.Donotcallinterruptsafe
freertos
apifunctionsfromanyinterruptthathasahigherpriority
宁静以致墨
·
2020-07-29 17:00
FreeRTOS
一文读懂
FreeRTOS
软件定时器
一文读懂
FreeRTOS
软件定时器软件定时器定时器概述软件定时器(定时器)用于在将来一个固定的时间点执行一个功能函数,该功能函数即是定时器的回调函数,定时器开始到回调函数执行的时间即是定时器的周期。
日积月累xxx
·
2020-07-29 17:55
MCU
FreeRTOS
嵌入系统
软件定时器
使用
freertos
如何确定分配堆栈空间大小
运行
freertos
系统的大部分都是资源有限的MCU,所以对于ram我们都要考虑尽量的节省,避免资源浪费,从而也可以针对项目选择性价比更好的mcu。
ba_wang_mao
·
2020-07-29 17:45
FreeRTOS
FreeRTOS
——任务管理
1.
FreeRTOS
任务不允许以任何方式从实现函数中返回——他们绝不能有一条“return”语句,也不可能执行到函数的末尾。
anyi2474
·
2020-07-29 17:10
上一页
53
54
55
56
57
58
59
60
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他