《FreeRTOS源码详解与应用开发 基于STM32》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:左忠凯,刘军,张洋编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2017
  • ISBN:9787512423954
  • 页数:374 页
图书介绍:FreeRTOS操作系统免费,而且在全球的占有量很大,很多第三方组件厂商都选择FreeRTOS作为默认操作系统。本书结合大量实例,由简入深,从最基本的API函数使用方法讲起,让读者对于FreeRTOS先有一个基本的概念,后续章节对FreeRTOS的各功能模块进行详细讲解。本书适合对FreeRTOS感兴趣,想要深入了解FreeRTOS运行原理的爱好者。

第1章FreeRTOS简介 1

1.1初识FreeRTOS 1

1.1.1什么是FreeRTOS 1

1.1.2为什么选择FreeRTOS 2

1.1.3 FreeRTOS的特点 3

1.1.4商业许可 3

1.2磨刀不误砍柴工 4

1.2.1资料查找 4

1.2.2 FreeRTOS官方文档 6

1.2.3 Cortex-M架构资料 8

1.3 FreeRTOS源码初探 8

1.3.1 FreeRTOS源码下载 8

1.3.2 FreeRTOS文件预览 10

1.4 FreeRTOS编码标准和风格 14

第2章FreeRTOS移植 19

2.1准备工作 19

2.2 FreeRTOS移植 20

2.2.1向工程中添加相应文件 20

2.2.2修改SYSTEM文件 25

2.3移植验证实验 29

2.3.1程序设计 29

2.3.2程序运行结果 32

第3章FreeRTOS系统配置 34

3.1 “INCLUDE_”开始的宏 34

3.2 “config”开始的宏 36

第4章FreeRTOS任务相关API函数 43

4.1任务创建和删除API函数 43

4.2任务创建和删除实验(动态方法) 46

4.2.1程序设计 46

4.2.2程序运行结果 49

4.3任务创建和删除实验(静态方法) 50

4.3.1程序设计 50

4.3.2程序运行结果 55

4.4任务挂起和恢复API函数 55

4.5任务挂起和恢复实验 56

4.5.1程序设计 56

4.5.2程序运行结果 61

第5章FreeRTOS中断配置和临界段 62

5.1 Cortex-M中断 62

5.1.1中断 62

5.1.2中断管理 62

5.1.3优先级分组定义 64

5.1.4优先级设置 66

5.1.5用于中断屏蔽的特殊寄存器 67

5.2 FreeRTOS中断配置宏 68

5.3 FreeRTOS开关中断 71

5.4临界段代码 72

5.4.1任务级临界段代码保护 72

5.4.2中断级临界段代码保护 74

5.5 FreeRTOS中断测试实验 75

5.5.1程序设计 75

5.5.2程序运行结果 79

第6章FreeRTOS任务基础知识 80

6.1什么是多任务系统 80

6.2 FreeRTOS任务与协程 81

6.2.1任务的特性 82

6.2.2协程的特性 82

6.3任务状态 82

6.4任务优先级 84

6.5任务实现 84

6.6任务控制块 85

6.7任务堆栈 86

第7章FreeRTOS列表和列表项 88

7.1什么是列表和列表项 88

7.1.1列表 88

7.1.2列表项 89

7.1.3迷你列表项 90

7.2列表和列表项初始化 90

7.2.1列表初始化 90

7.2.2列表项初始化 91

7.3列表项插入 92

7.3.1列表项插入函数 92

7.3.2列表项插入过程 93

7.4列表项末尾插入 95

7.4.1列表项末尾插入函数 95

7.4.2列表项末尾插入过程 96

7.5列表项的删除 97

7.6列表的遍历 98

7.7列表项的插入和删除实验 99

7.7.1程序设计 99

7.7.2程序运行结果 103

第8章FreeRTOS调度器开启和任务相关函数 107

8.1本章必备的知识 107

8.2调度器开启过程 108

8.2.1任务调度器开启函数 108

8.2.2内核相关硬件初始化函数 109

8.2.3使能FPU函数 110

8.2.4启动第一个任务 111

8.2.5 SVC中断服务函数 112

8.2.6空闲任务 117

8.3任务创建过程 117

8.3.1任务创建函数 117

8.3.2任务初始化函数 119

8.3.3任务堆栈初始化函数 121

8.3.4添加任务到就绪列表 123

8.4任务删除过程 125

8.5任务挂起过程 127

8.6任务恢复过程 129

第9章FreeRTOS任务切换 132

9.1 PendSV异常 132

9.2 FreeRTOS任务切换场合 132

9.2.1执行系统调用 132

9.2.2系统滴答定时器中断 133

9.3 PendSV中断服务函数 134

9.4查找下一个要运行的任务 136

9.5 FreeRTOS时间片调度 138

9.6时间片调度实验 140

9.6.1程序设计 140

9.6.2程序运行结果 143

第10章FreeRTOS系统内核控制函数 145

10.1内核控制函数预览 145

10.2内核控制函数详解 146

第11章FreeRTOS其他任务API函数 150

11.1任务相关API函数简介 150

11.2任务相关API函数详解 151

11.3任务状态查询API函数实验 159

11.3.1程序设计 159

11.3.2程序运行结果 163

11.4任务运行时间信息统计实验 164

11.4.1相关宏的设置 164

11.4.2程序设计 166

11.4.3程序运行结果 169

第12章FreeRTOS时间管理 171

12.1 FreeRTOS延时函数 171

12.1.1函数vTa skDelay() 171

12.1.2函数prvAddCurrentTaskToDelayedList() 172

