发表于2024-11-25
STM32是意法半导体公司推出的基于ARM Cortex-M3内核的通用型嵌入式微控制器,具有设计灵活、配置丰富、成本低廉、适用性强、***高等特点,广泛应用于工业控制、通信、物联网、车联网等领域。正因如此,电子工程师要想在嵌入式控制研发领域安身立命,成为智能电子产品开发的业界翘楚,轻松玩儿转STM32微控制器是必须的。 本书系统介绍了STM32微控制器的基础知识和嵌入式系统研发的实战技巧。全书共24章,分基础篇、入门篇、提高篇3个层次进行讲解,内容丰富、结构清晰、实用性强。
杨百军,笔名老杨,曾就职于中航工业集团,主要研究微控制器、微处理器及嵌入式系统的移植与优化,具有丰富的传感器与检测技术、生物识别技术、远程无线抄表技术及锂电池管理系统(BMS)的开发与教学经验。
第1篇基础篇
第1章 选择开发板
1.1 开发板简介
1.2 开发板功能简介
第2章 走近STM32
2.1 认识STM32
2.2 STM32与Cortex-M3的关系
2.3 Cortex-M3与ARM
第3章 认识MDK-ARM
3.1 开发工具介绍
3.2 安装MDK-ARM
3.3 从例程入手
第4章 初识固件库
4.1 固件库的获取
4.2 固件库实例
4.3 MISRA及代码规范
4.3.1 MISRA-C 2004标准
4.3.2 代码规范与惯例
4.4 CMSIS标准
第2篇 入门篇
第5章 跑马灯实验
5.1 例程IOToggle
5.2 分析例程IOToggle
5.3 修改例程
5.4 下载程序
5.5 完善跑马灯
5.6 寄存器编程
第6章 按键输入
6.1 由跑马灯说起
6.2 实现I/O口的输入模式
6.3 软件仿真
6.4 寄存器操作
第7章 外部中断
7.1 例程EXTI_Config
7.2 分析例程EXTI_Config
7.3 移植例程
7.4 硬件仿真
第8章 串口通信USART
8.1 有关USART
8.2 例程Printf
8.3 例程Polling
8.4 例程HyperTerminal_Interrupt
第9章 系统节拍时钟SysTick
9.1 了解SysTick
9.2 例程TimeBase
第10章 忠实的看门狗
10.1 独立看门狗IWDG
10.2 例程IWDG_Reset
10.3 窗口看门狗WWDG
10.4 例程WWDG_Reset
第11章 完美定时器
11.1 了解定时器
11.2 例程OCActive
11.3 例程PWM_Output
11.4 例程Parallel_Synchro
第12章 实时时钟RTC与备份寄存器BKP
12.1 备份寄存器BKP
12.2 例程Backup_Data
12.3 实时时钟RTC
12.4 例程Calendar
第13章 电源控制PWR与循环冗余校验CRC
13.1 电源控制PWR
13.2 例程STANDBY
13.3 循环冗余校验CRC
13.4 例程CRC_Calculation
第14章 嵌套向量中断控制器NVIC
14.1 了解NVIC
14.2 例程IRQ_Priority
14.3 例程IRQ_Mask
第15章 Cortex-M3特性之Bit-band
15.1 了解Bit-band
15.2 例程BitBand
15.3 操作模式和特权级别
15.4 例程Mode_Privilege
第16章 模数转换器ADC与数模转换器DAC
16.1 模拟数字转换器ADC
16.2 例程ADC1_DMA
16.3 例程TIMTrigger_AutoInjection
16.4 数字模拟转换器DAC
16.5 例程TwoChannels_TriangleWave
第17章 DMA控制器与时钟控制器RCC
17.1 DMA控制器
17.2 例程ADC_TIM1
17.3 时钟控制器RCC
17.4 例程RCC_ClockConfig
第3篇 提高篇
第18章 I2C总线
18.1 了解I2C
18.2 STM32的I2C接口
18.3 例程EEPROM
第19章 SPI总线
19.1 了解SPI
19.2 STM32的SPI接口
19.3 例程SPI_FLASH
第20章 I2S总线
20.1 了解I2S
20.2 STM32的I2S接口
20.3 例程Interrupt
第21章 CAN总线
21.1 了解CAN
21.2 STM32的CAN接口
21.3 例程LoopBack
第22章 SDIO接口
22.1 SDIO初探
22.2 STM32的SDIO模块
22.3 例程uSDCard
第23章 静态存储控制器FSMC
23.1 STM32之FSMC
23.2 例程SRAM
第24章 STM32内部Flash
24.1 认识STM32内部Flash
24.2 例程Program
附录A 修改例程的LED驱动
附录B 在例程中添加USART驱动
附录C STMF103xCDE模块框图
附录D STMF103xCDE时钟树
附录E STMF103xCDE存储器映像
附录F 启动文件分析
附录G 书籍、网站等推荐
参考文献
本书在写作之初本来是准备写“ARM-Linux”相关的嵌入式系统教材的,然而计划赶不上变化,技术的更新日新月异,因此后来决定随市场而动写STM32微控制器相关的内容。原本笔者认为STM32是不需要教材指导的,因为ST和ARM两家公司已经提供了丰富的资料:
《ARM Cortex-M3权威指南》宋岩 译
《The Cortex-M3 Technical Reference Manual》(Cortex-M3技术参考手册)
《STM32F10xxx Reference manual》(STM32F10xxx参考手册,RM0008)
《STM32F10xxx Cortex-M3 Pramming manual》(STM32F10xxx Cortex-M3编程手册,PM0056)
《STM32F10xxx Flash programming manual》(STM32F10xxx Flash编程手册,PM0075)
DS5792:STM32F103xC、STM32F103xD、STM32F103xD Datasheet(数据手册)
STM32F10x_StdPeriph_Driver_3��5��0(含中文版使用手册)
MDK-ARM开发环境、其例程及帮助文档
其他相关器件数据手册及网络资料
其中,STM32F10x_StdPeriph_Driver既有库函数源代码,又有丰富的实例,再加上其使用手册,足够一个有经验的8/16位单片机工程师向STM32转型了。
但是后来发现,对于一个熟练掌握了单片机程序设计技巧的工程师而言,利用这些内容入门是没有问题的;可是对于一个只学了C语言的学生或在8位单片机的路上跌跌撞撞走过来的入门者,只利用这些内容学习,困难还是不小的。因为,STM32F10xxx系列的参考手册(RM0008)是学习ST微控制器最全面的一份文档,但该文档是将小容量、中容量、大容量,甚至网络型产品揉在一起讲解的;虽然大容量、中容量、小容量、网络型产品也都有各自的数据手册(Datasheet),但又相对简单得多,只能用来参考选型及了解具体参数。而且其内核又是另一家公司(ARM)设计的,这样要了解内核,又要去学习Cortex-M3以及ARMv7的相关知识。另外,STM32F10xxx是32位微控制器,其内部集成了丰富的外设、中断控制系统、时钟系统、总线系统等,这些对初学者而言都是一个难以跨越的门槛。
笔者还算不上STM32微控制器的资深工程师,只是早入门了两年而已,因而也不敢在读者面前讲太多高深的理论,本书只是想告诉读者怎么能够利用这些免费的资源快速入门。对于有信心可以自学的读者,在此笔者向你提供一个学习大纲:
先看看《STM32F10xxx参考手册》的前面几章,对STM32有一个初步的认识;接下来再读一读宋岩先生翻译的《ARM Cortex-M3权威指南》,也不需要看完、吃透,对其内核有个了解就可以了;然后就可以使用MDK-ARM提供的例子程序和帮助文档,结合ST公司提供的固件库(STM32F10x_StdPeriph_Driver)的源代码及其使用手册进行学习了。在学习例子程序时,要学会针对例子程序再去学习《STM32F10xxx参考手册》的相关章节。
STM32入门的门槛相对8位单片机是高了些,不过根据上面的流程入门之后,接下来的路怎么走,你心里就会清楚许多。本书也正是根据上面的流程来引导读者学习STM32的,没有什么高深的东西,只是在适当的地方加以注释,让新手少走点弯路,轻松入门而已。
入门建议
虽然这是一本介绍STM32入门的书籍,但我还是建议读者最好选择8位单片机作为自己走进单片机世界的钥匙。因为越是复杂的东西,越是难以吃透、门槛越高,容易打击学习的积极性。但是8位单片机就相对简单得多,像51单片机若是选对一本教材,用一周至一个月的时间就可以入门;AVR单片机结合其数据手册,大概一个月也能够入门。
另外,学习STM32对使用者的C语言基础的要求也比较高。学习8位单片机,读过谭浩强老师的《C语言程序设计》,掌握其中前半本的知识点就可以入门了。但STM32的例程用到的知识点就多了:指针、结构体、条件编译、文件操作,等等,一些相对有难度的C语言知识都要用到。对于C语言基础不是太好的读者,还是建议手边有本C语言教材,这样有不理解的地方,可以找到相应的知识点复习一下。
目前市面上的教材可以分为两类:一类是基于固件库函数讲解的,这类的教材多些;另一类是基于寄存器讲解的。通常基于库函数讲解的会说这样可以快速上手、移植方便等;基于寄存器的会说讲解深入、代码效率较高。笔者并不觉得谁优谁劣,首先要真正学会操作STM32不管是用其固件库函数,还是直接操作寄存器,都要对其深入了解,然后才能灵活应用;而且库函数提供的有源代码,深入学习之后,可以根据源代码写自己的程序,也可以直接修改源代码。因而不存在谁优谁劣的问题,区别只是教材是如何引导读者入门的,而读者希望选择哪条路走进STM32的世界。
开发板选型
目前市面上的开发板很多,参差不齐,有不少是王婆卖瓜、自卖自夸。这个要看读者的喜好,其实从主芯片的选择来说,它们是没有本质区别的。不管使用的是L系列、M系列,还是H系列,都不会影响基本内容的学习,也就是说对于STM32入门来说,几乎所有的开发板都可以满足要求。它们的区别是板上有多少外设,对我们后期进一步深入的学习会有哪些影响。另外,也要看读者想在哪方面进一步深入学习,不一定非要盲目选择外设丰富的。例如,想学习物联网、无线通信,当然要选择有这些接口、提供丰富例程的开发板;而如果想低成本入门,那么选择一块几十块钱的板子就够了。
笔者也为本书选择了一块开发板:秉火ISO STM32。不过对于入门学习来说,使用其他的开发板也是完全可以的,因为笔者也是将例程在上面根据其原理图移植而已。
致谢
全书由杨百军统稿,并参与第19~24章的具体编写;黄河科技学院王学春老师主要参与完成第1、2、3、4、5、6章的编写,河南省轻工业学校黄雅琴老师主要参与完成第10、11、12、13、14章的编写,河南大学史蕊老师主要参与完成第7、8、9章的编写,中国人民解放军国防科学技术大学张志洲老师主要参与完成第15、16、17、18章的编写。此外,参与本书编写的还有陈泽慧、高维娜、黄得建、康磊、李楠、聂运中、王路、杨俊杰、张延杰、周宏云等。另外,东莞秉火网络科技有限公司(火哥)为本书的编写提供了秉火ISO STM32开发板,在此表示感谢。
“学然后知不足,教然后知困”,由于作者水平有限,在写作的过程中难免会出现一些错误。若读者有什么疑问或建议,希望能发邮件与作者沟通,邮箱是young45@126.com,也可通过老杨的博客young45.cublog.cn来了解相关内容。另外,还可以登录野火开源社区www.chuxue123.com,直接与火哥交流。
最后,感觉我的家人和朋友,特别是父母能在社会压力较大的今天放任我如此自由地写作,不给他们的儿子那么多的压力;也感谢在洛阳时的师长和同事——刁海南、张文勇、郭锐、齐文钊、陈剑、李为民、赵博、尹国利、谢永进等,嵌入式这条路是在工作之后走上的,若不是这些前辈的指点,就没有我的今天;感谢那些在大学、中学谆谆教导过我的老师——杨明祥老师、高克权老师、杨万才老师、李小申老师、程东明老师、张晓红老师、黎蔚老师、王辉老师、刘勇老师等,杨明祥老师帮我走进了洛工,洛工数理学院的老师为我铺垫了良好的逻辑分析能力,计算机方向的老师帮我走进了IT这个行业,内心由衷感谢他们的帮助和指引;还有前两本书的读者,特别是那些来信给出建议的读者与学生,如郭凯、张锋、王帅阳、牛鹏举、竹显涛等,他们的感谢、鼓励和建议为我继续写作增添了动力;感谢曾经帮助过我的师长、朋友——郝云鹏、黄桂平、朱锦、段富军、许元霄、高金龙、申雷等,这些年是在他们的鼓励与帮助下完成这三本作品的,在此一并表示感谢;也谢谢电子工业出版社的王敬栋、张剑、徐萍及其他编辑朋友。最后,感谢人生路上伴我走过的朋友们。
编著者
轻松玩转STM32微控制器 下载 mobi pdf epub txt 电子书 格式 2024
轻松玩转STM32微控制器 下载 mobi epub pdf 电子书好好
评分给快递哥们点赞,态度服务一流,很好很强大。
评分好好
评分给快递哥们点赞,态度服务一流,很好很强大。
评分给快递哥们点赞,态度服务一流,很好很强大。
评分好好
评分好好
评分给快递哥们点赞,态度服务一流,很好很强大。
评分给快递哥们点赞,态度服务一流,很好很强大。
轻松玩转STM32微控制器 mobi epub pdf txt 电子书 格式下载 2024