FreeRTOS 学习笔记 1
来源:互联网 发布:过敏肌肤精华推荐知乎 编辑:程序博客网 时间:2024/04/29 06:28
之所以要学习 FreeRTOS,不是因为它多么出众,仅仅是因为公司要做的项目使用的芯片上有它,而我是后参与进来的,之前就听到前面的人说这部分比较难,所以就来学一下,免得做项目的时候抓瞎,所以我现在也不知道他到底难不难,完全没 Feel 。
Ps:对于前人的指教还是比较信任的。。。反正总不会害我。。。
这一次也要开始使用 Keil,以前一直用的是 IAR,熟悉一下应该也没有问题。。。
本人英语不是很好,幸好 Zou Changjun 前辈翻译了中文版,感谢 Zou Changjun 前辈。。。
桌面电脑的输入处理可以归类为”软实时”。为了保证用户的最佳体验,计算机对每个输入的响应应当限定在一个恰当的时间范围——但是如果响应时间超出了限定范围,并不会让人觉得这台电脑无法使用。比如说,键盘操作必须在键按下后的某个时间内作出明显的提示。但如果按键提示超出了这个时间,会使得这个系统看起来响应太慢,而不致于说这台电脑不能使用。
硬实时功能必须在给定的时间限制之内完成——如果无法做到即意味着整个系统的绝对失败。汽车的安全气囊触发机制就是一个硬实时功能的例子。安全气囊在撞击发生后给定时间限制内必须弹出。如果响应时间超出了这个时间限制,会使得驾驶员受到伤害,而这原本是可以避免的。
大多数嵌入式系统不仅能满足硬实时要求,也能满足软实时要求。
Ps:第一次听说软实时和硬实时,以前真么接触过。。。以前连操作系统都没接触过,唯一接触过的是 CC2541 的 OSAL。。。
FreeRTOS 任务不允许以任何方式从实现函数中返回——它们绝不能有一条”return”语句,也不能执行到函数末尾。如果一个任务不再需要,可以显式地将其删除。这也在程序清单2 展现。
一个任务函数可以用来创建若干个任务——创建出的任务均是独立的执行实例,拥有属于自己的栈空间,以及属于自己的自动变量(栈变量),即任务函数本身定义的变量。
void ATaskFunction( void *pvParameters ){/* 可以像普通函数一样定义变量。用这个函数创建的每个任务实例都有一个属于自己的iVarialbleExample变量。但如果iVariableExample被定义为static,这一点则不成立 – 这种情况下只存在一个变量,所有的任务实例将会共享这个变量。 */int iVariableExample = 0;/* 任务通常实现在一个死循环中。 */for( ;; ){/* 完成任务功能的代码将放在这里。 */}/* 如果任务的具体实现会跳出上面的死循环,则此任务必须在函数运行完之前删除。传入NULL参数表示删除的是当前任务 */vTaskDelete( NULL );}
<span style="font-family: Arial, Helvetica, sans-serif;">程序清单2 典型的任务函数结构</span>
我的理解就是创建一个任务,把功能函数放到 for 循环里面,如果功能函数执行完毕,或者有其他优先级更高的任务发生,就跳出任务,,,删除当前任务还不明白
- FreeRTOS 学习笔记 1
- FreeRTOS学习笔记-1-概述
- FreeRTOS学习笔记
- FreeRTOS学习笔记
- FreeRTOS学习笔记一
- FreeRTOS学习笔记二
- FreeRTOS学习笔记三
- FreeRTOS 学习笔记0920
- FreeRTOS学习笔记0921
- freeRTOS学习1
- FreeRTOS学习--1
- STM32学习笔记(1)如何移植FreeRTOS
- FreeRTOS学习及移植笔记之一:开始FreeRTOS之旅
- FreeRTOS系列学习笔记二---FreeRTOS内核详解LIST
- 【学习笔记】zedboard上freertos 按键中断
- 【学习笔记】zedboard上freertos 按键中断
- FreeRTOS学习笔记——链表
- FreeRTOS学习笔记——创建任务
- TCP的keep-alive小结
- dataguard丢失归档案例
- vs2010打包过程
- 关于Android 电视 viedo 自动播放
- leetcode 046 —— Permutations
- FreeRTOS 学习笔记 1
- HDU 1698 Just a Hook (线段树)
- 读书笔记MoreEffectiveC++(五)
- Eclipse工具使用技巧总结
- 图像指定坐标点的各通道像素值提取
- 学JavaScript,做web开发
- Activity详解(主要参考官网)
- PHP获取今天、昨天、明天的日期
- redis在PHP中的基本使用案例