FreeRTOS
文章平均质量分 73
学习笔记
马仕亮
这个作者很懒,什么都没留下…
展开
-
FreeRTOS学习笔记------任务调度机制
任务的切换与Tick和PendSV中断有关,最终的切换在PendSV中断通过调用vTaskSwitchContext函数完成,与tick中断相关的函数是xTaskIncrementTick。上述示例中,实际创建了4个任务,xTaskStartScheduler函数会创建优先级为0的空闲任务。pxReadyTaskLists是一个链表数组,大小与优先级的数量相同。状态的切换就是把任务放进不同的链表的中,如调用vTaskDelay后,任务将会被移进pxDelayedTaskList等链表。原创 2024-02-02 17:24:59 · 370 阅读 · 0 评论 -
FreeRTOS学习笔记-------基础知识
一般借助存储器访问指令,通过内核寄存器Rx(x=0~12)完成存储器的读写。原创 2024-01-28 22:05:55 · 991 阅读 · 1 评论 -
FreeRTOS学习笔记-------任务创建与删除
FreeRTOS任务创建、删除、优先级、栈等原创 2024-01-05 00:26:49 · 440 阅读 · 1 评论 -
FreeRTOS学习笔记-------任务创建函数详解
根据以上代码可知,在执行任务时,pxTaskCode将被写入PC寄存器中,pvParameters被写入R0寄存器中。任务创建函数执行完后,任务所需的栈示意图如下。原创 2024-02-01 17:04:00 · 291 阅读 · 2 评论 -
FreeRTOS学习笔记--------任务管理
在默认调度算法下,对于同优先级的任务,它们轮流执行,轮流的时间基准由tick中断决定,由定时器产生固定间隔的中断。可以修改中断产生的时间间隔。1000Hz表示间隔为1ms。原创 2024-01-06 15:17:18 · 1113 阅读 · 1 评论 -
FreeRTOS学习笔记---------队列
队列写数据的方式有两种:向尾部写入,向头部写入。队列向尾部写入数据的过程如下图所示:每次向尾部写入时,先写入数据,pcWriteTo再自加uxItemSize。每次读取时,pcreadFrom先自加uxItemSize,再读取数据。原创 2024-01-09 01:14:56 · 490 阅读 · 0 评论 -
FreeRTOS学习笔记-------信号量
队列可以用于传输数据,但不需要传输数据时,可以使用信号量,信号量传输的是状态。信号量的示意图如下所示:在FreeRTOS中,信号量本质就是队列,是一个只关心队列长度,不关心队列数据内容的队列。由官方源码可知, 创建信号量时实际创建的是uxItemSize为0的队列,使用uxMessagesWaiting表示计数值。当计数值达到最大时释放信号量,将返回错误(队列是数据满时再写入数据,如果没有超时,则阻塞。有关队列内容可参考文章信号量有两种:二进制信号量和计数型信号量。原创 2024-01-11 09:30:14 · 367 阅读 · 0 评论 -
FreeRTOS学习笔记--------互斥量
互斥量就是二进制的信号量,都是用来传递状态。与二进制信号量不同的是,互斥量的初始值是1。官方源码如下,由源码可知初始值为1(通过xQueueGenericSend函数向队列中写入一个数据)。原创 2024-01-11 17:21:19 · 396 阅读 · 0 评论 -
FreeRTOS学习笔记--------事件组
可以使用事件组传递资源状态。某一位不能是某些位中的某几个事件发生后,唤醒所有符合条件的任务。原创 2024-01-19 11:50:16 · 380 阅读 · 1 评论 -
FreeRTOS学习笔记-------软件定时器
在FreeRTOS中,软件定时器基于系统滴答中断(Tick Interrupt)。原创 2024-01-25 22:22:44 · 541 阅读 · 0 评论 -
FreeRTOS学习笔记-------中断管理
ISR的优先级高于任务。原创 2024-01-25 23:38:59 · 224 阅读 · 0 评论