logo
分类于: 其它

简介

STM32库开发实战指南: 基于STM32F4

STM32库开发实战指南: 基于STM32F4 0.0分

资源最后更新于 2020-03-29 02:00:19

作者:刘火良杨森

出版社:出版社机械工业出版社

出版日期:2017-02

文件格式: pdf

标签: 指南 系统开发 单片机与嵌入式 华章科技 微控制器 STM32F4

简介· · · · · ·

本书着重讲解STM32F429的外设以及外设的应用,力争全面分析每个外设的功能框图和使用方法,让读者可以零死角地玩转STM32F429。刘火良:网名野火,嵌入式开发工程师,野火嵌入式开发工作室的创始人,长期从事基于ARMCortex—M系列MCLJ嵌入式开发工作,积累了丰富的实战开发经验。作者在国内最受嵌入式开发工程师欢迎的阿莫电子论坛中担任版主。担任版主期间,为网友贡献了大量的实战开发教程和资料,累计下载量超过3万次,且被广泛转载,深得网友喜爱。杨森:网名flyleaf,嵌入式开发工程师,野火嵌入式开发工作室发起人,对嵌入式实时操作系统有深入的研究和理解。曾推出《从零开始移植uC/OS到野火STM32开发板》,以全新的视角自上而下讲解uC/OS移植方法,深受网友好评。
直接下载

想要: 点击会收藏到你的 我的收藏,可以在这里查看

已收: 表示已经收藏

Tips: 注册一个用户 可以通过用户中心得到电子书更新的通知哦

