![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FreeRTOS
文章平均质量分 93
Nysun11
一只梦想成为技术大佬的闲鱼......
展开
-
freeRTOS(1)任务及有关API
任务状态 处于运行态的任务就是当前正在使用处理器的任务。 就绪态的任务是指已经准备就绪的任务(没有被阻塞或挂起),处于就绪态的任务还没有被运行,是因为有一个同优先级更高的任务在运行中 如果一任务正在等待某个外部事件就处于阻塞态,处于阻塞态的任务有一个超时时间,超出任务时间就会退出阻塞态,即使等待的时间没有到来。 任务控制块 freeRTOS 的每个任务都有一些属性需要存储,把这些属性集合到一起用一个结构体来表示的就成为任务控制块。 任务堆栈 freeRTOS 的任务堆栈是在进行任务切换的时候,将当前任原创 2021-10-21 20:41:13 · 243 阅读 · 0 评论 -
freeRTOS(2)队列及API分析
简介 队列是为了任务与任务、任务与通信之间准备的 先进先出(FIFO)的存储缓冲机制 数据发送到队列中会导致数据拷贝,在队列中存储的是数据的原始值,值传递 freeRTOS中的使用一个结构体来描述队列 队列操作过程 创建队列 task A 要向task B 发送消息,内容为变量x的值。首先创建一个队列,指定长度与大小,这里创建一个大小为4,长度为sizeof(int)的队列。 发送第一个数据 task A 中的变量x=10发送到队列中,此时队列长度为3,因为数据发送到队列的方式是值传递,那么x的值就可原创 2021-10-26 15:44:49 · 292 阅读 · 0 评论 -
freeRTOS(3)信号量及API分析
信号量简介 信号量常常用于控制对共享资源的访问和任务同步。 共享资源访问:两个例子 (计数型信号量)公共停车场100个车位,当有车开出停车场的时候停车数量就会减一,也就是说信号量减一,此时你就可以把车 停进去了,你把车停进去以后停车数量就会加一,也就是信号量加一。 (二值信号量)使用公共电话,我们知道一次只能一个人使用电话,这个时候公共电话就只可能有两个状态: 使用或未使用,如果用电话的这两个状态作为信号量的话,那么这个就是二值信号量。 任务同步:用于任务与任务或中断与任务之间的同步。 举例:当中断发生的时原创 2021-11-25 20:57:41 · 458 阅读 · 0 评论 -
freeRTOS (4)内存管理及源码分析
内容基本上是原子的开发手册,一边学习一边记录。 标准 C 库中的 malloc()和 free()也可以实现动态内存管理,但是如下原因限制了其使用: ● 在小型的嵌入式系统中效率不高。 ● 会占用很多的代码空间。 ● 它们不是线程安全的。 ● 具有不确定性,每次执行的时间不同。 ● 会导致内存碎片。内存碎片:经过很多次的申请和释放以后,内存块被不断的分割、最终导致大量很小的内存块 ● 使链接器的配置变得复杂。 FreeRTOS 提供了 5 种内存分配方法, FreeRTOS 使用者可以其中的某一个方法,或者原创 2021-11-26 16:07:19 · 647 阅读 · 0 评论