12.1.3函数vTaskDelayUntil() 174

12.2 FreeRTOS系统时钟节拍 178

12.2.1滴答定时器 178

12.2.2 FreeRTOS系统时钟节拍函数 180

第13章FreeRTOS队列 185

13.1队列 185

13.2队列结构体 188

13.3队列创建 189

13.3.1函数原型 189

13.3.2队列创建函数 191

13.3.3队列初始化函数 192

13.3.4队列复位函数 193

13.4向队列发送消息 194

13.4.1函数原型 194

13.4.2任务级通用入队函数 199

13.4.3中断级通用入队函数 202

13.5队列上锁和解锁 204

13.6从队列读取消息 207

13.7队列操作实验 210

13.7.1程序设计 210

13.7.2程序运行结果 218

第14章FreeRTOS信号量 219

14.1简介 219

14.2二值信号量 220

14.2.1二值信号量简介 220

14.2.2二值信号量创建函数 222

14.2.3二值信号量创建过程 223

14.2.4释放信号量 224

14.2.5获取信号量 226

14.3二值信号量操作实验 227

14.3.1程序设计 227

14.3.2程序运行结果 232

14.4计数型信号量 234

14.4.1计数型信号量简介 234

14.4.2计数型信号量创建函数 234

14.4.3计数型信号量创建过程 235

14.4.4释放和获取计数信号量 236

14.5计数型信号量操作实验 236

14.5.1程序设计 236

14.5.2程序运行结果 240

14.6优先级翻转简介 241

14.7优先级翻转实验 242

14.7.1程序设计 242

14.7.2程序运行结果 246

14.8互斥信号量 248

14.8.1简介 248

14.8.2互斥信号量创建函数 248

14.8.3互斥信号量创建过程 249

14.8.4释放互斥信号量 250

14.8.5获取互斥信号量 254

14.9互斥信号量操作实验 259

14.9.1程序设计 259

14.9.2程序运行结果 261

14.10递归互斥信号量 262

14.10.1简介 262

14.10.2递归互斥信号量创建函数 263

14.10.3递归信号量创建过程 263

14.10.4释放递归互斥信号量 264

14.10.5获取递归互斥信号量 265

14.10.6递归互斥信号量使用示例 266

第15章FreeRTOS软件定时器 268

15.1软件定时器简介 268

15.2定时器服务/Daemon任务 268

15.2.1定时器服务任务与队列 268

15.2.2定时器相关配置 269

15.3单次定时器和周期定时器 270

15.4复位软件定时器 270

15.5创建软件定时器 272

15.6开启软件定时器 274

15.7停止软件定时器 275

15.8软件定时器实验 276

15.8.1程序设计 276

15.8.2程序运行结果 280

第16章FreeRTOS事件标志组 281

16.1事件标志组 281

16.2创建事件标志组 282

16.3设置事件位 283

16.4获取事件标志组值 285

16.5等待指定的事件位 286

16.6事件标志组实验 286

16.6.1程序设计 286

16.6.2程序运行结果 291

第17章FreeRTOS任务通知 293

17.1任务通知 293

17.2发送任务通知 294

17.3任务通知通用发送函数 297

17.3.1任务级任务通知通用发送函数 297

17.3.2中断级任务通知发送函数 299

17.4获取任务通知 302

17.5任务通知模拟二值信号量实验 306

17.5.1程序设计 306

17.5.2程序运行结果 309

17.6任务通知模拟计数型信号量实验 309

17.6.1程序设计 309

17.6.2程序运行结果 311

17.7任务通知模拟消息邮箱实验 311

17.7.1程序设计 311

17.7.2程序运行结果 315

17.8任务通知模拟事件标志组实验 315

17.8.1程序设计 315

17.8.2程序运行结果 318

第18章FreeRTOS低功耗Tickless模式 319

18.1 STM32F4低功耗模式 319

18.1.1睡眠模式 320

18.1.2停止模式 320

18.1.3待机模式 321

18.2 Tickless模式详解 322

18.2.1如何降低功耗 322

18.2.2 Tickless的具体实现 323

18.3低功耗Tickless模式实验 328

18.3.1程序设计 328

18.3.2程序运行结果 333

第19章FreeRTOS空闲任务 335

19.1空闲任务 335

19.1.1空闲任务简介 335

19.1.2空闲任务的创建 335

19.1.3空闲任务函数 337

19.2空闲任务钩子函数 339

19.2.1钩子函数 339

19.2.2空闲任务钩子函数详解 340

19.3空闲任务钩子函数实验 341

19.3.1程序设计 341

19.3.2程序运行结果 343

第20章FreeRTOS内存管理 344

20.1 FreeRTOS内存管理简介 344

20.2内存碎片 345

20.3 heap_1内存分配方法 346

20.3.1分配方法简介 346

20.3.2内存申请函数 346

20.3.3内存释放函数 349

20.4 heap_2内存分配方法 349

20.4.1分配方法简介 349

20.4.2内存块 350

20.4.3内存堆初始化函数 351

20.4.4内存块插入函数 351

20.4.5内存申请函数 352

20.4.6内存释放函数 355

20.5 heap_3内存分配方法 356

20.6 heap_4内存分配方法 357

20.6.1分配方法 357

20.6.2内存堆初始化函数 358

20.6.3内存块插入函数 360

20.6.4内存申请函数 362

20.6.5内存释放函数 365

20.7 heap_5内存分配方法 366

20.8内存管理实验 368

20.8.1程序设计 368

20.8.2程序运行结果 371

参考文献 374