目录
第一篇应用代码开发
第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.5CMSISRTOS 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实验代码