FreeRTOS学习笔记1:任务】的更多相关文章

1.前言 在嵌入式操作系统中队列是任务间数据交换的常用手段,队列是生产者消费者模型的重要组成部分.FreeRTOS的队列简单易用,下面结合一个具体例子说明FreeRTOS中的队列如何使用. 2.参考代码 参考代码中存在两个任务,任务A和任务B.任务A扮演生产者的角色,任务A不断地向队列中填充内容,填充的内容为一个int16_t类型的变量,填充完之后该变量累加:任务B扮演消费者的角色,任务B不断的从队列中提取内容,并通过串口打印. /* Standard includes. */ #include…
2012-02-25 21:43:40 为提升自己对实时操作系统(RTOS)的认识,我学习了freeRTOS. 理解了OS任务的状态.优先级的概念.信号量的概念.互斥的概念.队列.内存管理.这都是和RTOS相关的.在不带操作系统的代码中是找不到这些信息的.做了如下截图.作为提示性小结. 信号量截图 任务调度截图 任务状态截图…
RTOS 系统的核心就是任务管理,FreeRTOS 也不例外,而且大多数学习RTOS 系统的工程师或者学生主要就是为了使用RTOS 的多任务处理功能,初步上手RTOS 系统首先必须掌握的也是任务的创建.删除.挂起和恢复等操作,由此可见任务管理的重要性.由于任务相关的知识很多,所以接下来我们将用几章的内容来讲解FreeRTOS 的任务.本章先学习一下FreeRTOS的任务基础知识,本章是后面学习的基础,所以一定要掌握本章关于FreeRTOS 任务管理的基础知识,本章分为如下几部分: 5.1 什么是…
FreeRTOSConfig.h 中的常量configMAX_PRIORITIES的值就是任务优先级的最大数值,这个数值可以按照自己的需要改动,当然值越大,内核对内存的开销就越大,一般设置一个满足自己需求的最小值就可以了: FreeRTOSConfig.h中另一个重要的常量就是configTICK_RATE_HZ,这个常量就是心跳(ticks): 时间片长度的大小就是通过configTICK_RATE_HZ来决定的: 实际上这个常量是一个时钟中断,对应的时钟中断函数是内核用来决定下一个时间片该运…
绝对时间:abs Time相对时间:百分比% time IDLE是空闲任务. RUN_Time_State:port...()初始化一个外设提供时基单元 //具体初始化要自己操作这个定时器的分辨率高于freeRTOS系统时钟,10-20倍 1s=1000ms=1000000us 1khz系统时钟 ~需要10k或者20khz 另外两个宏(有一个就可以)去实现统计时间,获取时基单元的时间值. 延时函数vTaskDelay() //相对.也需要配置宏 周期性任务可以用绝对模式步骤:1 判定传参>02…
list.h 列表结构List_t 列表:主要看三个 xLIST:1.5检查列表完整性的.但是需要开启.默认不开启 2:记录列表中列表项的 数量:3:记录当前列表项 索引号:4:列表中的最后一个 列表项.//用来表示列表结束 变量类型是mini 列表项:主要看五个1.7检查列表完整性.默认不开启 2:xItemVlaue 列表项的值,列表根据这个值连接起来,这个值决定顺序3:指向列表项结构体的 指针(后)4:指向列表项结构体的 指针(前)//相当于双向链表5:空指针 pvOwner 描述 此列表…
任务特性每个任务有自己的环境,不依赖于其他任务与调度器任何时间点只有一个任务运行.由调度器决定上下文环境:(寄存器值.堆栈内容等)调度器保证的就是任务开始执行时的上下文环境与上一次退出时相同所以每个任务都必须要有堆栈.再次执行时取出上下文环境.任务堆栈的作用:A->B B运行完切回A,从刚被中断的地方继续运行.则需要将A的状态保存在堆栈中 支持抢占以及优先级.每个任务都有堆栈导致RAM使用量增大使用抢占必须仔细考虑重入问题(仪表不考虑抢占) 任务状态运行态,永远只有一个运行就绪态, 初始进入阻塞…
为通信而准备 1.任务存储存储缓冲机制:先进先出 FIFO 后进先出 LIFO (ucOS消息队列采用的是引用传递,传递的都是指针.采用引用的话,内容必须一致保持可见性,即消息内容必须有效.1.不能传局部变量 2.A的变量,想在A里用,必须等正在用的B用完) 数据拷贝方式,会浪费时间.但是原始数据可以修改缓冲区修改 队列消息占内存比较大 也可以只发送一个地址(相当于引用传递) 数据发送到队列是拷贝.存储的数据的原始值,不是引用(指针) 2.多任务访问任务和任务都可以向队列中发送或提取消息 3.出…
内核控制函数API 应用层中不会用到taskYIELD() //任务切换.会自动切换当前就绪表里优先级最高的任务 临界区 //不能被打断的代码段任务中进入临界区任务中退出临界区中断服务进入临界区中断服务退出临界区 关闭中断打开中断 //以上六个比较重要 开启任务调度器 main()关闭任务调度器 //某些任务不想切换,先关后开.一般不会关 挂起任务调度器恢复任务调度器 //挂起几次挂起,就要恢复几次 设置系统节拍 vTaskStepTick 给时钟节拍计数器加值// 低功耗tickless使用…
0.前言     去年(2013年)的整理了LwIP相关代码,并在STM32上"裸奔"成功.一直没有时间深入整理,在这里借博文整理总结.LwIP的移植过程细节很多,博文也不可能一一详细解释个别部分仅仅能点到为止.     [本文要点]     [1]不带操作系统的LwIP移植,LwIP版本号为1.4.1.     [2]MCU为STM32F103VE,网卡为ENC28J60.     [3]移植过程重点描写叙述ethernetif.c和LwIP宏配置等.     [4]一个简单的TCP…