欢迎光临
免费的PDF电子书下载网站

FreeRTOS内核实现与应用开发实战指南:基于STM32 PDF下载

编辑推荐

暂无

内容简介

本书基于野火STM32全系列开发板介绍FreeRTOS内核实现与应用开发,全书分为两部分:*部分教你如何从0到1把FreeRTOS内核写出来,从底层的汇编开始,讲解任务如何定义、如何切换,还讲解了阻塞延时如何实现,如何支持多优先级,如何实现定时器以及时间片等FreeRTOS的核心知识点;第二部分则开始讲解FreeRTOS内核组件的应用以及如何使用FreeRTOS进行多任务编程。本书内容翔实,案例丰富,配有大量示例代码,适合作为嵌入式领域工程师和爱好者的技术参考书,也适合相关专业的学生学习参考。

作者简介

暂无

FreeRTOS内核实现与应用开发实战指南:基于STM32 PDF下载

目录

前 言引 言第一部分 从0到1教你写FreeRTOS内核第1章 初识FreeRTOS 21.1 FreeRTOS版权 21.2 FreeRTOS收费问题 21.2.1 FreeRTOS 21.2.2 OpenRTOS 21.2.3 SaveRTOS 31.3 FreeRTOS资料获取 31.3.1 获取源码 31.3.2 获取书籍 41.3.3 快速入门 41.4 FreeRTOS的编程风格 51.4.1 数据类型 51.4.2 变量名 61.4.3 函数名 61.4.4 宏 71.4.5 格式 7第2章 新建FreeRTOS工程—软件仿真 82.1 新建本地工程文件夹 82.2 使用KEIL新建工程 82.2.1 New Project 92.2.2 Select Device for Target 92.2.3 Manage Run-Time Environment 102.3 在KEIL工程中新建文件组 112.4 在KEIL工程中添加文件 112.5 调试配置 132.5.1 设置软件仿真 132.5.2 修改时钟大小 132.5.3 添加头文件路径 13第3章 裸机系统与多任务系统 153.1 裸机系统 153.1.1 轮询系统 153.1.2 前后台系统 163.2 多任务系统 17第4章 数据结构—列表与列表项 204.1 C语言链表 204.1.1 单向链表 204.1.2 双向链表 224.1.3 链表与数组的对比 224.2 FreeRTOS中链表的实现 234.2.1 实现链表节点 234.2.2 实现链表根节点 254.3 链表节点插入实验 314.4 实验现象 34第5章 任务的定义与任务切换 355.1 本章目标 355.2 什么是任务 365.3 创建任务 375.3.1 定义任务栈 375.3.2 定义任务函数 385.3.3 定义任务控制块 395.3.4 实现任务创建函数 405.4 实现就绪列表 455.4.1 定义就绪列表 455.4.2 就绪列表初始化 455.4.3 将任务插入就绪列表 465.5 实现调度器 495.5.1 启动调度器 495.5.2 任务切换 545.6 main()函数 585.7 实验现象 615.8 本章涉及的汇编指令 64第6章 临界段的保护 656.1 什么是临界段 656.2 Cortex-M内核快速关中断指令 656.3 关中断 666.3.1 不带返回值的关中断函数 666.3.2 带返回值的关中断函数 676.4 开中断 676.5 进入/退出临界段的宏 686.5.1 进入临界段 686.5.2 退出临界段 696.6 临界段代码的应用 706.7 实验现象 71第7章 空闲任务与阻塞延时 727.1 实现空闲任务 727.1.1 定义空闲任务的栈 727.1.2 定义空闲任务的任务控制块 737.1.3 创建空闲任务 737.2 实现阻塞延时 747.2.1 vTaskDelay()函数 747.2.2 修改vTaskSwitchContext()函数 757.3 SysTick中断服务函数 777.4 SysTick初始化函数 787.5 main()函数 807.6 实验现象 83第8章 多优先级 848.1 支持多优先级的方法 848.2 查找最高优先级的就绪任务相关代码 858.2.1 通用方法 878.2.2 优化方法 878.3 修改代码以支持多优先级 898.3.1 修改任务控制块 898.3.2 修改xTaskCreateStatic()函数 898.3.3 修改vTaskStartScheduler()函数 938.3.4 修改vTaskDelay()函数 948.3.5 修改vTaskSwitchContext()函数 958.3.6 修改xTaskIncrementTick()函数 968.4 main()函数 978.5 实验现象 100第9章 任务延时列表 1029.1 任务延时列表的工作原理 1029.2 实现任务延时列表 1039.2.1 定义任务延时列表 1039.2.2 任务延时列表初始化 1039.2.3 定义xNextTaskUnblock-Time 1039.2.4 初始化xNextTaskUnblock-Time 1049.3 修改代码以支持任务延时列表 1049.3.1 修改vTaskDelay()函数 1059.3.2 修改xTaskIncrementTick()函数 1079.3.3 修改taskRESET_READY_PRIORITY()函数 1099.4 main()函数 1109.5 实验现象 110第10章 时间片 11110.1 时间片测试实验 11110.2 main.c文件 11210.3 实验现象 11510.4 原理分析 11610.4.1 taskSELECT_HIGHEST_PRIORITY_TASK()函数 11610.4.2 taskRESET_READY_PRIORITY()函数 11710.5 修改代码以支持优先级 11810.5.1 修改xPortSysTick-Handler()函数 11810.5.2 修改xTaskIncrement-Tick()函数 119第二部分 FreeRTOS内核应用开发第11章 移植FreeRTOS到STM32 12411.1 获取STM32的裸机工程模板 12411.2 下载FreeRTOS V9.0.0源码 12411.3 FreeRTOS文件夹内容 12611.3.1 FreeRTOS文件夹 12611.3.2 FreeRTOS-Plus文件夹 12811.3.3 HTML文件 12911.4 向裸机工程中添加FreeRTOS源码 12911.4.1 提取FreeRTOS最简源码 12911.4.2 复制FreeRTOS到裸机工程根目录 13011.4.3 复制FreeRTOSConf?ig.h文件到User文件夹 13111.4.4 添加FreeRTOS源码到工程组文件夹 13111.5 修改FreeRTOSConf?ig.h文件 13311.5.1 FreeRTOSConf?ig.h文件内容 13311.5.2 修改FreeRTOSConfig.h文件 14311.6 修改stm32f10x_it.c文件 14711.7 修改main.c文件 15111.8 下载验证 152第12章 任务 15312.1 硬件初始化

