導覽
近期變更
隨機頁面
新手上路
新頁面
優質條目評選
繁體
不转换
简体
繁體
3.22.79.103
登入
工具
閱讀
檢視原始碼
特殊頁面
頁面資訊
求真百科歡迎當事人提供第一手真實資料,洗刷冤屈,終結網路霸凌。
檢視 STM32Cube高效开发教程高级篇 的原始碼
←
STM32Cube高效开发教程高级篇
前往:
導覽
、
搜尋
由於下列原因,您沒有權限進行 編輯此頁面 的動作:
您請求的操作只有這個群組的使用者能使用:
用戶
您可以檢視並複製此頁面的原始碼。
{| class="wikitable" align="right" |- |<center><img src=https://www0.kfzimg.com/sw/kfz-cos/kfzimg/10327608/a0557d90f2bb8449_s.jpg width="260"></center> <small>[https://book.kongfz.com/306317/7256526397 来自 孔夫子网 的图片]</small> |} 《'''STM32Cube高效开发教程高级篇'''》,王维波,鄢志丹,王钊 著,出版社: 人民邮电出版社。 人民邮电出版社是全国优秀[[出版社]]、全国百佳图书出版单位。人民邮电出版社出版领域涵盖科技出版、教育出版、大众出版,涉及信息技术、[[通信]]、工业技术、科普<ref>[https://www.douban.com/group/topic/116170316/ 100部科普经典名著],豆瓣,2018-04-26</ref>、经济管理、摄影、艺术、运动与休闲、心理学、少儿、大中专教材等10余个出版门类,年出版[[图书]]<ref>[https://www.xuexila.com/lishi/zixun/ziliao/18945.html 图书的演变历史资料],学习啦,2017-06-07</ref>近万种。 ==内容简介== 本书介绍 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 嵌入式系统开发的参考书。 ==目录== 第 一部分 嵌入式操作系统FreeRTOS 第 1章 FreeRTOS基础 2 1.1 FreeRTOS概述 2 1.1.1 FreeRTOS的发展历史 2 1.1.2 FreeRTOS的特点和许可方式 2 1.1.3 FreeRTOS的一些概念和术语 3 1.1.4 为什么要使用RTOS 4 1.2 FreeRTOS入门示例 4 1.2.1 CubeMX项目配置 5 1.2.2 含FreeRTOS的项目的文件组成 8 1.2.3 [[程序]]分析和功能实现 9 1.3 FreeRTOS的文件组成和基本原理 15 1.3.1 FreeRTOS的文件组成 15 1.3.2 FreeRTOS的编码规则 20 1.3.3 FreeRTOS的配置和功能裁剪 21 第 2章 FreeRTOS的任务管理 29 2.1 任务相关的一些概念 29 2.1.1 多任务运行基本机制 29 2.1.2 任务的状态 30 2.1.3 任务的优先级 31 2.1.4 空闲任务 32 2.1.5 基础时钟与嘀嗒信号 32 2.2 FreeRTOS的任务调度 32 2.2.1 任务调度方法概述 32 2.2.2 使用时间片的抢占式调度方法 33 2.2.3 不使用时间片的抢占式调度方法 34 2.2.4 合作式任务调度方法 35 2.3 任务管理相关函数 36 2.3.1 相关函数概述 36 2.3.2 主要函数功能说明 38 2.4 多任务编程示例一 40 2.4.1 示例功能与CubeMX项目设置 40 2.4.2 初始程序分析 42 2.4.3 编写用户功能代码 44 2.5 任务管理工具函数 49 2.5.1 相关函数概述 49 2.5.2 获取任务句柄 50 2.5.3 单个任务的操作 51 2.5.4 内核信息统计 53 2.6 多任务编程示例二 55 2.6.1 示例功能与CubeMX项目设置 55 2.6.2 程序功能实现 56 第3章 FreeRTOS的中断管理 62 3.1 FreeRTOS与中断 62 3.2 任务与中断服务例程 64 3.2.1 任务与中断服务例程的关系 64 3.2.2 中断屏蔽和临界代码段 65 3.2.3 在ISR中使用FreeRTOS API函数 66 3.2.4 中断及其ISR设计原则 67 3.3 任务和中断程序设计示例 67 3.3.1 示例功能和CubeMX项目设置 67 3.3.2 基本功能代码 69 3.3.3 各种特性的测试 71 第4章 进程间通信与消息队列 74 4.1 进程间通信 74 4.2 队列的特点和基本操作 75 4.2.1 队列的创建和存储 75 4.2.2 向队列写入数据 76 4.2.3 从队列读取数据 77 4.2.4 队列操作相关函数 78 4.3 队列使用示例 79 4.3.1 示例功能和CubeMX项目设置 79 4.3.2 初始代码分析 80 4.3.3 实现用户功能 82 第5章 信号量 86 5.1 信号量和互斥量概述 86 5.1.1 二值信号量 86 5.1.2 计数信号量 87 5.1.3 互斥量 87 5.1.4 递归互斥量 88 5.1.5 相关函数概述 88 5.2 二值信号量使用示例 90 5.2.1 二值信号量操作相关函数详解 90 5.2.2 示例功能和CubeMX项目设置 92 5.2.3 程序功能实现 94 5.3 计数信号量使用示例 98 5.3.1 计数信号量操作相关函数详解 98 5.3.2 示例功能和CubeMX项目设置 99 5.3.3 程序功能实现 100 第6章 互斥量 104 6.1 优先级翻转问题 104 6.2 互斥量的工作原理 105 6.2.1 优先级继承 105 6.2.2 互斥量相关函数详解 105 6.3 优先级翻转示例 106 6.3.1 示例功能和CubeMX项目设置 106 6.3.2 程序功能实现 107 6.4 互斥量使用示例 111 6.4.1 示例功能和CubeMX项目设置 111 6.4.2 程序功能实现 111 第7章 事件组 115 7.1 事件组的原理和功能 115 7.1.1 事件组的功能特点 115 7.1.2 事件组的工作原理 115 7.2 事件组相关函数 116 7.2.1 相关函数概述 116 7.2.2 部分函数详解 117 7.3 事件组使用示例 120 7.3.1 示例功能和CubeMX项目设置 120 7.3.2 程序功能实现 120 7.4 通过事件组进行多任务同步 125 7.4.1 多任务同步原理 125 7.4.2 示例功能和CubeMX项目设置 126 7.4.3 程序功能实现 127 第8章 任务通知 132 8.1 任务通知的原理和功能 132 8.2 任务通知的相关函数 133 8.2.1 相关函数概述 133 8.2.2 函数详解 134 8.3 示例一:使用任务通知传递数据 137 8.3.1 示例功能与CubeMX项目设置 137 8.3.2 程序功能实现 138 8.4 示例二:将任务通知用作计数信号量 141 8.4.1 示例功能 141 8.4.2 CubeMX项目设置 141 8.4.3 程序功能实现 142 第9章 流缓冲区和消息缓冲区 145 9.1 流缓冲区功能概述 145 9.2 流缓冲区操作的相关函数 146 9.2.1 相关函数概述 146 9.2.2 部分函数详解 146 9.2.3 表示发送完成和接收完成的宏 149 9.3 流缓冲区使用示例 149 9.3.1 示例功能与CubeMX项目设置 149 9.3.2 程序功能实现 151 9.4 消息缓冲区功能概述 154 9.5 消息缓冲区操作相关函数 154 9.5.1 相关函数概述 154 9.5.2 部分函数详解 155 9.6 消息缓冲区使用示例 157 9.6.1 示例功能与CubeMX项目设置 157 9.6.2 程序功能实现 158 第 10章 软件定时器 162 10.1 软件定时器概述 162 10.1.1 软件定时器的特性 162 10.1.2 软件定时器的相关配置 163 10.1.3 定时器服务任务的优先级 163 10.2 软件定时器的相关函数 164 10.2.1 相关函数概述 164 10.2.2 部分函数详解 165 10.3 软件定时器使用示例 169 10.3.1 示例功能和CubeMX项目设置 169 10.3.2 程序功能实现 170 第 11章 空闲任务与低功耗 174 11.1 HAL和FreeRTOS的基础时钟 174 11.1.1 使用SysTick作为HAL的基础时钟 174 11.1.2 使用其他定时器作为HAL的基础时钟 177 11.1.3 FreeRTOS的基础时钟 179 11.2 空闲任务与低功耗处理 182 11.2.1 实现原理 182 11.2.2 设计示例 183 11.3 Tickless低功耗模式 186 11.3.1 Tickless模式的原理和功能 186 11.3.2 Tickless模式的使用示例 187 第二部分 FatFS管理文件系统 第 12章 FatFS和文件系统 192 12.1 FatFS概述 192 12.1.1 FatFS的作用 192 12.1.2 文件系统的一些基本概念 193 12.1.3 FatFS的功能特点和参数 194 12.1.4 FatFS的文件组成 195 12.1.5 FatFS的基本数据类型定义 196 12.2 FatFS的应用程序接口函数 197 12.2.1 卷管理和系统配置相关函数 197 12.2.2 文件和目录管理相关函数 200 12.2.3 目录访问相关函数 203 12.2.4 文件访问相关函数 204 12.3 FatFS的存储介质访问函数 208 12.4 针对SPI-Flash芯片移植FatFS 209 12.4.1 SPI-Flash芯片硬件电路 209 12.4.2 CubeMX项目基础设置 210 12.4.3 在CubeMX中设置FatFS 210 12.4.4 项目中FatFS的文件组成 216 12.4.5 FatFS初始化过程 218 12.4.6 针对SPI-Flash芯片的Disk IO函数实现 226 12.5 在SPI-Flash芯片上使用文件系统 231 12.5.1 主程序功能 231 12.5.2 磁盘格式化 234 12.5.3 获取FAT磁盘信息 234 12.5.4 扫描根目录下的文件和子目录 236 12.5.5 创建文件和目录 237 12.5.6 读取文本文件 239 12.5.7 读取二进制文件 239 12.5.8 获取文件信息 241 12.5.9 文件file_opera.h的完整定义 242 第 13章 直接访问SD卡 245 13.1 SD卡简介 245 13.1.1 SD卡的分类 245 13.1.2 常规SD卡的接口 246 13.2 SDIO接口硬件电路 247 13.2.1 STM32F407的SDIO接口 247 13.2.2 开发板上的microSD卡连接电路 248 13.3 SDIO接口和SD卡的HAL驱动程序 249 13.3.1 SD驱动程序概述 250 13.3.2 初始化和配置函数 251 13.3.3 读取SD卡的参数信息 251 13.3.4 获取SD卡的当前状态 255 13.3.5 以轮询方式读写SD卡 255 13.3.6 以中断方式读写SD卡 256 13.3.7 以DMA方式读写SD卡 256 13.4 示例一:以轮询方式读写SD卡 257 13.4.1 示例功能与CubeMX项目设置 257 13.4.2 主程序与SDIO接口/SD卡初始化 259 13.4.3 程序功能实现 260 13.5 示例二:以DMA方式读写SD卡 264 13.5.1 示例功能与CubeMX项目设置 264 13.5.2 主程序与外设初始化 265 13.5.3 程序功能实现 268 第 14章 用FatFS管理SD卡文件系统 272 14.1 SD卡文件系统概述 272 14.2 示例一:阻塞式访问SD卡 272 14.2.1 示例功能与CubeMX项目设置 272 14.2.2 项目文件组成和初始代码分析 274 14.2.3 SD卡的Disk IO函数实现 278 14.2.4 SD卡文件管理功能的实现 284 14.3 示例二:以DMA方式访问SD卡 288 14.3.1 示例功能和CubeMX项目设置 288 14.3.2 Disk IO函数实现代码分析 289 14.3.3 SD卡文件管理功能的实现 291 第 15章 用FatFS管理U盘文件系统 295 15.1 USB概述 295 15.1.1 USB协议 295 15.1.2 USB设备类型 296 15.1.3 USB接口类型 296 15.2 STM32F407的USB-OTG接口 298 15.2.1 USB-OTG概述 298 15.2.2 USB-OTG FS 299 15.2.3 开发板上的USB接口电路 302 15.3 作为USB Host读写U盘 303 15.3.1 示例功能和CubeMX项目设置 303 15.3.2 项目文件组成和初始代码分析 307 15.3.3 USBH状态变化测试 316 15.3.4 U盘文件管理功能实现 318 第 16章 USB-OTG用作USB MSC外设 324 16.1 开发板作为USB MSC外设的原理 324 16.2 示例一:SD卡读卡器 326 16.2.1 示例功能和CubeMX项目设置 326 16.2.2 项目文件组成和初始代码分析 328 16.2.3 程序功能实现 333 16.3 示例二:增加FatFS管理本机文件功能 336 16.3.1 示例功能和CubeMX项目设置 336 16.3.2 程序功能实现 337 16.3.3 运行测试 340 第 17章 在FreeRTOS中使用FatFS 341 17.1 在RTOS中使用FatFS需考虑的问题 341 17.1.1 可重入性问题 341 17.1.2 FatFS的可重入性 341 17.2 FreeRTOS中使用FatFS的示例 343 17.2.1 示例功能和CubeMX项目设置 343 17.2.2 项目文件组成和初始代码分析 346 17.2.3 FatFS API函数的重入性实现原理 350 17.2.4 添加用户功能代码 354 第三部分 图片的获取与显示 第 18章 BMP图片 360 18.1 LCD显示图片的原理 360 18.1.1 像素颜色的表示 360 18.1.2 根据图片的RGB565数据显示图片 360 18.2 图片显示示例 362 18.2.1 示例功能与CubeMX项目配置 362 18.2.2 程序功能实现 363 18.3 BMP图片文件的格式 368 18.3.1 BMP图片文件的数据分段 368 18.3.2 位图文件头 368 18.3.3 位图信息头 369 18.3.4 位图数据 370 18.4 BMP图片文件的读写操作示例 370 18.4.1 示例功能和CubeMX项目设置 370 18.4.2 程序功能实现 372 18.4.3 BMP文件操作驱动程序 377 第 19章 JPG图片 387 19.1 JPEG和LIBJPEG 387 19.2 JPG图片文件的读写操作示例 388 19.2.1 示例功能和CubeMX项目设置 388 19.2.2 程序功能实现 389 19.2.3 JPG文件操作驱动程序 395 第 20章 电阻式触摸屏 405 20.1 电阻式触摸屏的工作原理 405 20.2 电阻式触摸屏的软硬件接口 406 20.3 示例一:轮询方式检测触摸屏输出 407 20.3.1 示例功能 407 20.3.2 CubeMX项目设置 407 20.3.3 主程序功能实现 409 20.3.4 GUI界面的创建与交互操作 413 20.3.5 电阻式触摸屏驱动程序 420 20.4 示例二:中断方式获取触摸屏输出 426 20.4.1 示例功能和CubeMX项目设置 426 20.4.2 程序功能实现 427 第 21章 电容式触摸屏 431 21.1 电容式触摸屏的工作原理 431 21.2 电容式触摸屏的软硬件接口 431 21.2.1 电容式触摸屏接口 431 21.2.2 电容式触摸屏控制芯片功能 433 21.3 电容触摸屏的使用示例 437 21.3.1 示例功能和CubeMX项目设置 437 21.3.2 程序功能实现 438 21.3.3 电容触摸屏驱动程序 443 第 22章 DCMI接口和数字摄像头 455 22.1 数字摄像头 455 22.1.1 数字摄像头概述 455 22.1.2 OV7670图像传感器的功能和接口 456 22.1.3 OV7670数据输出时序和格式 457 22.1.4 SCCB通信 458 22.1.5 OV7670的寄存器 460 22.2 DCMI接口 461 22.2.1 DCMI接口概述 461 22.2.2 DCMI接口传输时序 462 22.2.3 DCMI数据存储格式 463 22.2.4 DCMI图像采集方式 464 22.2.5 DCMI的中断 465 22.3 DCMI的HAL驱动 465 22.3.1 主要驱动函数概述 465 22.3.2 DCMI接口初始化 466 22.3.3 DCMI的采集控制 467 22.4 DCMI和摄像头使用示例 467 22.4.1 摄像头模块 467 22.4.2 开发板与摄像头模块的连接 468 22.4.3 示例功能与CubeMX项目设置 470 22.4.4 程序功能实现 474 附录A CubeMX模板项目和公共驱动程序的使用 487 A.1 公共驱动程序的目录组成 487 A.2 CubeMX模板项目 488 A.3 新建CubeMX项目后导入模板项目的配置 488 A.4 复制模板项目以新建CubeMX项目 490 A.5 在CubeIDE中设置驱动程序搜索路径 490 附录B 复制一个项目 493 附录C 开发板功能模块 494 附录D 本书示例列表 498 附录E 缩略词 501 参考文献 503 ==参考文献== [[Category:040 類書總論;百科全書總論]]
返回「
STM32Cube高效开发教程高级篇
」頁面