图书简介:
第1章 STM32开发平台和工具 11.1 STM32芯片介绍 11.2 STM32核心板电路简介 21.3 STM32开发工具的安装与配置 81.3.1 安装Keil 5.20 81.3.2 配置Keil 5.20 101.4 STM32核心板可以开展的部分实验 101.5 本书配套的资料包 11本章任务 11本章习题 12第2章 实验1—F103基准工程 132.1 实验内容 132.2 实验原理 132.2.1 寄存器与固件库 132.2.2 Keil编辑和编译及STM32下载过程 172.2.3 STM32工程模块名称及说明 182.2.4 STM32参考资料 192.3 实验步骤 20本章任务 32本章习题 33第3章 实验2—串口电子钟 343.1 实验内容 343.2 实验原理 343.2.1 RunClock模块函数 343.2.2 函数调用框架 363.2.3 Proc2msTask与Proc1SecTask 373.3 实验步骤 38本章任务 42本章习题 42第4章 实验3—GPIO与流水灯 434.1 实验内容 434.2 实验原理 434.2.1 LED电路原理图 434.2.2 STM32系统架构与存储器组织 434.2.3 GPIO功能框图 464.2.4 GPIO部分寄存器 484.2.5 GPIO部分固件库函数 534.2.6 RCC部分寄存器 564.2.7 RCC部分固件库函数 574.3 实验步骤 58本章任务 63本章习题 64第5章 实验4—GPIO与独立按键输入 655.1 实验内容 655.2 实验原理 655.2.1 独立按键电路原理图 655.2.2 GPIO功能框图 655.2.3 GPIO部分寄存器 665.2.4 GPIO部分固件库函数 675.2.5 按键去抖原理 685.3 实验步骤 69本章任务 76本章习题 77第6章 实验5—串口通信 786.1 实验内容 786.2 实验原理 786.2.1 UART电路原理图 786.2.2 UART通信协议 796.2.3 UART功能框图 806.2.4 UART部分寄存器 846.2.5 UART部分固件库函数 886.2.6 STM32异常和中断 946.2.7 NVIC中断控制器 986.2.8 NVIC部分寄存器 986.2.9 NVIC部分固件库函数 1026.2.10 UART1模块驱动设计 1056.3 实验步骤 110本章任务 122本章习题 122第7章 实验6—定时器 1237.1 实验内容 1237.2 实验原理 1237.2.1 通用定时器功能框图 1237.2.2 通用定时器部分寄存器 1277.2.3 通用定时器部分固件库函数 1317.2.4 RCC部分寄存器 1337.2.5 RCC部分固件库函数 1347.3 实验步骤 134本章任务 141本章习题 141第8章 实验7—SysTick 1428.1 实验内容 1428.2 实验原理 1428.2.1 SysTick功能框图 1428.2.2 SysTick实验流程图分析 1438.2.3 SysTick部分寄存器 1448.2.4 SysTick部分固件库函数 1468.3 实验步骤 147本章任务 151本章习题 151第9章 实验8—RCC 1529.1 实验内容 1529.2 实验原理 1529.2.1 RCC功能框图 1529.2.2 RCC部分寄存器 1559.2.3 RCC部分固件库函数 1589.2.4 Flash部分寄存器 1639.2.5 Flash部分固件库函数 1649.3 实验步骤 165本章任务 169本章习题 169第10章 实验9—外部中断 17010.1 实验内容 17010.2 实验原理 17010.2.1 EXTI功能框图 17010.2.2 EXTI部分寄存器 17210.2.3 EXTI部分固件库函数 17510.2.4 AFIO部分寄存器 17710.2.5 AFIO部分固件库函数 18010.3 实验步骤 181本章任务 186本章习题 187第11章 实验10—OLED显示 18811.1 实验内容 18811.2 实验原理 18811.2.1 OLED显示模块 18811.2.2 SSD1306的显存 18911.2.3 SSD1306常用命令 19111.2.4 字模选项 19111.2.5 ASCⅡ码表与取模工具 19211.2.6 STM32的GRAM与SSD1306的GRAM 19311.2.7 OLED显示模块显示流程 19411.3 实验步骤 194本章任务 208本章习题 208第12章 实验11—独立看门狗 20912.1 实验内容 20912.2 实验原理 20912.2.1 独立看门狗功能框图 20912.2.2 独立看门狗最小喂狗时间 21012.2.3 独立看门狗实验流程图分析 21112.2.4 独立看门狗部分寄存器 21112.2.5 独立看门狗部分固件库函数 21412.3 实验步骤 216本章任务 221本章习题 221第13章 实验12—读/写内部Flash 22213.1 实验内容 22213.2 实验原理 22213.2.1 STM32的内部Flash和内部SRAM 22213.2.2 STM32的内部Flash简介 22313.2.3 STM32启动模式 22413.2.4 Flash编程过程 22413.2.5 Flash页擦除过程 22513.2.6 Flash部分寄存器 22613.2.7 Flash部分固件库函数 23113.3 实验步骤 232本章任务 241本章习题 241第14章 实验13—PWM输出 24214.1 实验内容 24214.2 实验原理 24214.2.1 PWM输出实验流程图分析 24214.2.2 通用定时器部分寄存器 24414.2.3 通用定时器部分固件库函数 24614.2.4 AFIO部分寄存器 24714.2.5 AFIO部分固件库函数 24814.3 实验步骤 249本章任务 255本章习题 255第15章 实验14—输入捕获 25615.1 实验内容 25615.2 实验原理 25615.2.1 输入捕获实验流程图分析 25615.2.2 通用定时器部分寄存器 25815.2.3 通用定时器部分固件库函数 26015.3 实验步骤 262本章任务 269本章习题 269第16章 实验15—DAC 27016.1 实验内容 27016.2 实验原理 27016.2.1 DAC功能框图 27016.2.2 DMA功能框图 27416.2.3 DAC实验逻辑图分析 27716.2.4 PCT通信协议 27716.2.5 PCT通信协议应用 28416.2.6 DAC部分寄存器 28616.2.7 DAC部分固件库函数 28916.2.8 DMA部分寄存器 29216.2.9 DMA部分固件库函数 29616.3 实验步骤 300本章任务 313本章习题 314第17章 实验16—ADC 31517.1 实验内容 31517.2 实验原理 31517.2.1 ADC功能框图 31517.2.2 ADC实验逻辑框图分析 31817.2.3 ADC实验中的ADC缓冲区 31917.2.4 ADC部分寄存器 31917.2.5 ADC部分固件库函数 32417.3 实验步骤 330本章任务 341本章习题 341附录A STM32核心板原理图 342附录B STM32F103RCT6引脚定义 343附录C C语言软件设计规范(LY-STD001—2019) 346参考文献 354
展开
本书是一本讲解STM32F1系列微控制器的书籍。无论电子工程、自动化、光电、机电、机器人专业,还是生物医学工程、医疗器械工程、康复工程专业,都要学习微控制器。然而,微控制器涉及面非常广,除了要掌握各种电路知识、C语言语法、计算机体系架构,还要熟悉微控制器的寄存器、固件库及各种集成开发环境、下载工具和串口调试工具。要想成为一名优秀的微控制器系统设计工程师,还需要进一步掌握软/硬件联合调试技能,具备模块化设计思想,并且能从宏观角度进行系统架构设计,能够灵活地将各种技术规范融入具体的项目中。天津大学李刚教授有句名言,“勇于实践+深入思考=真才实学”,而当今的高等院校工科生,最缺乏的就是勇于实践,没有大量的实践,就很难对某一个问题进行深入剖析和思考,当然,也就谈不上真才实学。随着时代的进步和发展,技术更新速度也越来越快,很多陈旧的技术在不断被淘汰。然而,很多高校依然是参照20世纪七八十年代的课程体系,或在此基础上增加一些新课程。这样,就出现了一个严重的问题:学生需要修读的学分越来越多,而每门课程的课时越来越少。然而,卓越工程师的培养必须配以高强度的实训。本书可以作为实训手册使用。16个实验都包括实验内容、实验原理、实验步骤、本章任务和本章习题5个环节。这些实验相对而言比较基础,而且每个实验都有详细的步骤和源代码,以确保读者能够顺利完成。另外,本书还对实验的内容、设计思路等进行了详细讲解,以保证读者能够深入理解这些实验涉及的知识点。每个实验的最后都有一个任务。这些任务是本章实验的延伸和拓展。因此,能够顺利完成并理解该章实验的读者,再加上深入思考,都能够完成这些任务。本章任务之后是本章习题,由若干小习题构成,用于检查读者是否真正掌握了本章的知识。现在的微控制器功能比以往强大很多,想要掌握其知识点,就必须花费大量的时间和精力。比如,学习某一款STM32微控制器,至少要阅读三本手册,分别是ARM公司的《ARM Cortex-M3权威指南》、ST公司的《STM32中文参考手册》和《STM32固件库使用手册》。这些手册加起来一千多页。另外,初学者还要花费大量的时间和精力熟悉STM32的集成开发环境、程序下载工具、串口助手工具等。为了减轻查找资料和熟悉工具的负担,促使读者将更多的精力聚集在实践环节,争取快速入门,本书将每个实验涉及的《STM32中文参考手册》《ARM Cortex-M3权威指南》和《STM32固件库使用手册》上的知识点统一汇总在实验原理一节,STM32集成开发环境、程序下载工具、串口助手工具等的使用也穿插于各个章节中。这样,读者就可以通过本书和一套STM32核心板,结合书中的实验内容、实验原理、实验步骤、本章任务和本章习题,按照“勇于实践+深入思考”的思想,轻松踏上学习STM32之路,在实践过程中不知不觉掌握各种知识和技能。简单总结一下本书的特点:(1)微控制器系统设计以一块STM32核心板作为实践载体。微控制器之所以选取STM32F103 RCT6,主要考虑到STM32是目前市面上使用最为广泛的微控制器。而且该系列的微控制器具有功耗低、外设多、基于库开发、配套资料多、开发板种类多等优势。(2)书中16个实验涉及的所有知识点均详细讲解,未涉及的知识点几乎不予讲解。这样,初学者就可以快速掌握微控制器系统设计的绝大多数基本知识点。(3)各种规范贯穿于整个微控制器系统设计的过程中,如Keil集成开发环境参数设置、工程和文件命名规范、版本规范、软件设计规范等。(4)所有实验严格按照统一的工程架构设计,每个子模块按照统一的标准设计。(5)配有完整的资料包,既包括STM32核心板原理图、例程、软件包,也包括软件和硬件资料,还包括配套的PPT讲义、视频等。这些资料会持续更新,下载链接通过微信公众号“卓越工程师培养系列”获取。读者在使用本书开展实验时,建议先通过实验1和实验2快速熟悉整个开发流程,而对于实验3~6,务必花费大量的时间和精力,重点学习外设架构、寄存器、固件库函数、驱动设计和应用层设计等,并认真总结这4章的经验,最后,将这4章总结的经验灵活运用在后面的10个实验中,因为实验3~6基本涵盖了最后10个实验80%的知识点。学习过程中要学会抓重点,比如,实验3~6建议花费40%的时间和精力,而剩余的12个实验建议花费60%的时间和精力,切勿平均分配时间,而且学习过程中要不断总结和归纳。另外,本书中的程序都严格按照《C语言软件设计规范(LY-STD001—2019)》编写。设计规范要求每个函数的实现必须有清晰的函数模块信息,包括函数名称、函数功能、输入参数、输出参数、返回值、创建日期和注意事项。由于本书篇幅有限,书中实验3~16中每个函数的实现均省略了函数模块信息,但是,读者在编写程序时,建议完善每个函数的模块信息,《函数实现及其模块信息》(位于本书配套资料包的“08.软件资料”文件夹)罗列了所有函数的实现及其模块信息,供读者开展实验时参考。本书的编写得到了深圳市乐育科技有限公司的大力支持;深圳大学的覃进宇、刘宇林、陈旭萍和黄荣祯,以及杨钦铸、陈焕鑫、曹康养、王东琪和黄楷镔在教材编写、例程优化和文本校对中做了大量的工作;本书的出版得到了电子工业出版社的鼎力支持,张小乐编辑为本书的顺利出版做了大量工作,一并向他们表示衷心的感谢。本书获深圳大学教材出版资助。由于作者水平有限,书中难免有错误和不足之处,敬请读者不吝赐教。
编 者2019.10
展开