您好,欢迎来到聚文网。
登录
免费注册
网站首页
|
搜索
热搜:
磁力片
|
购物车
0
我的订单
商品分类
首页
幼儿
文学
社科
教辅
生活
销量榜
FreeRTOS内核实现与应用开发实战指南(基于STM32)/野火嵌入式系列
字数: 150
出版社: 机械工业
作者: 编者:刘火良//杨森
商品条码: 9787111618256
版次: 1
开本: 16开
页数: 496
出版年份: 2019
印次: 1
定价:
¥99
销售价:
登录后查看价格
¥{{selectedSku?.salePrice}}
库存:
{{selectedSku?.stock}}
库存充足
{{item.title}}:
{{its.name}}
加入购物车
立即购买
加入书单
收藏
精选
¥5.83
世界图书名著昆虫记绿野仙踪木偶奇遇记儿童书籍彩图注音版
¥5.39
正版世界名著文学小说名家名译中学生课外阅读书籍图书批发 70册
¥8.58
简笔画10000例加厚版2-6岁幼儿童涂色本涂鸦本绘画本填色书正版
¥5.83
世界文学名著全49册中小学生青少年课外书籍文学小说批发正版
¥4.95
全优冲刺100分测试卷一二三四五六年级上下册语文数学英语模拟卷
¥8.69
父与子彩图注音完整版小学生图书批发儿童课外阅读书籍正版1册
¥24.2
好玩的洞洞拉拉书0-3岁宝宝早教益智游戏书机关立体翻翻书4册
¥7.15
幼儿认字识字大王3000字幼儿园中班大班学前班宝宝早教启蒙书
¥11.55
用思维导图读懂儿童心理学培养情绪管理与性格培养故事指导书
¥19.8
少年读漫画鬼谷子全6册在漫画中学国学小学生课外阅读书籍正版
¥64
科学真好玩
¥12.7
一年级下4册·读读童谣和儿歌
¥38.4
原生态新生代(传统木版年画的当代传承国际研讨会论文集)
¥11.14
法国经典中篇小说
¥11.32
上海的狐步舞--穆时英(中国现代文学馆馆藏初版本经典)
¥21.56
猫的摇篮(精)
¥30.72
幼儿园特色课程实施方案/幼儿园生命成长启蒙教育课程丛书
¥24.94
旧时风物(精)
¥12.04
三希堂三帖/墨林珍赏
¥6.88
寒山子庞居士诗帖/墨林珍赏
¥6.88
苕溪帖/墨林珍赏
¥6.88
楷书王维诗卷/墨林珍赏
¥9.46
兰亭序/墨林珍赏
¥7.74
祭侄文稿/墨林珍赏
¥7.74
蜀素帖/墨林珍赏
¥12.04
真草千字文/墨林珍赏
¥114.4
进宴仪轨(精)/中国古代舞乐域外图书
¥24.94
舞蹈音乐的基础理论与应用
内容简介
本书基于野火STM32全系列开发板介绍FreeRTOS内核实现与应用开发,全书分为两部分:第壹部分教你如何从0到1把FreeRTOS内核写出来,从底层的汇编开始,讲解任务如何定义、如何切换,还讲解了阻塞延时如何实现,如何支持多优先级,如何实现定时器以及时间片等FreeRTOS的核心知识点;第二部分则开始讲解FreeRTOS内核组件的应用以及如何使用FreeRTOS进行多任务编程。 本书内容翔实,案例丰富,配有大量示例代码,适合作为嵌入式领域工程师和爱好者的技术参考书,也适合相关专业的学生学习参考。
目录
前 言 引 言 第一部分 从0到1教你写FreeRTOS内核 第1章 初识FreeRTOS 2 1.1 FreeRTOS版权 2 1.2 FreeRTOS收费问题 2 1.2.1 FreeRTOS 2 1.2.2 OpenRTOS 2 1.2.3 SaveRTOS 3 1.3 FreeRTOS资料获取 3 1.3.1 获取源码 3 1.3.2 获取书籍 4 1.3.3 快速入门 4 1.4 FreeRTOS的编程风格 5 1.4.1 数据类型 5 1.4.2 变量名 6 1.4.3 函数名 6 1.4.4 宏 7 1.4.5 格式 7 第2章 新建FreeRTOS工程—软件仿真 8 2.1 新建本地工程文件夹 8 2.2 使用KEIL新建工程 8 2.2.1 New Project 9 2.2.2 Select Device for Target 9 2.2.3 Manage Run-Time Environment 10 2.3 在KEIL工程中新建文件组 11 2.4 在KEIL工程中添加文件 11 2.5 调试配置 13 2.5.1 设置软件仿真 13 2.5.2 修改时钟大小 13 2.5.3 添加头文件路径 13 第3章 裸机系统与多任务系统 15 3.1 裸机系统 15 3.1.1 轮询系统 15 3.1.2 前后台系统 16 3.2 多任务系统 17 第4章 数据结构—列表与列表项 20 4.1 C语言链表 20 4.1.1 单向链表 20 4.1.2 双向链表 22 4.1.3 链表与数组的对比 22 4.2 FreeRTOS中链表的实现 23 4.2.1 实现链表节点 23 4.2.2 实现链表根节点 25 4.3 链表节点插入实验 31 4.4 实验现象 34 第5章 任务的定义与任务切换 35 5.1 本章目标 35 5.2 什么是任务 36 5.3 创建任务 37 5.3.1 定义任务栈 37 5.3.2 定义任务函数 38 5.3.3 定义任务控制块 39 5.3.4 实现任务创建函数 40 5.4 实现就绪列表 45 5.4.1 定义就绪列表 45 5.4.2 就绪列表初始化 45 5.4.3 将任务插入就绪列表 46 5.5 实现调度器 49 5.5.1 启动调度器 49 5.5.2 任务切换 54 5.6 main()函数 58 5.7 实验现象 61 5.8 本章涉及的汇编指令 64 第6章 临界段的保护 65 6.1 什么是临界段 65 6.2 Cortex-M内核快速关中断指令 65 6.3 关中断 66 6.3.1 不带返回值的关中断函数 66 6.3.2 带返回值的关中断函数 67 6.4 开中断 67 6.5 进入/退出临界段的宏 68 6.5.1 进入临界段 68 6.5.2 退出临界段 69 6.6 临界段代码的应用 70 6.7 实验现象 71 第7章 空闲任务与阻塞延时 72 7.1 实现空闲任务 72 7.1.1 定义空闲任务的栈 72 7.1.2 定义空闲任务的任务控制块 73 7.1.3 创建空闲任务 73 7.2 实现阻塞延时 74 7.2.1 vTaskDelay()函数 74 7.2.2 修改vTaskSwitchContext()函数 75 7.3 SysTick中断服务函数 77 7.4 SysTick初始化函数 78 7.5 main()函数 80 7.6 实验现象 83 第8章 多优先级 84 8.1 支持多优先级的方法 84 8.2 查找最高优先级的就绪任务相关代码 85 8.2.1 通用方法 87 8.2.2 优化方法 87 8.3 修改代码以支持多优先级 89 8.3.1 修改任务控制块 89 8.3.2 修改xTaskCreateStatic()函数 89 8.3.3 修改vTaskStartScheduler()函数 93 8.3.4 修改vTaskDelay()函数 94 8.3.5 修改vTaskSwitchContext()函数 95 8.3.6 修改xTaskIncrementTick()函数 96 8.4 main()函数 97 8.5 实验现象 100 第9章 任务延时列表 102 9.1 任务延时列表的工作原理 102 9.2 实现任务延时列表 103 9.2.1 定义任务延时列表 103 9.2.2 任务延时列表初始化 103 9.2.3 定义xNextTaskUnblock-Time 103 9.2.4 初始化xNextTaskUnblock-Time 104 9.3 修改代码以支持任务延时列表 104 9.3.1 修改vTaskDelay()函数 105 9.3.2 修改xTaskIncrementTick()函数 107 9.3.3 修改taskRESET_READY_PRIORITY()函数 109 9.4 main()函数 110 9.5 实验现象 110 第10章 时间片 111 10.1 时间片测试实验 111 10.2 main.c文件 112 10.3 实验现象 115 10.4 原理分析 116 10.4.1 taskSELECT_HIGHEST_PRIORITY_TASK()函数 116 10.4.2 taskRESET_READY_PRIORITY()函数 117 10.5 修改代码以支持优先级 118 10.5.1 修改xPortSysTick-Handler()函数 118 10.5.2 修改xTaskIncrement-Tick()函数 119 第二部分 FreeRTOS内核应用开发 第11章 移植FreeRTOS到STM32 124 11.1 获取STM32的裸机工程模板 124 11.2 下载FreeRTOS V9.0.0源码 124 11.3 FreeRTOS文件夹内容 126 11.3.1 FreeRTOS文件夹 126 11.3.2 FreeRTOS-Plus文件夹 128 11.3.3 HTML文件 129 11.4 向裸机工程中添加FreeRTOS源码 129 11.4.1 提取FreeRTOS最简源码 129 11.4.2 复制FreeRTOS到裸机工程根目录 130 11.4.3 复制FreeRTOSConf?ig.h文件到User文件夹 131 11.4.4 添加FreeRTOS源码到工程组文件夹 131 11.5 修改FreeRTOSConf?ig.h文件 133 11.5.1 FreeRTOSConf?ig.h文件内容 133 11.5.2 修改FreeRTOSConfig.h文件 143 11.6 修改stm32f10x_it.c文件 147 11.7 修改main.c文件 151 11.8 下载验证 152 第12章 任务 153 12.1 硬件初始化 153 12.2 创建单任务—SRAM静态内存 155 12.2.1 定义任务函数 155 12.2.2 空闲任务与定时器任务栈函数实现 155 12.2.3 定义任务栈 157 12.2.4 定义任务控制块 157 12.2.5 静态创建任务 158 12.2.6 启动任务 159 12.2.7 main.c文件 159 12.3 下载验证SRAM静态内存单任务 164 12.4 创建单任务—SRAM动态内存 164 12.4.1 动态内存空间堆的来源 164 12.4.2 定义任务函数 165 12.4.3 定义任务栈 166 12.4.4 定义任务控制块指针 166 12.4.5 动态创建任务 166 12.4.6 启动任务 167 12.4.7 main.c文件 167 12.5 下载验证SRAM动态内存单任务 171 12.6 创建多任务—SRAM动态内存 171 12.7 下载验证SRAM动态内存多任务 175 第13章 FreeRTOS的启动流程 176 13.1 “?万事俱备,只欠东风?”法 176 13.2 “?小心翼翼,十分谨慎?”法 177 13.3 两种方法的适用情况 179 13.4 FreeRTOS的启动流程 179 13.4.1 创建任务函数xTaskCreate() 179 13.4.2 开启调度器函数vTask-StartScheduler() 181 13.4.3 main()函数 185 第14章 任务管理 188 14.1 任务的基本概念 188 14.2 任务调度器的基本概念 188 14.3 任务状态的概念 189 14.4 任务状态迁移 190 14.5 常用的任务函数 191 14.5.1 任务挂起函数 191 14.5.2 任务恢复函数 195 14.5.3 任务删除函数 203 14.5.4 任务延时函数 207 14.6 任务的设计要点 215 14.7 任务管理实验 216 14.8 实验现象 221 第15章 消息队列 222 15.1 消息队列的基本概念 222 15.2 消息队列的运作机制 222 15.3 消息队列的阻塞机制 223 15.4 消息队列的应用场景 224 15.5 消息队列控制块 224 15.6 常用的消息队列函数 226 15.6.1 消息队列动态创建函数 226 15.6.2 消息队列静态创建函数 232 15.6.3 消息队列删除函数 233 15.6.4 向消息队列发送消息函数 234 15.6.5 从消息队列读取消息函数 244 15.7 消息队列注意事项 251 15.8 消息队列实验 252 15.9 实验现象 256 第16章 信号量 258 16.1 信号量的基本概念 258 16.1.1 二值信号量 258 16.1.2 计数信号量 259 16.1.3 互斥信号量 259 16.1.4 递归信号量 259 16.2 二值信号量的应用场景 260 16.3 二值信号量的运作机制 260 16.4 计数信号量的运作机制 261 16.5 信号量控制块 262 16.6 常用的信号量函数 263 16.6.1 信号量创建函数 263 16.6.2 信号量删除函数 268 16.6.3 信号量释放函数 268 16.6.4 信号量获取函数 271 16.7 信号量实验 273 16.7.1 二值信号量同步实验 273 16.7.2 计数信号量实验 277 16.8 实验现象 282 16.8.1 二值信号量实验现象 282 16.8.2 计数信号量实验现象 283 第17章 互斥量 284 17.1 互斥量的基本概念 284 17.2 互斥量的优先级继承机制 284 17.3 互斥量的应用场景 287 17.4 互斥量的运作机制 287 17.5 互斥量控制块 288 17.6 互斥量函数 289 17.6.1 互斥量创建函数xSema-phoreCreateMutex() 289 17.6.2 递归互斥量创建函数xSemaphoreCreateRecur-siveMutex() 292 17.6.3 互斥量删除函数vSema-phoreDelete() 293 17.6.4 互斥量获取函数xSema-phoreTake() 293 17.6.5 递归互斥量获取函数xSemaphoreTakeRecur-sive() 299 17.6.6 互斥量释放函数xSema-phoreGive() 301 17.6.7 递归互斥量释放函数xSemaphoreGiveRecur-sive() 304 17.7 互斥量实验 307 17.7.1 模拟优先级翻转实验 307 17.7.2 互斥量降低优先级翻转危害实验 312 17.8 实验现象 318 17.8.1 模拟优先级翻转实验现象 318 17.8.2 互斥量降低优先级翻转危害实验现象 318 第18章 事件 320 18.1 事件的基本概念 320 18.2 事件的应用场景 321 18.3 事件的运作机制 321 18.4 事件控制块 323 18.5 事件函数 323 18.5.1 事件创建函数xEvent-GroupCreate() 323 18.5.2 事件删除函数vEvent-GroupDelete() 325 18.5.3 事件组置位函数xEvent-GroupSetBits()(任务) 326 18.5.4 事件组置位函数xEvent-GroupSetBitsFromISR()(中断) 330 18.5.5 等待事件函数xEvent-GroupWaitBits() 332 18.5.6 清除事件组指定位函数xEventGroupClearBits()与xEventGroupClearBits-FromISR() 337 18.6 事件实验 338 18.7 实验现象 343 第19章 软件定时器 344 19.1 软件定时器的基本概念 344 19.2 软件定时器的应用场景 345 19.3 软件定时器的精度 345 19.4 软件定时器的运作机制 346 19.5 软件定时器控制块 348 19.6 软件定时器函数 349 19.6.1 软件定时器创建函数 349 19.6.2 软件定时器启动函数 352 19.6.3 软件定时器停止函数 356 19.6.4 软件定时器任务 358 19.6.5 软件定时器删除函数 365 19.7 软件定时器实验 366 19.8 实验现象 371 第20章 任务通知 372 20.1 任务通知的基本概念 372 20.2 任务通知的运作机制 372 20.3 任务通知的数据结构 373 20.4 任务通知函数 374 20.4.1 发送任务通知函数 374 20.4.2 获取任务通知函数 391 20.5 任务通知实验 398 20.5.1 任务通知代替消息队列 398 20.5.2 任务通知代替二值信号量 404 20.5.3 任务通知代替计数信号量 409 20.5.4 任务通知代替事件组 414 20.6 实验现象 419 20.6.1 任务通知代替消息队列实验现象 419 20.6.2 任务通知代替二值信号量实验现象 420 20.6.3 任务通知代替计数信号量实验现象 420 20.6.4 任务通知代替事件组实验现象 421 第21章 内存管理 422 21.1 内存管理的基本概念 422 21.2 内存管理的应用场景 423 21.3 内存管理方案详解 424 21.3.1 heap_1.c 424 21.3.2 heap_2.c 428 21.3.3 heap_3.c 436 21.3.4 heap_4.c 438 21.3.5 heap_5.c 448 21.4 内存管理实验 451 21.5 实验现象 455 第22章 中断管理 456 22.1 异常与中断的基本概念 456 22.1.1 中断的介绍 457 22.1.2 和中断相关的术语 457 22.2 中断管理的运作机制 458 22.3 中断延迟的概念 459 22.4 中断管理的应用场景 460 22.5 ARM Cortex-M的中断管理 460 22.6 中断管理实验 462 22.7 实验现象 470 第23章 CPU利用率统计 471 23.1 CPU利用率的基本概念 471 23.2 CPU利用率的作用 471 23.3 CPU利用率统计 472 23.4 CPU利用率统计实验 473 23.5 实验现象 478 附录 479
×
Close
添加到书单
加载中...
点此新建书单
×
Close
新建书单
标题:
简介:
蜀ICP备2024047804号
Copyright 版权所有 © jvwen.com 聚文网