内容推荐 本书介绍STM32开发的一些高级内容。第一部分详细介绍嵌入式操作系统FreeRTOS的使用:第二部分介绍使用FatFS管理SPI-Flash芯片、SD卡和U盘上的文件系统;第三部分介绍BMP和JPG图片的获取与显示,触摸屏的使用,DCMI接口和数字摄像头等。全书使用STM32CubeMX和STM32CubeIDE软件开发例程,讲解FreeRTOS、FatFS、LibJPEG、USB_Host、USB_Device等中间件以及SDIO、USB-OTG、DCMI等外设的原理和使用方法,并针对一个STM32F407开发板编写了完整示例项目。通过阅读本书,读者可以掌握STM32开发中的嵌入式操作系统、文件系统、触摸屏等高级软硬件的开发方法。 本书适合已经掌握STM32CubeMX和STM32CubeIDE软件的使用以及STM32常用外设的STM32Cube开发等相关基础内容的读者阅读,可以作为高等院校电子、自动化、计算机类专业的教学用书,也可作为STM32嵌入式系统开发的参考书。 作者简介 鄢志丹,博士、中国石油大学(华东)控制科学与工程学院教师。从事随钻测控技术、自抗扰控制方法、井下仪器开发、微弱信号处理等方面的研究工作。主持国家自然科学基金、中国博士后科学基金、山东省自然科学基金等10余个科研项目,获授权发明专利10余项,发表论文30余篇。 目录 第一部分 嵌入式操作系统FreeRTOS 第1章 FreeRTOS基础 1.1 FreeRTOS概述 1.1.1 FreeRTOS的发展历史 1.1.2 FreeRTOS的特点和许可方式 1.1.3 FreeRTOS的一些概念和术语 1.1.4 为什么要使用RTOS 1.2 FreeRTOS入门示例 1.2.1 CubeMX项目配置 1.2.2 含FreeRTOS的项目的文件组成 1.2.3 程序分析和功能实现 1.3 FreeRTOS的文件组成和基本原理 1.3.1 FreeRTOS的文件组成 1.3.2 FreeRTOS的编码规则 1.3.3 FreeRTOS的配置和功能裁剪 第2章 FreeRTOS的任务管理 2.1 任务相关的一些概念 2.1.1 多任务运行基本机制 2.1.2 任务的状态 2.1.3 任务的优先级 2.1.4 空闲任务 2.1.5 基础时钟与嘀嗒信号 2.2 FreeRTOS的任务调度 2.2.1 任务调度方法概述 2.2.2 使用时间片的抢占式调度方法 2.2.3 不使用时间片的抢占式调度方法 2.2.4 合作式任务调度方法 2.3 任务管理相关函数 2.3.1 相关函数概述 2.3.2 主要函数功能说明 2.4 多任务编程示例一 2.4.1 示例功能与CubeMX项目设置 2.4.2 初始程序分析 2.4.3 编写用户功能代码 2.5 任务管理工具函数 2.5.1 相关函数概述 2.5.2 获取任务句柄 2.5.3 单个任务的操作 2.5.4 内核信息统计 2.6 多任务编程示例二 2.6.1 示例功能与CubeMX项目设置 2.6.2 程序功能实现 第3章 FreeRTOS的中断管理 3.1 FreeRTOS与中断 3.2 任务与中断服务例程 3.2.1 任务与中断服务例程的关系 3.2.2 中断屏蔽和临界代码段 3.2.3 在ISR中使用FreeRTOSAPI函数 3.2.4 中断及其ISR设计原则 3.3 任务和中断程序设计示例 3.3.1 示例功能和CubeMX项目设置 3.3.2 基本功能代码 3.3.3 各种特性的测试 第4章 进程间通信与消息队列 4.1 进程间通信 4.2 队列的特点和基本操作 4.2.1 队列的创建和存储 4.2.2 向队列写入数据 4.2.3 从队列读取数据 4.2.4 队列操作相关函数 4.3 队列使用示例 4.3.1 示例功能和CubeMX项目设置 4.3.2 初始代码分析 4.3.3 实现用户功能 第5章 信号量 5.1 信号量和互斥量概述 5.1.1 二值信号量 5.1.2 计数信号量 5.1.3 互斥量 5.1.4 递归互斥量 5.1.5 相关函数概述 5.2 二值信号量使用示例 5.2.1 二值信号量操作相关函数详解 5.2.2 示例功能和CubeMX项目设置 5.2.3 程序功能实现 5.3 计数信号量使用示例 5.3.1 计数信号量操作相关函数详解 5.3.2 示例功能和CubeMX项目设置 5.3.3 程序功能实现 第6章 互斥量 6.1 优先级翻转问题 6.2 互斥量的工作原理 6.2.1 优先级继承 6.2.2 互斥量相关函数详解 6.3 优先级翻转示例 6.3.1 示例功能和CubeMX项目设置 6.3.2 程序功能实现 6.4 互斥量使用示例 6.4.1 示例功能和CubeMX项目设置 6.4.2 程序功能实现 第7章 事件组 7.1 事件组的原理和功能 7.1.1 事件组的功能特点 7.1.2 事件组的工作原理 7.2 事件组相关函数 7.2.1 相关函数概述 7.2.2 部分函数详解 7.3 事件组使用示例 7.3.1 示例功能和CubeMX项目设置 7.3.2 程序功能实现 7.4 通过事件组进行多任务同步 7.4.1 多任务同步原理 7.4.2 示例功能和CubeMX项目设置 7.4.3 程序功能实现 第8章 任务通知 8.1 任务通知的原理和功能 8.2 任务通知的相关函数 8.2.1 相关函数概述 8.2.2 函数详解 8.3 示例一:使用任务通知传递数据 8.3.1 示例功能与CubeMX项目设置 8.3.2 程序功能实现 8.4 示例二:将任务通知用作计数信号量 8.4.1 示例功能 8.4.2 CubeMX项目设置 8.4.3 程序功能实现 第9章 流缓冲区和消息缓冲区 9.1 流缓冲区功能概述 9.2 流缓冲区操作的相关函数 9.2.1 相关函数概述 9.2.2 部分函数详解 9.2.3 表示发送完成和接收完成的宏 9.3 流缓冲区使用示例 9.3.1 示例功能与CubeMX项目设置 9.3.2 程序功能实现 9.4 消息缓冲区功能概述 9.5 消息缓冲区操作相关函数 9.5.1 相关函数概述 9.5.2 部分函数详解 9.6 消息缓冲区使用示例 9.6.1 示例功能与CubeMX项目设置 9.6.2 程序功能实现 第1 |