目录

  1. 前言
  2. 第1章 如何安装KEIL5
  3. 1.1 温馨提示
  4. 1.2 获取KEIL5安装包
  5. 1.3 开始安装KEIL5
  6. 1.4 安装STM32芯片包
  7. 第2章 如何用DAP仿真器下载程序
  8. 2.1 仿真器简介
  9. 2.2 硬件连接
  10. 2.3 仿真器配置
  11. 2.4 选择目标板
  12. 2.5 下载程序
  13. 第3章 初识STM32
  14. 3.1 什么是STM32
  15. 3.2 STM32能做什么
  16. 3.2.1 智能手环
  17. 3.2.2 微型四轴飞行器
  18. 3.2.3 淘宝众筹
  19. 3.3 STM32选型
  20. 3.3.1 STM32分类
  21. 3.3.2 STM32命名方法
  22. 3.3.3 选择合适的MCU
  23. 第4章 寄存器
  24. 4.1 寄存器简介
  25. 4.2 STM32的外观
  26. 4.3 芯片里面有什么
  27. 4.4 存储器映射
  28. 4.5 寄存器映射
  29. 4.5.1 STM32的外设地址映射
  30. 4.5.2 C语言对寄存器的封装
  31. 第5章 新建工程——寄存器版
  32. 5.1 新建本地工程文件夹工程
  33. 5.1.1 新建本地工程文件夹
  34. 5.1.2 新建工程
  35. 5.2 下载程序
  36. 第6章 使用寄存器点亮LED
  37. 6.1 GPIO简介
  38. 6.2 GPIO框图剖析
  39. 6.2.1 基本结构分析
  40. 6.2.2 GPIO工作模式
  41. 6.3 实验:使用寄存器点亮LED
  42. 6.3.1 硬件连接
  43. 6.3.2 启动文件
  44. 6.3.3 stm32f4xx.h文件
  45. 6.3.4 main文件
  46. 6.3.5 下载验证
  47. 第7章 自己写库——构建库函数雏形
  48. 7.1 STM32函数库简介
  49. 7.2 采用库来开发及学习的原因
  50. 7.3 实验:构建库函数雏形
  51. 7.3.1 修改寄存器地址封装
  52. 7.3.2 定义访问外设的结构体指针
  53. 7.3.3 定义初始化结构体
  54. 7.3.4 定义引脚模式的枚举类型
  55. 7.3.5 定义GPIO初始化函数
  56. 7.3.6 使用函数点亮LED
  57. 7.3.7 下载验证
  58. 7.3.8 总结
  59. 第8章 初识STM32标准库
  60. 8.1 CMSIS标准及库层次关系
  61. 8.1.1 库目录、文件简介
  62. 8.1.2 各库文件间的关系
  63. 8.2 使用帮助文档
  64. 8.2.1 常用官方资料
  65. 8.2.2 初识库函数
  66. 第9章 新建工程——库函数版
  67. 9.1 新建本地工程文件夹
  68. 9.2 新建工程
  69. 9.3 配置魔术棒选项卡
  70. 9.4 下载器配置
  71. 9.5 选择Flash大小
  72. 第10章 GPIO输出——使用固件库点亮LED
  73. 10.1 硬件设计
  74. 10.2 软件设计
  75. 10.2.1 编程要点
  76. 10.2.2 代码分析
  77. 10.2.3 下载验证
  78. 10.3 STM32标准库补充知识
  79. 第11章 GPIO输入——按键检测
  80. 11.1 硬件设计
  81. 11.2 软件设计
  82. 11.2.1 编程要点
  83. 11.2.2 代码分析
  84. 11.2.3 下载验证
  85. 第12章 GPIO——位带操作
  86. 12.1 位带简介
  87. 12.1.1 外设位带区
  88. 12.1.2 SRAM位带区
  89. 12.1.3 位带区和位带别名区地址转换
  90. 12.2 GPIO位带操作
  91. 第13章 启动文件
  92. 13.1 启动文件简介
  93. 13.2 查找ARM汇编指令
  94. 13.3 启动文件代码讲解
  95. 第14章 RCC——使用HSE/HSI配置时钟
  96. 14.1 RCC主要作用——时钟部分
  97. 14.2 RCC框图剖析——时钟树
  98. 14.2.1 系统时钟
  99. 14.2.2 其他时钟
  100. 14.3 配置系统时钟实验
  101. 14.3.1 使用HSE
  102. 14.3.2 使用HSI
  103. 14.3.3 硬件设计
  104. 14.3.4 软件设计
  105. 14.3.5 下载验证
  106. 第15章 STM32中断应用概览
  107. 15.1 异常类型
  108. 15.2 NVIC简介
  109. 15.2.1 NVIC寄存器简介
  110. 15.2.2 NVIC中断配置固件库
  111. 15.3 优先级的定义
  112. 15.3.1 优先级定义
  113. 15.3.2 优先级分组
  114. 15.4 中断编程
  115. 第16章 EXTI——外部中断/事件控制器
  116. 16.1 EXTI简介
  117. 16.2 EXTI功能框图
  118. 16.3 中断/事件线
  119. 16.4 EXTI初始化结构体详解
  120. 16.5 外部中断控制实验
  121. 16.5.1 硬件设计
  122. 16.5.2 软件设计
  123. 16.5.3 下载验证
  124. 第17章 SysTick——系统定时器
  125. 17.1 SysTick简介
  126. 17.2 SysTick寄存器介绍
  127. 17.3 SysTick定时实验
  128. 17.3.1 硬件设计
  129. 17.3.2 软件设计
  130. 第18章 通信的基本概念
  131. 18.1 串行通信与并行通信
  132. 18.2 全双工、半双工及单工通信
  133. 18.3 同步通信与异步通信
  134. 18.4 通信速率
  135. 第19章 USART——串口通信
  136. 19.1 串口通信协议简介
  137. 19.1.1 物理层
  138. 19.1.2 协议层
  139. 19.2 STM32的USART简介
  140. 19.3 USART功能框图
  141. 19.4 USART初始化结构体详解
  142. 19.5 USART1接发通信实验
  143. 19.5.1 硬件设计
  144. 19.5.2 软件设计
  145. 19.5.3 下载验证
  146. 19.6 USART1指令控制RGB彩灯实验
  147. 19.6.1 硬件设计
  148. 19.6.2 软件设计
  149. 19.6.3 下载验证
  150. 第20章 DMA
  151. 20.1 DMA简介
  152. 20.2 DMA功能框图
  153. 20.3 DMA数据配置
  154. 20.4 DMA初始化结构体详解
  155. 20.5 DMA存储器到存储器模式实验
  156. 20.5.1 硬件设计
  157. 20.5.2 软件设计
  158. 20.5.3 下载验证
  159. 20.6 DMA存储器到外设模式实验
  160. 20.6.1 硬件设计
  161. 20.6.2 软件设计
  162. 20.6.3 下载验证
  163. 第21章 常用存储器介绍
  164. 21.1 存储器种类
  165. 21.2 RAM存储器
  166. 21.2.1 DRAM
  167. 21.2.2 SRAM
  168. 21.2.3 DRAM与SRAM的应用场合
  169. 21.3 非易失性存储器
  170. 21.3.1 ROM存储器
  171. 21.3.2 Flash存储器
  172. 第22章 I\(^{2}\)C——读写EEPROM
  173. 22.1 I\(^{2}\)C协议简介
  174. 22.1.1 I\(^{2}\)C物理层
  175. 22.1.2 协议层
  176. 22.2 STM32的I\(^{2}\)C特性及架构
  177. 22.2.1 STM32的I\(^{2}\)C外设简介
  178. 22.2.2 STM32的I\(^{2}\)C架构剖析
  179. 22.2.3 通信过程
  180. 22.3 I\(^{2}\)C初始化结构体详解
  181. 22.4 I\(^{2}\)C——读写EEPROM实验
  182. 22.4.1 硬件设计
  183. 22.4.2 软件设计
  184. 22.4.3 下载验证
  185. 第23章 SPI——读写串行Flash
  186. 23.1 SPI协议简介
  187. 23.1.1 SPI物理层
  188. 23.1.2 协议层
  189. 23.2 STM32的SPI特性及架构
  190. 23.2.1 STM32的SPI外设简介
  191. 23.2.2 STM32的SPI架构剖析
  192. 23.2.3 通信过程
  193. 23.3 SPI初始化结构体详解
  194. 23.4 SPI——读写串行Flash实验
  195. 23.4.1 硬件设计
  196. 23.4.2 软件设计
  197. 23.4.3 下载验证
  198. 第24章 串行Flash文件系统FatFs
  199. 24.1 文件系统
  200. 24.2 FatFs文件系统简介
  201. 24.2.1 FatFs的目录结构
  202. 24.2.2 FatFs帮助文档
  203. 24.2.3 FatFs源码
  204. 24.3 FatFs文件系统移植实验
  205. 24.3.1 FatFs程序结构图
  206. 24.3.2 硬件设计
  207. 24.3.3 FatFs移植步骤
  208. 24.3.4 FatFs底层设备驱动函数
  209. 24.3.5 FatFs功能配置
  210. 24.3.6 FatFs功能测试
  211. 24.3.7 下载验证
  212. 24.4 FatFs功能使用实验
  213. 24.4.1 硬件设计
  214. 24.4.2 软件设计
  215. 24.4.3 下载验证
  216. 第25章 FMC——扩展外部SDRAM
  217. 25.1 SDRAM控制原理
  218. 25.1.1 SDRAM信号线
  219. 25.1.2 控制逻辑
  220. 25.1.3 地址控制
  221. 25.1.4 SDRAM的存储阵列
  222. 25.1.5 数据输入输出
  223. 25.1.6 SDRAM的命令
  224. 25.1.7 SDRAM的初始化流程
  225. 25.1.8 SDRAM的读写流程
  226. 25.2 FMC简介
  227. 25.3 FMC框图剖析
  228. 25.4 FMC的地址映射
  229. 25.5 SDRAM时序结构体
  230. 25.6 SDRAM初始化结构体
  231. 25.7 SDRAM命令结构体
  232. 25.8 FMC——扩展外部SDRAM实验
  233. 25.8.1 硬件设计
  234. 25.8.2 软件设计
  235. 25.8.3 下载验证
  236. 第26章 LTDC/DMA2D——液晶显示
  237. 26.1 显示器简介
  238. 26.1.1 液晶显示器
  239. 26.1.2 LED和OLED显示器
  240. 26.1.3 显示器的基本参数
  241. 26.2 液晶屏控制原理
  242. 26.2.1 液晶面板的控制信号
  243. 26.2.2 液晶数据传输时序
  244. 26.2.3 显存
  245. 26.3 LTDC液晶控制器简介
  246. 26.3.1 图像数据混合
  247. 26.3.2 LTDC结构框图剖析
  248. 26.4 DMA2D图形加速器简介
  249. 26.5 LTDC初始化结构体
  250. 26.6 LTDC层级初始化结构体
  251. 26.7 DMA2D初始化结构体
  252. 26.8 LTDC/DMA2D——液晶显示实验
  253. 26.8.1 硬件设计
  254. 26.8.2 软件设计
  255. 26.8.3 下载验证
  256. 第27章 LTDC——液晶显示中英文
  257. 27.1 字符编码
  258. 27.1.1 ASCII编码
  259. 27.1.2 中文编码
  260. 27.1.3 Unicode字符集和编码
  261. 27.1.4 UTF-32
  262. 27.1.5 UTF-16
  263. 27.1.6 UTF-8
  264. 27.1.7 BOM
  265. 27.2 字模简介
  266. 27.2.1 字模的构成
  267. 27.2.2 字模显示原理
  268. 27.2.3 如何制作字模
  269. 27.2.4 字模寻址公式
  270. 27.2.5 存储字模文件
  271. 27.3 LTDC——各种模式的液晶显示字符实验
  272. 27.3.1 硬件设计
  273. 27.3.2 显示ASCII编码的字符
  274. 27.3.3 显示GB2312编码的字符
  275. 27.3.4 显示任意大小的字符
  276. 27.3.5 下载验证
  277. 第28章 电容触摸屏——触摸画板
  278. 28.1 触摸屏简介
  279. 28.1.1 电阻触摸屏检测原理
  280. 28.1.2 电容触摸屏检测原理
  281. 28.2 电容触摸屏控制芯片
  282. 28.2.1 GT9157芯片的引脚
  283. 28.2.2 上电时序与I\(^{2}\)C设备地址
  284. 28.2.3 寄存器配置
  285. 28.2.4 读取坐标信息
  286. 28.3 电容触摸屏——触摸画板实验
  287. 28.3.1 硬件设计
  288. 28.3.2 软件设计
  289. 28.3.3 下载验证
  290. 第29章 ADC——电压采集
  291. 29.1 ADC简介
  292. 29.2 ADC功能框图剖析
  293. 29.2.1 ADC功能
  294. 29.2.2 电压转换
  295. 29.3 ADC初始化结构体详解
  296. 29.4 独立模式单通道采集实验
  297. 29.4.1 硬件设计
  298. 29.4.2 软件设计
  299. 29.4.3 下载验证
  300. 29.5 独立模式多通道采集实验
  301. 29.5.1 硬件设计
  302. 29.5.2 软件设计
  303. 29.5.3 下载验证
  304. 29.6 三重ADC交替模式采集实验
  305. 29.6.1 硬件设计
  306. 29.6.2 软件设计
  307. 29.6.3 下载验证
  308. 第30章 TIM——基本定时器
  309. 30.1 TIM简介
  310. 30.2 基本定时器
  311. 30.3 基本定时器功能框图
  312. 30.4 定时器初始化结构体详解
  313. 30.5 基本定时器定时实验
  314. 30.5.1 硬件设计
  315. 30.5.2 软件设计
  316. 30.5.3 下载验证
  317. 第31章 TIM——高级定时器
  318. 31.1 高级控制定时器
  319. 31.2 高级控制定时器功能框图
  320. 31.3 输入捕获应用
  321. 31.3.1 测量脉宽或者频率
  322. 31.3.2 PWM输入模式
  323. 31.4 输出比较应用
  324. 31.5 定时器初始化结构体详解
  325. 31.6 PWM互补输出实验
  326. 31.6.1 硬件设计
  327. 31.6.2 软件设计
  328. 31.6.3 下载验证
  329. 31.7 PWM输入捕获实验
  330. 31.7.1 硬件设计
  331. 31.7.2 软件设计
  332. 31.7.3 下载验证
  333. 第32章 TIM——电容按键检测
  334. 32.1 电容按键原理
  335. 32.2 电容按键检测实验
  336. 32.2.1 硬件设计
  337. 32.2.2 软件设计
  338. 32.2.3 下载验证
  339. 第33章 SDIO——SD卡读写测试
  340. 33.1 SDIO简介
  341. 33.2 SD卡物理结构
  342. 33.3 SDIO总线
  343. 33.3.1 总线拓扑
  344. 33.3.2 总线协议
  345. 33.3.3 命令
  346. 33.3.4 响应
  347. 33.4 SD卡的操作模式及切换
  348. 33.4.1 SD卡的操作模式
  349. 33.4.2 卡识别模式
  350. 33.4.3 数据传输模式
  351. 33.5 STM32的SDIO功能框图
  352. 33.6 SDIO初始化结构体
  353. 33.7 SDIO命令初始化结构体
  354. 33.8 SDIO数据初始化结构体
  355. 33.9 SD卡读写测试实验
  356. 33.9.1 硬件设计
  357. 33.9.2 软件设计
  358. 33.9.3 下载验证
  359. 第34章 基于SD卡的FatFs文件系统
  360. 34.1 FatFs移植步骤
  361. 34.2 FatFs接口函数
  362. 34.3 FatFs功能测试
  363. 第35章 I\(^{2}\)S——音频播放与录音输入
  364. 35.1 I\(^{2}\)S简介
  365. 35.1.1 数字音频技术
  366. 35.1.2 I\(^{2}\)S总线接口
  367. 35.1.3 音频数据传输协议标准
  368. 35.2 I\(^{2}\)S功能框图
  369. 35.3 WM8978音频编译码器
  370. 35.4 WAV格式文件
  371. 35.4.1 RIFF文件规范
  372. 35.4.2 WAV文件
  373. 35.4.3 WAV文件实例分析
  374. 35.5 I\(^{2}\)S初始化结构体详解
  375. 35.6 录音与回放实验
  376. 35.6.1 硬件设计
  377. 35.6.2 软件设计
  378. 35.6.3 下载验证
  379. 35.7 MP3播放器
  380. 35.7.1 MP3文件结构
  381. 35.7.2 MP3解码库
  382. 35.7.3 Helix解码库移植
  383. 35.7.4 MP3播放器功能实现
  384. 35.7.5 下载验证
  385. 第36章 ETH——LwIP以太网通信
  386. 36.1 互联网模型
  387. 36.2 以太网
  388. 36.2.1 PHY层
  389. 36.2.2 MAC子层
  390. 36.3 TCP/IP协议栈
  391. 36.3.1 需要协议栈的原因
  392. 36.3.2 各网络层的功能
  393. 36.4 以太网外设
  394. 36.4.1 SMI接口
  395. 36.4.2 MII和RMII接口
  396. 36.4.3 MAC数据包发送和接收
  397. 36.4.4 MAC过滤
  398. 36.5 PHY:LAN8720A
  399. 36.6 LwIP:轻型TCP/IP协议栈
  400. 36.7 ETH初始化结构体详解
  401. 36.8 以太网通信实验:无操作系统LwIP移植
  402. 36.8.1 硬件设计
  403. 36.8.2 移植步骤
  404. 36.8.3 下载验证
  405. 36.9 基于μCOS-III移植LwIP实验
  406. 第37章 CAN——通信实验
  407. 37.1 CAN协议简介
  408. 37.1.1 CAN物理层
  409. 37.1.2 协议层
  410. 37.2 STM32的CAN外设简介
  411. 37.3 CAN初始化结构体
  412. 37.4 CAN发送及接收结构体
  413. 37.5 CAN筛选器结构体
  414. 37.6 CAN——双机通信实验
  415. 37.6.1 硬件设计
  416. 37.6.2 软件设计
  417. 37.6.3 下载验证
  418. 第38章 RS-485通信实验
  419. 38.1 RS-485通信协议简介
  420. 38.2 RS-485——双机通信实验
  421. 38.2.1 硬件设计
  422. 38.2.2 软件设计
  423. 38.2.3 下载验证
  424. 第39章 电源管理——实现低功耗
  425. 39.1 STM32的电源管理简介
  426. 39.1.1 电源监控器
  427. 39.1.2 STM32的电源系统
  428. 39.1.3 STM32的功耗模式
  429. 39.2 电源管理相关的库函数及命令
  430. 39.2.1 配置PVD监控功能
  431. 39.2.2 WFI与WFE命令
  432. 39.2.3 进入停止模式
  433. 39.2.4 进入待机模式
  434. 39.3 PWR——睡眠模式实验
  435. 39.3.1 硬件设计
  436. 39.3.2 软件设计
  437. 39.3.3 下载验证
  438. 39.4 PWR——停止模式实验
  439. 39.4.1 硬件设计
  440. 39.4.2 软件设计
  441. 39.4.3 下载验证
  442. 39.5 PWR——待机模式实验
  443. 39.5.1 硬件设计
  444. 39.5.2 软件设计
  445. 39.5.3 下载验证
  446. 39.6 PWR——PVD电源监控实验
  447. 39.6.1 硬件设计
  448. 39.6.2 软件设计
  449. 39.6.3 下载验证
  450. 第40章 RTC——实时时钟
  451. 40.1 RTC简介
  452. 40.2 RTC功能框图解析
  453. 40.3 RTC初始化结构体讲解
  454. 40.4 RTC时间结构体讲解
  455. 40.5 RTC日期结构体讲解
  456. 40.6 RTC闹钟结构体讲解
  457. 40.7 RTC—日历实验
  458. 40.7.1 硬件设计
  459. 40.7.2 软件设计
  460. 40.7.3 下载验证
  461. 40.8 RTC—闹钟实验
  462. 40.8.1 硬件设计
  463. 40.8.2 软件设计
  464. 40.8.3 下载验证
  465. 第41章 DCMI——OV5640摄像头
  466. 41.1 摄像头简介
  467. 41.1.1 数字摄像头与模拟摄像头的区别
  468. 41.1.2 CCD与CMOS的区别
  469. 41.2 OV5640摄像头
  470. 41.2.1 OV5640传感器简介
  471. 41.2.2 OV5640引脚及功能框图
  472. 41.2.3 SCCB时序
  473. 41.2.4 OV5640的寄存器
  474. 41.2.5 像素数据输出时序
  475. 41.3 STM32的DCMI接口简介
  476. 41.3.1 DCMI整体框图
  477. 41.3.2 DCMI接口内部结构
  478. 41.3.3 同步方式
  479. 41.3.4 捕获模式及捕获率
  480. 41.4 DCMI初始化结构体
  481. 41.5 DCMI——OV5640摄像头实验
  482. 41.5.1 硬件设计
  483. 41.5.2 软件设计
  484. 41.5.3 下载验证
  485. 第42章 MDK的编译过程及文件类型全解
  486. 42.1 编译过程
  487. 42.1.1 编译过程简介
  488. 42.1.2 具体工程中的编译过程
  489. 42.2 程序的组成、存储与运行
  490. 42.2.1 CODE、RO、RW、ZI Data域及堆栈空间
  491. 42.2.2 程序的存储与运行
  492. 42.3 编译工具链
  493. 42.3.1 设置环境变量
  494. 42.3.2 armcc、armasm及armlink
  495. 42.3.3 armar、fromelf及用户指令
  496. 42.4 MDK工程的文件类型
  497. 42.4.1 uvprojx、uvoptx、uvguix及ini工程文件
  498. 42.4.2 源文件
  499. 42.4.3 Output目录下生成的文件
  500. 42.4.4 Listing目录下的文件
  501. 42.4.5 sct分散加载文件的格式与应用
  502. 42.5 实验:自动分配变量到外部SDRAM空间
  503. 42.5.1 硬件设计
  504. 42.5.2 软件设计
  505. 42.5.3 下载验证
  506. 42.6 实验:优先使用内部SRAM并把堆区分配到SDRAM空间
  507. 42.6.1 硬件设计
  508. 42.6.2 软件设计
  509. 42.6.3 下载验证
  510. 第43章 在SRAM中调试代码
  511. 43.1 在RAM中调试代码
  512. 43.2 STM32的启动方式
  513. 43.3 内部Flash的启动过程
  514. 43.4 实验:在内部SRAM中调试代码
  515. 43.4.1 硬件设计
  516. 43.4.2 软件设计
  517. 43.4.3 下载验证
  518. 第44章 读写内部Flash
  519. 44.1 STM32的内部Flash简介
  520. 44.2 对内部Flash的写入过程
  521. 44.3 查看工程的空间分布
  522. 44.4 操作内部Flash的库函数
  523. 44.5 实验:读写内部Flash
  524. 44.5.1 硬件设计
  525. 44.5.2 软件设计
  526. 44.5.3 下载验证
  527. 第45章 设置Flash的读写保护及解除
  528. 45.1 选项字节与读写保护
  529. 45.1.1 选项字节的内容
  530. 45.1.2 RDP读保护级别
  531. 45.1.3 PCROP代码读出保护
  532. 45.2 修改选项字节的过程
  533. 45.3 操作选项字节的库函数
  534. 45.4 实验:设置读写保护及解除
  535. 45.4.1 硬件设计
  536. 45.4.2 软件设计
  537. 45.4.3 下载验证