图书目录

目录

第一篇应用代码开发

第1章开发流程及软硬件开发工具

1.1从设计到编程的实践方法

1.1.1概述

1.1.2源代码生成

1.1.3目标代码生成

1.2STM32Cube软件工具介绍

1.2.1工具概述

1.2.2STM32CubeMX特性

1.2.3STM32Cube嵌入式软件库及

文档

1.3实用工具

1.3.1集成开发环境

1.3.2STM32F4 Discovery Kit硬件

1.4STM32Cube图形工具

1.4.1STM32CubeMX概述

1.4.2选择微控制器

1.4.3使用向导设置引脚功能

1.4.4代码生成

1.4.5自动生成的代码

1.5STM32Cube HAL库

1.6Cube工程中的FreeRTOS配置

1.7STM32CubeIDE开发平台

1.7.1STM32CubeIDE开发环境

概述

1.7.2Eclipse平台介绍

1.7.3CubeIDE使用介绍

1.7.4CubeIDE的透视图、视图及

编辑器

1.7.5在CubeIDE中构建和安装

项目

1.8要点回顾

第二篇内核基础实验

第2章多任务设计与实现基础

2.1预备实验简单I/O交互

2.1.1概述

2.1.2简单I/O交互框图

2.1.3设计实现

2.1.4实验API参考指南

2.1.5实验回顾

2.2实验1创建并运行连续执行的单个

任务

2.2.1任务框图

2.2.2设计实现

2.2.3使用osDelay函数实现延时

2.2.4使用FreeRTOS原生API实现

延时

2.2.5进一步实验

2.2.6实验回顾

2.2.7实验附录

2.3实验2周期任务实现

2.3.1延时实现

2.3.2周期任务实现

2.3.3实验分析

2.3.4补充实验

2.3.5实验回顾

2.3.6实验附录: DelayUntil函数

描述

2.4实验3创建和运行多个独立的周期

任务

2.4.1背景介绍

2.4.2设计框图

2.4.3设计实现

2.4.4实验回顾

2.5实验4优先级抢占调度策略分析

2.5.1背景介绍

2.5.2设计概述

2.5.3实验描述

2.5.4实验细节

2.5.5实验回顾

第3章共享资源使用

3.1实验5访问竞争问题分析

3.1.1竞争问题介绍

3.1.2竞争问题概述

3.1.3实验细节

3.1.4实验回顾

3.2实验6通过挂起调度器消除资源

竞争

3.2.1方法介绍

3.2.2实验细节

3.2.3实验回顾

3.3实验7演示系统性能的降低

3.3.1介绍

3.3.2实验细节

3.3.3实验回顾

3.4实验8使用信号量

保护临界代码

3.4.1背景介绍

3.4.2实验细节

3.4.3实验回顾

3.5实验9使用互斥信号量保护临界

代码

3.5.1实现细节

3.5.2实验回顾

3.6实验10使用封装机制提升系统

安全

3.6.1机制介绍

3.6.2实现概述

3.6.3实验实现

3.6.4实验回顾

3.7实验11优先级反转影响演示

3.7.1介绍

3.7.2实现及关键代码

3.7.3实验实现

3.7.4实验讨论及回顾

3.8实验12使用优先级继承机制消除

优先级反转

3.8.1实验介绍

3.8.2问题概述

3.8.3实验回顾

第4章任务交互实现

4.1实验13使用标志协调任务活动

4.1.1机制介绍

4.1.2实现概述

4.1.3实现细节

4.1.4实验总结

4.2实验14使用事件标志实现单向

同步

4.2.1实现介绍

4.2.2事件标志、信号及FreeRTOS/

CMSIS的关系

4.2.3实验实现

4.2.4总结与回顾

4.3实验15使用信号量实现单向同步

4.3.1简介及实现

4.3.2实验细节

4.3.3总结与回顾

4.4实验16使用信号量实现双向同步

4.4.1双向同步介绍

4.4.2实现细节

4.4.3总结与回顾

4.5实验17使用信号量实现多个任务

同步

4.5.1原理介绍

4.5.2实现细节

4.5.3单信号量会合阻塞实现

4.5.4N个信号量会合阻塞实现

4.5.5回顾与总结

4.6实验18使用内存池提供数据共享

机制

4.6.1实现介绍

4.6.2实现细节

4.6.3实验回顾

4.7实验19使用队列传输数据

4.7.1队列介绍

4.7.2实验细节

4.7.3具体实现

4.7.4实验回顾

4.7.5CMSISRTOS API中的

状态和错误编码

4.8实验20使用邮箱传输数据

4.8.1邮箱介绍

4.8.2邮箱构建

4.8.3实验细节

4.8.4实验回顾

4.8.5实验附录使用FreeRTOS

原生API构建邮箱

4.9实验21按键中断服务实现

4.9.1介绍

4.9.2使用CubeMX自动生成

ISR代码框架

4.9.3实验细节

4.9.4实验回顾

4.10实验22演示为何需要快速实现

中断处理

4.10.1实验概述和时间参数

4.10.2使用CubeMX

4.10.3实验回顾

4.11实验23使用可延期服务器减少

ISR影响

4.11.1中断信号延时响应

4.11.2实验概述和时间细节

4.11.3代码生成及运行

4.11.4实验回顾

第三篇使用Tracealyzer

可视化软件行为

第5章Tracealyzer集成和配置

指南

5.1Tracealyzer实验1Tracealyzer

介绍

5.2集成跟踪记录器库

5.2.1将记录器库添加到项目

5.2.2为应用配置库文件

5.3在FreeRTOS中启用Tracealyzer

