FreeRTOS
文章平均质量分 79
FreeRTOS源码分析
zhaodong_jack
这个作者很懒,什么都没留下…
展开
-
FreeRTOS内核全局变量
想要分析FreeRTOS源码,想要理解FreeRTOS源码的整个宏观架构,有一个前提就是必须知道FreeRTOS内核中那些全局变量的意义,每个全局变量都是用来干什么的。只有了解了这些全局变量我们才能从宏观上看清FreeRTOS的真面目,学习其金华,领略其巧妙。...原创 2021-12-18 17:35:24 · 2409 阅读 · 0 评论 -
基于STM32F103移植FreeRTOS
本文介绍基于STM32F103的移植,其它系列MCU类似。硬件平台:STM32F103ZET6,软件平台:MDK529FreeTROS版本:FreeRTOSv10.2.1准备材料:1.STM32F103基础工程2.FreeRTOS源码移植过程:1.在工程目录下新建FreeRTOS文件夹,该文件夹用于存放FreeRTOS相关的文件2.在FreeRTOSv10.2.1\FreeRT...原创 2020-03-29 22:36:04 · 1344 阅读 · 0 评论 -
FreeRTOS时间管理
void vTaskDelay( const TickType_t xTicksToDelay )函数是FreeRTOS中非常重要的函数,用来延时xTicksToDelay个时钟节拍。vTaskDelay函数源码#if ( INCLUDE_vTaskDelay == 1 ) void vTaskDelay( const TickType_t xTicksToDelay ) { BaseType_t xAlreadyYielded = pdFALSE; /* A delay time of原创 2021-01-07 19:47:01 · 460 阅读 · 1 评论 -
FreeRTOS内存管理源码分析
内存管理一直都是重中之重的知识。内存管理在FreeRTOS系统中是可裁剪可配置的。FreeRTOS提供了5种内存管理方案。暂时可能分析不完5种方案,今天能写多少先写多少,后续有时间了再一点一点的写吧。5中方案对比如下:方案1:内存一旦分配出去就无法回收了。内存释放函数是一个空函数,什么都没做。方案2:可以分配内存也可以释放内存。缺点就是可能会造成内存碎片。释放回去的内存不会合并成大块内存。方案3:和标准C的malloc函数free函数一样,唯一的区别就是对标准C库的内存管理函数做了一个线程安全保护。原创 2020-11-26 21:22:55 · 419 阅读 · 0 评论 -
FreeRTOS任务删除源码分析
前面的文章讲解了任务的创建函数,本章讲解任务的删除函数。在FreeRTOS中任务删除函数是一个条件编译函数。想要使用任务函数需要将宏INCLUDE_vTaskDelete定义为1。如果系统中的任务永远都不需要再运行了,那么就可以调用任务删除函数删除任务。瞎哔哔谁都会,给我看代码。#if ( INCLUDE_vTaskDelete == 1 ) void vTaskDelete( TaskHa...原创 2020-05-19 21:28:57 · 555 阅读 · 1 评论 -
基于FreeRTOS的队列改造
我之前写过一篇关于队列的blog,需要的戳静态队列。前一段时间分析了FreeRTOS的队列。FreeRTOS的队列核心思想和我前边写的队列的核心思想是一致的(我这里说的核心思想是都把队列缓存区看做一个环形缓存),只是在具体实现方式和功能上小有差异。我把FreeRTOS队列的代码在Visual studio 环境中调试了一下,做了一些改造,方便以后在项目中使用(数据结构的知识很重要,而且面试官还总问。因为又能考察你的基础知识,又能考察你的逻辑思维能力,其实我曾经有一次面试就在队列上边翻车了,血淋淋的教训)。原创 2020-05-17 11:04:14 · 425 阅读 · 0 评论 -
FreeRTOS队列源码分析
队列属于数据结构的知识。是非常重要的。我在前边的blog中写过一篇静态队列的文章。需要的点击静态队列浏览。FreeRTOS也提供了队列,主要用于任务与任务,任务与中断之间传递消息,FreeRTOS的队列已经帮我们做好了超时机制,怎么用怎么爽。在裸机代码中我们使用全局变量传递消息,在OS中全局变量传递消息是有风险的。废话不多说我们来看代码。认识一下FreeRTOS的队列结构体typedef s...原创 2020-04-30 16:44:59 · 411 阅读 · 0 评论 -
FreeRTOS启动任务调度器源码分析
在RTOS系统中,启动了任务调度器以后,各个任务的执行有系统统一管理。各种RTOS都有开启任务调度器的函数。在实际应用中,我们创建完任务以后就可以开启任务调度器了。FreeRTOS中使用vTaskStartScheduler();函数开启任务调度器。该函数是FreeRTOS内核的重点。我们接下来分析一下FreeRTOS启动任务调度器的函数,看一下究竟做了哪些工作。vTaskStartSched...原创 2020-04-21 22:19:49 · 522 阅读 · 0 评论 -
FreeRTOS任务切换源码分析
多任务系统可以实现多个任务并发执行,如果是单核处理器,那么CPU执行任务A一段时间,执行任务B一段时间,执行任务C一段时间,宏观上看就是多个任务同时执行。在单核处理器跑多个任务的情况下,CPU是如何从一个任务切换到另一个任务的?本文我们来探究一下FreeRTOS的任务切换。本文硬件基于STM32F103单片机M3内核,软件基于FreeRTOS V9.0.0。FreeRTOS的任务切换是在Pen...原创 2020-04-19 21:25:28 · 577 阅读 · 0 评论 -
FreeRTOS任务挂起和恢复源码分析
当一个任务暂时需要停止运行,那么就可以将任务挂起,在需要运行的时候在恢复就可以了。任务恢复运行以后是接着挂起时的状态继续运行,堆栈是保留的,如果是将一个任务删除以后再重新创建,那么任务是从头开始运行。这就是挂起与删除的区别。如果使用任务挂起函数需要将INCLUDE_vTaskSuspend定义为1接下来就看任务挂起源码:在这里插入代码片...原创 2020-04-15 22:59:19 · 974 阅读 · 0 评论 -
FreeRTOS列表和列表项源码分析
FreeRTOS中一个核心的数据结构就是列表和列表项。剖析FreeRTOS源码的一个必要条件就是掌握列表和列表项。列表和列表项属于数据结构的知识。在数据结构课程中所学的链表和FreeRTOS中的列表在实质上是一个东西。如果学过数据结构中的链表再看FreeRTOS中列表和列表项的知识那就不费吹灰之力了。废话不多说我们来看代码吧。我这里是在Visual studio开发环境里测试代码。去掉了一些非必...原创 2020-04-04 11:50:14 · 243 阅读 · 0 评论