前沿

如何学习本书本书系统讲解FreeRTOS,共分为两个部分。第一部分重点讲解FreeRTOS的原理实现,从0开始,不断迭代,教你把FreeRTOS的内核写出来,让你彻底学会任务是如何定义的、系统是如何调度的(包括底层的汇编代码讲解)、多优先级是如何实现的等操作系统最深层次的知识。当你拿到本书开始学习的时候,你一定会惊讶,原来RTOS(Real Time Operating System,实时操作系统)的学习并没有那么复杂,反而是那么有趣,原来自己也可以写RTOS,成就感瞬间爆棚。当彻底掌握第一部分的知识之后,再学习其他RTOS,可以说十分轻松。纵观现在市面上流行的几种RTOS,它们的内核实现差异不大,只需要深入研究其中一种即可,没有必要对每一种RTOS都深入地研究源码。但如果时间允许,看一看也并无坏处。第二部分重点讲解FreeRTOS的移植、内核中每个组件的应用,比起第一部分,这部分内容掌握起来应该比较容易。全书内容循序渐进,不断迭代,尤其在第一部分,前一章多是后一章的基础,建议从头开始阅读,不要进行跳跃式阅读。在学习时务必做到两点:一是不能一味地看书,要把代码和书本结合起来学习,一边看书,一边调试代码。如何调试代码呢?即单步执行每一条程序,看程序的执行流程和执行的效果与自己所想的是否一致。二是在每学完一章之后,必须将配套的例程重写一遍(切记不要复制,哪怕是一个分号。但可以照书录入),做到举一反三,确保真正理解。在自己写的时候肯定会错漏百出,要认真纠错,好好调试,这是你提高编程能力的最好机会。记住,编写程序不是一气呵成的,而是要一步一步地调试。本书的编写风格本书第一部分以FreeRTOS V9.0.0官方源码为蓝本,抽丝剥茧,不断迭代,教你如何从0开始把FreeRTOS内核写出来。书中涉及的数据类型、变量名称、函数名称、文件名称、文件存放的位置都完全按照FreeRTOS官方的方式来实现。学完这本书之后,你可以无缝地切换到原版的FreeRTOS中使用。要注意的是,在实现的过程中,某些函数中会去掉一些形参和冗余的代码,只保留核心的功能,但这并不会影响学习。本书第二部分主要介绍FreeRTOS的移植和内核组件的使用,不会再去深入讲解源码,而是着重讲解如何应用,如果对第一部分不感兴趣,可以跳过第一部分,直接进入第二部分的学习。本书还有姊妹篇—《RT-Thread内核实现与应用开发实战指南:基于STM32》,两本书的编写风格、内容框架和章节命名与排序基本一致,语言阐述类似,且涉及RTOS抽象层的理论部分也相同,不同之处在于RTOS的实现原理、内核源码的讲解和上层API的使用,这些内容才是重点部分,是读者学习的核心。例如,虽然两本书的第一部分的章节名称基本类似,但内容不同,因为针对的RTOS不一样。其中,关于新建FreeRTOS工程和裸机系统与多任务(线程)系统的描述属于RTOS抽象层的理论部分,不具体针对某个RTOS,所以基本一样。第二部分中,对于什么是任务(线程)、阻塞延时和信号量的应用等RTOS抽象层的理论讲解也基本类似,但是具体涉及这两个RTOS的原理实现和代码讲解时则完全不同。如果读者已经学习了其中一本书,再学习另外一本的话,那么涉及RTOS抽象层的理论部分可跳过,只需要把精力放在RTOS内核的实现和源码API的应用方面。因为现有的RTOS在理论层基本都是相通的,但在具体的代码实现上各有特点,所以可以用这两本书进行互补学习,掌握了其中一本书的知识,再学习另外一本书定会得心应手,事半功倍。本书的参考资料及配套硬件关于本书的参考资料和配套硬件的信息,请参考本书附录部分。本书的技术论坛如果在学习过程中遇到问题,可以到野火电子论坛www.firebbs.cn发帖交流,开源共享,共同进步。鉴于作者水平有限,书中难免有错漏之处,热心的读者也可把勘误发送到论坛上以便改进。祝你学习愉快,FreeRTOS的世界,野火与你同行。

FreeRTOS内核实现与应用开发实战指南:基于STM32 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:FreeRTOS内核实现与应用开发实战指南:基于STM32