记录器

5.4配置CubeMX项目以符合工具需求

5.5初始化/启动跟踪记录

5.5.1快照跟踪模式

5.5.2流跟踪模式

5.6附加检查

第6章Tracealyzer的基本特点和

使用

6.1Tracealyzer实验2Tracealyzer

基础知识

6.2Tracealyzer实验3分析跟踪记录

6.3Tracealyzer实验4一个双任务

设计的运行时分析

6.4Tracealyzer实验5研究优先级

抢占调度

6.4.1实验5.1跟踪抢占调度

任务的执行

6.4.2实验5.2设定跟踪起始

位置

6.5Tracealyzer实验6分析FreeRTOS

的延时函数

6.5.1实验6.1

6.5.2实验6.2

6.5.3实验6.3

6.5.4评论和小结

第7章流模式操作介绍

Tracealyzer实验7使用流模式进行跟踪

记录

第8章分析资源共享和任务间

通信

8.1Tracealyzer实验8互斥: 使用受

保护的共享资源

8.2Tracealyzer实验9研究任务之间的

非同步数据传输

8.2.1软件行为概述

8.2.2跟踪记录: 无报警场景

8.2.3跟踪记录: 报警场景

8.3Tracealyzer实验10研究任务之间的

同步数据传输

8.4Tracealyzer实验11评估可延期

服务器的使用

8.4.1总体描述

8.4.2任务时间

8.4.3实验11a

8.4.4实验11b

8.4.5实验11c

第四篇扩展你的知识、

超越RTOS范围

第9章STM Studio软件工具

9.1STM Studio介绍

9.2STM Studio的使用

9.3回顾和总结

第10章STM32F4通用定时器

10.1附加实验1使用定时器定时产生

ISR调用

10.1.1定时器: ISR运行模式

简介

10.1.2热身实验细节

10.1.3关于定时器的细节

10.1.4实验回顾

10.2附加实验2控制定时器产生

的ISR

10.2.1实验细节

10.2.2实验回顾

10.3附加实验3产生波形: 脉冲宽度

调制

10.3.1脉冲宽度调制是什么

10.3.2在STM32F411上产生

PWM波形

10.3.3实验回顾

10.4附加实验4使用PWM控制

LED灯亮度

10.4.1实验简介

10.4.2低速PWM

10.4.3快速PWM

10.4.4实验回顾

10.5附加实验5产生波形: 脉冲

计数

10.5.1实验简介

10.5.2实验细节

10.5.3实验回顾

10.6附加实验6测量脉冲间隔

10.6.1实验简介

10.6.2实验1使用主动采样

方式

10.6.3实验1回顾

10.6.4实验2使用基于中断的

方式

10.6.5实验2回顾

10.7附加实验7测量脉冲频率

10.7.1实验简介

10.7.2实验细节

10.7.3实验回顾

第11章使用STM32F4看门狗

定时器

11.1附加实验8看门狗定时器基础

11.1.1序言

11.1.2STM32F4独立看门狗

简介

11.1.3实验细节: 使用STM库

函数的简单样例

11.1.4实验回顾

11.2附加实验9正确使用

看门狗定时器

11.3附加实验10使用CubeMX

激活IWDG

11.4附加实验11使用CubeMX针对

应用设置WDT

11.5附加实验12看门狗的窗口化

运行

11.5.1序言

11.5.2STM32F4窗口看门狗

(WWDG)的概念结构

11.5.3STM32F4 WWDG: 功能和

行为细节

11.5.4设置和使用窗口看门狗

11.5.5实验细节: 演示WWDG的

超时

11.5.6实验回顾

11.6附加实验13正确使用WWDG

11.7附加实验14过早地踢WWDG

11.8附加实验15使用CubeMX正确

激活WWDG

11.9附加实验16早期唤醒中断

(EWI)

11.9.1看门狗恢复机制(WRM)

简介

11.9.2EWI代码结构和内容

11.9.3实验细节

11.9.4实验回顾

11.10附加实验17WWDG ISR的简化

实现

11.11附加实验18检测失败的单定期

任务

11.11.1背景

11.11.2实验细节

11.11.3实验回顾

第12章多任务设计中的通用任务

故障检测技术

12.1附加实验19单定期任务的看门狗

保护机制

12.1.1简介

12.1.2应用任务T1设计

12.1.3基于状态的监督任务

设计

12.1.4测试系统

12.1.5小结

12.2附加实验20两个定期任务的

故障检测

12.2.1简介

12.2.2更多讨论

12.2.3测试和小结

12.3附加实验21单一非定期任务的

故障检测

12.3.1检测非定期任务的故障的

可选方式

12.3.2创建和使用FreeRTOS

软件定时器

12.3.3实验细节

12.3.4实验回顾

12.4附加实验22混合定期与非定期

任务的故障检测

12.4.1实验简介

12.4.2实验的测试步骤

12.4.3后记

第五篇结束语: 展望未来

第13章自我改进指南

13.1实践工作的影响

13.2OS相关的问题

13.3应用程序的可移植性

13.4应用级代码结构

13.5结束语

第六篇帮助你自学的在线资料

第14章在线资料的参考指南

14.1STM32Cube嵌入式软件

14.2STM32CubeMX的特点

14.3STM32Cube嵌入式软件库和

文档

14.4硬件开发板: STM32F4 

Discovery kit

14.5内容丰富的视频

14.6STM Studio

14.7STM32F4定时器资料

14.8STM32CubeIDE相关信息

14.9FreeRTOS 文档

14.10Percepio Tracealyzer RTOS

跟踪分析工具

14.11实验代码