freertos
vircun
这个作者很懒,什么都没留下…
展开
-
freertos软件定时器
哈喽,这篇文章是freertos解析的最后一篇文章.我们将会讲解一个利用任务延时实现的软件定时器.1.创建timer结构体和创建一目了然,看看初始化函数是不是有点熟悉.timer的管理有点类似任务的管理.如果是第一次创建则初始化timer列表和timer队列,队列结构体如下图到这里是不是有点不知所然,不要着急接着往下看2.开始#defin...原创 2020-04-28 21:30:59 · 833 阅读 · 0 评论 -
freertos通讯-通知
通知是什么?其实我们之前就见过,它就在任务结构体中.再来回顾下 #if( configUSE_TASK_NOTIFICATIONS == 1 ) volatile uint32_t ulNotifiedValue; volatile uint8_t ucNotifyState; #endif就是这么一个东西,ulNotifiedValue表示要...原创 2020-04-28 19:36:52 · 242 阅读 · 0 评论 -
freertos通讯---信号量与队列
哈喽,又见面了.一.信号量1.1创建二进制信号量#define xSemaphoreCreateBinary() xQueueGenericCreate( ( UBaseType_t ) 1, semSEMAPHORE_QUEUE_ITEM_LENGTH, queueQUEUE_TYPE_BINARY_SEMAPHORE )上篇队列已经提到,信号量也是用队列实现的.这里semSEM...原创 2020-04-28 16:58:33 · 762 阅读 · 0 评论 -
freertos通信---信号量与队列
嘿嘿.又见面了.到这里,任务的调度和切换,你已经有了深刻的理解.接下来,自然而然就是任务间的通讯咯.把相关的任务串联起来,就形成了程序的基本架构.一.队列为什么要先讲解队列了,因为信号量就是利用队列来实现的.走,一起瞅瞅1.1队列的创建 #define xQueueCreate( uxQueueLength, uxItemSize ) xQueueGen...原创 2020-04-28 11:52:49 · 1119 阅读 · 0 评论 -
freertos的核心-其他调度手段
一.其他的调度手段1.1嗯,没错.第一个能想到的是延时函数. void vTaskDelay( const TickType_t xTicksToDelay ) { BaseType_t xAlreadyYielded = pdFALSE; if( xTicksToDelay > ( TickType_t ) 0U ) {...原创 2020-04-27 11:34:19 · 325 阅读 · 0 评论 -
freertos的核心---调度(RISC_V为例)
前言.这篇文章可能稍长,需要你花点时间去理解.这也是freertos核心.理解了它,其他的就不在话下了.一.任务的启动void vTaskStartScheduler( void ){BaseType_t xReturn; xReturn = xTaskCreate( prvIdleTask, ...原创 2020-04-26 21:43:10 · 1582 阅读 · 0 评论 -
freertos的核心---线程与调度
一.划重点,划重点,划重点.线程就是freertos运行管理的最小单位.一个线程有自己的生命周期,可以是一段时间也可以是forever.具体看开发人员对于线程的规划,几个线程,每个线程处理什么事情.先来看看线程长啥样?(任务是线程的别名,为了方便以后都称任务)typedef struct tskTaskControlBlock /* The old na...原创 2020-04-26 20:14:26 · 4941 阅读 · 0 评论 -
freertos的帮手---列表
一.freertos是实时操作系统.谈到系统,你能想到什么...不需要过多的脑补,任务和线程组织,调度,切换.系统如何组织,如何调度,如何切换?这就像一个城市的运转一样,其实都一样.这篇文章先来谈谈组织这件事.组织什么?无非是任务或者线程?什么是线程,我们姑且当做是路人甲已丙丁.那么甲乙丙丁如何组织了,有请重要的嘉宾出场---列表what,s 列表???typedef s...原创 2020-04-26 16:58:56 · 236 阅读 · 0 评论