STM32库开发实战指南 pdf
内容简介
《STM32库开发实战指南》基于STM32F103芯片,紧紧围绕“库”的分析和使用展开。在大量实例的基础上,本书对于如何综合运用固件库开发项目给出了具体的范例;在固件库的使用和学习的基础上,又进一步讲解了结合嵌入式实时操作系统、TCP/IP协议栈进行嵌入式系统开发的方法,让读者循序渐进、系统地掌握基于STM32官方库进行开发的方法。
《STM32库开发实战指南》内容翔实,案例丰富,操作性极强,可作为高校电子信息、通信工程、信息工程等相关专业的教材,也适合作为从事嵌入式领域科技工作者的参考书。
作者简介
刘火良,网名野火,嵌入式开发工程师,野火嵌入式开发工作室的创始人,长期从事基于ARM Cortex—M系列MC LJ嵌入式开发工作,积累了丰富的实战开发经验。作者在国内最受嵌入式开发工程师欢迎的阿莫电子论坛中担任版主。担任版主期间,为网友贡献了大量的实战开发教程和资料,累计下载量超过3万次,且被广泛转载,深得网友喜爱。
杨森,网名flyleaf,嵌入式开发工程师,野火嵌入式开发工作室发起人,对嵌入式实时操作系统有深入的研究和理解。曾推出《从零开始移植μC/OS到野火STM32开发板》,以全新的视角自上而下讲解μC/OS移植方法,深受网友好评。
目录
前言
第一部分 库开发初级篇
第1章 为什么学习STM322
1.1 嵌入式技术知识结构2
1.2 嵌入式工程师成长之路3
1.3 为什么学习STM324
1.4 如何学习STM324
第2章 初识STM32固件库5
2.1 STM32神器之库开发5
2.1.1 什么是STM32库5
2.1.2 为什么采用库开发6
2.2 STM32结构及库层次关系7
2.2.1 CMSIS标准7
2.2.2 库目录、文件简介8
2.2.3 STM32固件库文件间的关系14
2.2.4 使用库帮助文档15
第3章 GPIO入门之流水灯18
3.1 安装MDK18
3.2 建立工程模板19
3.2.1 新建工程19
3.2.2 配置J-LINK硬件调试25
3.3 如何编译和下载程序27
3.3.1 如何编译程序27
3.3.2 如何下载程序27
第4章 深入分析流水灯例程30
4.1 STM32的GPIO30
4.2 STM32的地址映射33
4.2.1 温故而知新——stm32f10x.h文件33
4.2.2 外设基地址35
4.2.3 总线外设基地址36
4.2.4 寄存器组基地址37
4.3 STM32固件库对寄存器的封装38
4.4 STM32的时钟系统39
4.4.1 时钟树&时钟源39
4.4.2 高速外部时钟41
4.4.3 HCLK、FCLK、PCLK1、PCLK242
4.5 LED具体代码分析42
4.5.1 实验描述及工程文件清单42
4.5.2 配置工程环境43
4.5.3 编写用户文件44
4.5.4 初始化结构体——GPIO_InitTypeDef类型46
4.5.5 初始化库函数——GPIO_Init()47
4.5.6 开启外设时钟48
4.5.7 控制I/O输出高、低电平52
4.5.8 led.h文件52
4.5.9 main文件53
4.6 GPIO_Init()函数的实现55
4.6.1 规范的位操作方法55
4.6.2 GPIO_Init()实现代码分析55
4.6.3 再论开发方式60
4.7 开发步骤总结61
第5章 调试程序62
5.1 MDK软件仿真调试62
5.2 使用J-LINK进行硬件调试64
5.2.1 硬件调试64
5.2.2 软件编译过程65
5.3 MDK使用小技巧66
第二部分 库开发中级篇
第6章 GPIO再举例之按键实验70
6.1 GPIO的8种工作模式70
6.1.1 4种输入模式71
6.1.2 4种输出模式71
6.2 按键实验分析72
6.3 按键代码分析72
6.3.1 实验描述及工程文件清单72
6.3.2 配置工程环境73
6.3.3 main文件73
6.3.4 GPIO初始化配置74
6.3.5 利用固件库的数据类型75
6.3.6 实现LED反转77
6.3.7 实验现象77
第7章 EXTI之按键中断实验78
7.1 STM32的中断和异常78
7.2 NVIC中断控制器81
7.2.1 NVIC结构体成员81
7.2.2 抢占优先级和响应优先级82
7.2.3 NVIC的优先级组83
7.3 EXTI外部中断83
7.4 中断检测按键实验分析84
7.4.1 实验描述及工程文件清单84
7.4.2 配置工程环境85
7.4.3 main文件86
7.4.4 配置外部中断86
7.4.5 AFIO时钟87
7.4.6 NVIC初始化配置88
7.4.7 EXTI初始化配置89
7.4.8 编写中断服务函数89
7.4.9 实验现象91
第8章 串口通信(USART)92
8.1 异步串口通信协议92
8.2 直通线和交叉线93
8.3 串口工作过程分析94
8.3.1 波特率控制94
8.3.2 收发控制96
8.3.3 数据存储转移96
8.4 串口通信实验分析96
8.4.1 实验描述及工程文件清单96
8.4.2 配置工程环境97
8.4.3 main文件97
8.4.4 USART初始化配置98
8.4.5 printf()函数重定向101
8.4.6 USART1_printf()函数103
8.4.7 实验现象106
第9章 库函数开发小结107
9.1 初始化107
9.2 数据输入输出108
9.3 状态位、标志位108
9.3.1 事件109
9.3.2 标志位的检查与清除109
9.4 外设函数分类110
第10章 DMA——为CPU减负112
10.1 DMA功能简介112
10.2 DMA工作分析112
10.3 DMA实例之串口通信113
10.3.1 实验描述及工程文件清单113
10.3.2 配置工程环境114
10.3.3 main文件114
10.3.4 DMA初始化115
10.3.5 使用DMA中断121
10.3.6 实验现象123
第11章 ADC实验(DMA方式)124
11.1 ADC简介124
11.2 STM32的ADC主要技术指标124
11.3 ADC工作过程分析125
11.4 ADC采集数据实例(采用DMA模式)126
11.4.1 实验描述及工程文件清单127
11.4.2 配置工程环境128
11.4.3 main文件128
11.4.4 ADC初始化129
11.4.5 计算电压值138
11.4.6 实验现象138
第12章 SysTick(系统滴答定时器)139
12.1 SysTick——操作系统的心跳139
12.2 SysTick工作分析140
12.3 使用SysTick精确延时实验分析141
12.3.1 实验描述及工程文件清单142
12.3.2 配置工程环境142
12.3.3 main文件143
12.3.4 配置并启动SysTick143
12.3.5 定时时间的计算147
12.3.6 编写中断服务函数147
12.3.7 使用SysTick测量时间的功能149
12.3.8 实验现象149
第13章 STM32定时器150
13.1 定时器功能简介150
13.2 定时器工作分析150
13.2.1 基本定时器150
13.2.2 通用定时器150
13.2.3 高级定时器155
13.3 PWM输出实例分析157
13.3.1 实验描述及工程文件清单157
13.3.2 配置工程环境157
13.3.3 main文件158
13.3.4 定时器初始化159
13.3.5 实验现象164
第14章 I2C接口168
14.1 I2C协议简介168
14.1.1 物理层168
14.1.2 协议层169
14.2 STM32的I2C特性及架构170
14.2.1 I2C接口特性170
14.2.2 I2C架构170
14.3 I2C接口读写EEPROM实验171
14.3.1 实验描述及工程文件清单171
14.3.2 配置工程环境171
14.3.3 main文件172
14.3.4 I2C接口初始化173
14.3.5 对EEPROM的读写操作177
14.3.6 使用I2C读写EEPROM流程总结186
14.3.7 实验现象186
第15章 SPI模块188
15.1 SPI协议简介188
15.1.1 SPI信号线188
15.1.2 SPI模式189
15.2 STM32的SPI特性及架构190
15.2.1 STM32的SPI特性190
15.2.2 STM32的SPI架构分析190
15.3 SPI接口读取Flash实例分析191
15.3.1 实验描述及工程文件清单192
15.3.2 配置工程环境193
15.3.3 main文件193
15.3.4 SPI初始化195
15.3.5 控制Flash的命令199
15.3.6 读取厂商ID202
15.3.7 擦除Flash内容203
15.3.8 向Flash写入数据207
15.3.9 从Flash读取数据210
15.3.10 小结211
15.3.11 实验现象211
第16章 CAN控制器212
16.1 CAN协议简介212
16.1.1 物理层212
16.1.2 CAN的报文种类及结构213
16.1.3 同步215
16.2 STM32的CAN特性及架构217
16.2.1 CAN特性217
16.2.2 CAN架构218
16.3 双CAN通信实验分析219
16.3.1 实验描述及工程文件清单219
16.3.2 配置工程环境220
16.3.3 main文件221
16.3.4 配置CAN接口223
16.3.5 打包报文232
16.3.6 发送报文234
16.3.7 接收报文、编写中断服务函数234
16.3.8 实验小结236
16.3.9 实验现象237
第三部分 库开发高级篇
第17章 SDIO之SD卡驱动240
17.1 SD协议简介240
17.1.1 卡的种类240...
感悟与笔记
一些库函数的总结
NVIC 中断优先级管理
STM32F103 有 84 个中断,包括 16 个内核中断和 60个可屏蔽中断,具有 16 级可编程的中断优先级。
NVIC的设置
NVIC的函数实现
需要多加积累,下面是串口中断的实现
NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;//串口 1 中断 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1 ;// 抢占优先级为 1 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;// 子优先级位 2 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ 通道使能 NVIC_Init(&NVIC_InitStructure); //根据上面指定的参数初始化 NVIC 寄存器
独立看门狗
独立看门狗用通俗一点的话来解释就是一个 12 位的递减计数器,当计数器的值从某个值一直减到 0 的时候,系统就会产生一个复位信号,即 IWDG_RESET。如果在计数没减到 0 之前,刷新了计数器的值的话,那么就不会产生复位信号,这个动作就是我们经常说的喂狗。
会员免费下载
链接:https://pan.baidu.com/s/1tQTPgwOM7hhWpxEaL7spQg
提取码: ****** 查看
成为本站VIP会员即可无限下载。 请先点击百度网盘,看资源是否还在,不在请点击链接通知站长补资源。