STM32F0实战(基于HAL库开发)/电子与嵌入式系统设计丛书
书籍作者:高显生 |
ISBN:9787111612964 |
书籍语言:简体中文 |
连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 |
下载次数:5237 |
创建日期:2021-02-14 |
发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
内容简介
作为STM32单片机的入门者,往往在从寄存器开发还是从固件库开发上纠结不定,《STM32F0实战(基于HAL库开发)/电子与嵌入式系统设计丛书》将从市场上非常畅销的STM32FO系列微控制器入手,利用意法半导体公司新近推出的一款全新的开发软件——STM32CubeMX作为项目建立和代码初始化工具,快速生成F0系列的开发环境,并在MDK-ARM软件上对代码进行进一步的编辑修改,直至生成最终的开发项目。
《STM32F0实战(基于HAL库开发)/电子与嵌入式系统设计丛书》将使用STM32CubeMX软件自带的HAL固件库来开发,书内附HAL库详解,HAL库不同于以往的标准外设库,是意法半导体公司新推出的替代标准外设库的产品。
作者简介
高显生,男,1972年出生,电气工程师,骨灰级单片机爱好者,长期热衷于单片机公益培训和研发,倡导简捷易懂、立足应用的单片机学习方法,著有《我和POC单片机:基于PIC18》《AVR单片机入门与速成攻略》等书。先后录制了《我和单片机的21天之旅》《我的PIC日记》《迷人的AVR单片机》等多部大型公益视频教程,在网络上得以广泛传播和推广,深受学生朋友及科研工作者的喜爱和好评。
编辑推荐
本书作者为“骨灰级”单片机爱好者。长期致力于单片机的产品开发和应用研究,并热衷于单片机公益培训和推广,倡导简洁易懂、立足应用的单片机学习方法,著有《迷入的8051单片机》《我和PIC单片机:基于PIC18》《AVR单片机入门与速成攻略》《STM8实战》等多部MCU系列著作,深受学生朋友及科研工作者的喜爱和好评。
本书基于STM32FO系列微控制器,结合STM32CubeMX开发平台及其附带的HAL库完成STM32F0系列微控制器的应用开发,涵盖ARM Cortex内核的STM32F072VBT6微控制器大部分外设。使用C语言开发,配套源代码,由浅入深,快速入门。
前言
意法半导体公司(下文简称意法公司)近年来在国内单片机市场上的业绩可圈可点,旗下STM32系列单片机凭借其高性能、高性价比成为32位单片机的市场主力,在如今的人才市场上,会不会使用STM8和STM32单片机往往是用人方选择硬件工程师的条件之一,其重要性和业界的影响力可见一斑。在意法公司的产品线中,STM32F0系列是32位微控制器中的入门级产品。该系列基于ARM公司的CortexM0内核,集实时性能、低功耗运算和STM32平台的先进架构及外设于一身,既保留了对传统8位和16位市场的压倒性竞争力,又可以传承STM32用户的开发平台和程序代码,是入门STM32开发的不二之选。本书将以STM32F0系列微控制器中的旗舰型号STM32F072VBT6微控制器为例,从整体架构、存储器、时钟树、异常处理、DMA和外设模块等方面做详细的介绍,特别是对微控制器片内的bxCAN模块和USB模块的原理和开发方法进行重点介绍。
学习ARM微控制器的方法其实与学习8位机并无两样,只要找准入门的方法就会事半功倍。在接触STM32F0系列的32位单片机之前,你一定也曾经是8位单片机的“发烧友”,回想当初我们使用8051单片机点亮一个LED时,那种激动的心情至今仍难以忘怀。在此笔者向大家推荐与当初学习8051单片机相同的方法,即从一个简单的实验入手,如点亮一个LED,由局部到整体,逐步积累开发经验,增强信心,循序渐进,由浅入深。要特别注意的是不要在你还没有学会使用寄存器和函数来操作STM32的时候,就贸然研究操作系统移植、图形用户界面(GUI)以及上位机开发等。这不但会让你对学习STM32望而却步,还会使你对学习嵌入式开发的信心丧失,这是最可怕的事情。本书不拘泥于概念和原理的探究,而是立足于实践,从系统板基础电路起步,一章一个例子、一章一个实验、一章一个总结、一个模块一套或多套代码,从最基本的I/O口学起,逐步拓展到定时器、时钟、串行口、ADC等,届时你会发现其实STM32与8位单片机也没有太大差别。
近期,意法公司专门针对旗下不同系列的微控制器产品推出了一款全新的开发软件—STM32CubeMX。该软件允许用户使用图形化界面简单直观地对目标微控制器的引脚、时钟等进行初始化设置,并能针对不同的集成开发环境,如EWARM、MDKARM、TrueSTUDIO等快速生成开发项目,这无疑是STM32入门用户最重大的利好消息。本书将利用STM32CubeMX作为项目建立和代码初始化工具,快速生成STM32F0系列微控制器的程序架构,并在MDKARM软件上对代码进行进一步的编辑修改,直至完成最终的项目开发。
作为STM32微控制器开发的新手,往往在从寄存器开发入手还是从固件库开发入手的选择上纠结不定。业界对开发STM32系列微控制器的方法通常也持有两种不同的观点:一种认为寄存器开发能使开发者明晰单片机内部结构,编写出简洁的代码,执行效率高;而另一种则认为固件库开发能避开对寄存器操作,减轻编程者的压力,还可以为开发者访问底层硬件提供一个中间应用编程界面(API),并方便上层软件的调用。笔者认为,作为开发STM32的硬件工程师,以上两种开发方法都应该掌握,原因是寄存器开发能加深对芯片内部结构和功能的理解,是微控制器入门的必经之路,而固件库开发则是一种趋势,它的编程思想更加先进,对应代码更规范,更具有可读性。本书基于STM32CubeMX软件自带的HAL库开发—HAL库不同于以往的标准外设库,是意法公司最新推出的替代标准外设库的产品,书内附HAL库、函数、结构、常量等的详细说明及开发实例。
为了配合本书的出版,相应的开发板和视频教程“STM32奇幻漂流记”也会在近期由“睿芯美微”淘宝网店同步推出,网址为http://shop59521455.taobao.com。由于作者水平有限,加之写作时间仓促,书中错误在所难免,在此恳请读者和有识之士给予批评斧正,也欢迎大家通过互联网与笔者分享STM32的开发心得。
作者QQ:710878209,微信号:gpmza2000。
本书得以出版,首先要特别感谢机械工业出版社华章公司朱捷等资深编辑,他们对本书的选题、立意和编纂给予了大力支持和悉心指导。其次要感谢的是广大热心网友,你们为本书内容、结构、写法献言献策,给予了莫大关心和支持。再次要感谢笔者的家人,在笔者奋笔疾书的日日夜夜照顾饮食起居,让笔者能更加专注于本书的创作。
尺有所短,寸有所长。每个人的天赋迥异,如果你发现自己对电子产业时常会萌发出一些新奇的想法或创意,请一定将其捕捉住,并且尽早阅读本书,那时你会发现使用STM32系列微控制器会让你的想法变为现实,会让你的创意尽情表达,这也许就是你走上研发之路的起点,你的人生也会因此而更加精彩!再次感谢你选择本书,祝学业有成,事业顺达!
高显生
于哈尔滨
目录
前言
第一篇 系统架构
第1章 “芯”系ARM 2
1.1 强劲的ARM芯 2
1.1.1 最成功的科技公司 2
1.1.2 ARMv6M架构 3
1.1.3 CortexM0处理器简介 3
1.1.4 CortexM0处理器的特点 5
1.1.5 RISC架构 6
1.1.6AMBA总线 6
1.1.7微控制器软件接口标准(CMSIS) 7
1.2 STM32系列微控制器 9
1.2.1 STM32微控制器家族 9
1.2.2 STM32的命名规则 9
1.2.3STM32F0系列微控制器功能概述 13
第2章 开发环境 17
2.1 软件开发工具 17
2.1.1MDKARM集成开发环境 18
2.1.2 安装MDKARM软件 21
2.1.3 STM32CubeMX软件 27
2.1.4安装STM32CubeMX软件 34
2.2 硬件开发工具 46
2.2.1 仿真/编程器 47
2.2.2 STM32系统板 51
2.3 项目建立 52
2.3.1 新建开发项目 52
2.3.2 查看项目文件 62
2.3.3 打开项目 64
2.3.4 查看项目属性 69
2.3.5 编译项目 73
第3章 GPIO 76
3.1 GPIO概述 76
3.1.1 GPIO的功能 76
3.1.2 GPIO的位结构 78
3.1.3 GPIO的特殊功能 80
3.1.4 GPIO的寄存器分类 82
3.2 GPIO函数 82
3.2.1 GPIO类型定义 82
3.2.2 GPIO常量定义 83
3.2.3 GPIO函数定义 84
3.3 GPIO应用实例 86
3.3.1 生成开发项目 86
3.3.2 主程序文件结构解析 90
3.3.3 外设初始化过程分析 94
第4章 HAL库 98
4.1 HAL库结构 98
4.1.1 HAL库的特点 98
4.1.2 HAL库的构成 99
4.1.3 HAL库用户应用程序 99
4.2 HAL库文件 101
4.2.1 HAL库头文件 101
4.2.2 HAL库源文件 104
第5章 系统配置 107
5.1 系统架构 107
5.1.1 总线结构 107
5.1.2 存储器的组织 108
5.1.3 启动配置 108
5.2 Flash存储器 110
5.2.1 Flash的读操作 110
5.2.2 Flash的写和擦除操作 111
5.2.3 Flash读保护 113
5.2.4 Flash写保护 114
5.2.5 Flash中断 114
5.2.6 CRC计算单元 114
5.3 选项字节 115
5.3.1 选项字节的格式 115
5.3.2 选项字节编程 118
5.4 Flash函数 119
5.4.1 Flash类型定义 119
5.4.2 Flash常量定义 120
5.4.3 Flash函数定义 121
5.5 CRC函数 128
5.5.1 CRC类型定义 128
5.5.2 CRC常量定义 129
5.5.3 CRC函数定义 131
第6章 时钟 135
6.1 概述 135
6.1.1 时钟树的结构 135
6.1.2 时钟源 137
6.1.3 时钟安全 140
6.1.4 时钟应用 140
6.1.5 低功耗模式下的时钟 141
6.1.6 复位 141
6.2 RCC函数 143
6.2.1 RCC类型定义 143
6.2.2 RCC常量定义 145
6.2.3 RCC函数定义 152
6.3 时钟控制实例 159
第7章 电源控制 162
7.1 供电管理 162
7.1.1 供电引脚 162
7.1.2 上电复位和掉电复位 165
7.1.3 可编程电压检测器 166
7.2 低功耗模式 166
7.2.1 低功耗模式的分类 166
7.2.2 睡眠模式 167
7.2.3 停机模式 168
7.2.4 待机模式 169
7.2.5 自动唤醒 170
7.3 电源控制函数 170
7.3.1 电源控制类型定义 170
7.3.2 电源控制常量定义 171
7.3.3 电源控制函数定义 172
7.4 低功耗模式应用实例 178
7.4.1 从停机模式唤醒 178
7.4.2 从待机模式唤醒 180
第8章 DMA控制器 183
8.1 DMA概述 183
8.1.1 DMA控制器内部结构 183
8.1.2 DMA的处理过程 183
8.1.3 DMA中断 186
8.1.4 DMA请求映射 186
8.2 DMA函数 189
8.2.1 DMA类型定义 189
8.2.2 DMA常量定义 190
8.2.3 DMA函数定义 191
8.3 DMA应用实例 194
第9章 异常 198
9.1 CortexM0的异常处理 198
9.1.1 异常的特点 198
9.1.2 嵌套向量中断控制器 201
9.1.3 中断的使能 201
9.1.4中断请求的挂起和清除 202
9.1.5 中断优先级控制 204
9.1.6 SysTick定时器 204
9.2扩展中断和事件控制器(EXTI) 207
9.2.1 事件线概述 207
9.2.2 事件线的控制逻辑 208
9.2.3 事件线的配置方法 210
9.2.4 EXTI唤醒 210
9.2.5 中断服务程序(ISR) 210
9.3 异常相关函数 212
9.3.1 异常类型定义 212
9.3.2 异常常量定义 213
9.3.3 异常函数定义 213
9.4 EXTI应用实例 219
第二篇 外设模块
第10章 模拟数字转换器 224
10.1 ADC模块概述 224
10.1.1 ADC的内部结构 224
10.1.2 ADC校准 225
10.1.3 ADC的启动和关闭 226
10.1.4 ADC时钟 228
10.2 ADC功能配置 229
10.2.1 ADC的基础配置 229
10.2.2 ADC的转换模式 230
10.2.3 A/D转换的启动和停止 231
10.2.4 A/D转换时序 232
10.2.5 ADC过冲 233
10.2.6 管理转换数据 235
10.2.7 ADC的低功耗特性 235
10.2.8 模拟看门狗 237
10.2.9 ADC的内部通道转换 238
10.2.10 ADC中断 240
10.3 ADC函数 241
10.3.1 ADC类型定义 241
10.3.2 ADC常量定义 242
10.3.3 ADC函数定义 246
10.4 ADC的应用实例 253
10.4.1 数字显示电压值 254
10.4.2 读取温度传感器 256
第11章 数字模拟转换器 259
11.1 DAC模块概述 259
11.1
短评
包装升级,全新书,昨天订今天到,很满意。
2019-02-01 21:51:12
好。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
2019-01-21 22:22:04
为啥要超过十个字才有豆?
2018-12-31 03:39:28
书挺厚的,一直在买书,送货速度很快,跟方便,省的去图书馆买了,人员素质都很不错的,谢谢
2018-12-31 00:26:51
此用户未填写评价内容
2019-02-18 12:47:46
此用户未填写评价内容
2018-12-25 23:51:08