《Cortex-M3开发技术及实践》PDF下载

  • 购买积分:16 如何计算积分?
  • 作  者:青岛东合信息技术有限公司编著
  • 出 版 社:西安:西安电子科技大学出版社
  • 出版年份:2013
  • ISBN:9787560631219
  • 页数:518 页
图书介绍:本书以Cortex-M3内核的STM32F107芯片为基础,以“Cortex开发套件”为硬件开发平台,以MDK-ARM为软件开发环境,基于STM32固件库的编程方法,讲解了STM32F107的各种常用外设的工作原理及应用,并特别介绍了LWIP、uC/GUI、嵌入式操作系统uC/OS-II的应用程序设计,旨在让读者更清楚地了解Cortex-M3架构原理及STM32F107基础和高级应用。

理论篇 2

第1章 概述 2

本章目标 2

学习导航 2

任务描述 2

1.1 ARM体系概述 2

1.1.1 ARM简介 3

1.1.2 ARM架构的发展 3

1.2 Cortex内核 5

1.2.1 Cortex内核分类 5

1.2.2 CM3内核特点 6

1.3 CM3指令集 6

1.3.1 Thumb指令集 6

1.3.2 Thumb-2指令集 7

1.4 STM32系列MCU 7

1.4.1 STM32系列MCU分类 8

1.4.2 STM32F107资源 9

1.5 STM32固件库 11

1.5.1 CMSIS含义 11

1.5.2 STM32固件库简介 12

1.5.3 STM32固件库结构 12

1.5.4固件库命名规则 13

1.5.5基于固件库的STM32F107程序设计 14

1.6开发工具 17

1.6.1 STM32F107开发工具介绍 17

1.6.2流水灯示例 18

小结 23

练习 23

第2章 STM32F107内核架构 24

本章目标 24

学习导航 24

任务描述 24

2.1内核架构 25

2.1.1 CM3内核架构 25

2.1.2 STM32F107架构 26

2.2存储器组织 27

2.3存储器映像 29

2.3.1位带操作 31

2.3.2位带计算方法 31

2.4寄存器组 33

2.4.1通用寄存器 33

2.4.2特殊功能寄存器 34

2.5堆栈 34

2.5.1 CM3的堆栈 34

2.5.2双堆栈机制 35

2.6电源管理 35

2.6.1电源 35

2.6.2备份区域 37

2.6.3电源管理器 39

2.6.4低功耗模式 41

2.7复位和启动配置 41

2.7.1 CM3的复位机制 42

2.7.2 RCC 43

2.7.3 STM32F107的启动配置 46

2.8时钟 47

2.8.1时钟概述 47

2.8.2系统时钟 49

2.8.3时钟安全系统 49

2.8.4 RTC时钟 49

2.8.5时钟输出 49

小结 50

练习 50

第3章 GPIO和AFIO 52

本章目标 52

学习导航 52

任务描述 52

3.1通用IO和复用功能 53

3.1.1 GPIO概述 53

3.1.2输入功能 54

3.1.3输出功能 55

3.1.4复用功能 56

3.1.5模拟输入功能 56

3.2复用功能IO重映射 57

3.3 GPIO编程实例 58

3.3.1 GPIO配置 59

3.3.2 GPIO实例 61

3.4 GPIO库函数 62

小结 63

练习 64

第4章 NVIC和EXTI 65

本章目标 65

学习导航 65

任务描述 65

4.1 CM3异常和中断系统 66

4.1.1嵌套向量中断控制器 66

4.1.2中断优先级 66

4.1.3抢占优先级与从优先级 67

4.1.4中断输入与悬起 67

4.1.5中断响应序列 68

4.1.6中断返回 69

4.1.7中断嵌套 69

4.1.8 CM3特殊中断机制 69

4.1.9 SysTick定时器 69

4.2中断向量 70

4.2.1(异常)向量表 70

4.2.2 stm32f10x_ it.c文件 78

4.3 NVIC库函数配置 80

4.3.1 NVIC配置 80

4.3.2 NVIC库函数 84

4.4外部中断/事件控制器 85

4.4.1功能说明 85

4.4.2外部中断/事件线路映像 86

4.5 EXTI库函数配置 88

4.5.1 EXTI配置 88

4.5.2 EXTI库函数 90

4.6中断应用实例 91

4.6.1 main函数 91

4.6.2中断服务函数 93

4.6.3程序验证 94

小结 94

练习 94

第5章 定时器(TIM) 96

本章目标 96

学习导航 96

任务描述 96

5.1 STM32F107定时器概述 97

5.2高级和通用定时器 97

5.2.1主要特性 98

5.2.2时钟源 98

5.2.3时基单元 99

5.3计数模式 100

5.3.1计数模式工作方式 101

5.3.2计数模式时序 101

5.3.3计数模式配置 102

5.3.4库函数TIM_TimeBaseInit() 103

5.4捕获/比较通道 104

5.5输出模式 105

5.5.1 PWM模式 105

5.5.2 PWM模式配置 106

5.5.3输出比较模式 110

5.5.4单脉冲模式 111

5.6输入模式 111

5.6.1输入捕获模式 111

5.6.2 PWM输入模式 114

5.6.3定时器输入异或功能 115

5.6.4 TIMx定时器和外部触发的同步 115

5.6.5定时器同步 115

5.7电机控制 116

5.7.1互补输出和死区插入 116

5.7.2使用刹车功能 116

5.7.3产生六步PWM输出 116

5.7.4与霍尔传感器的接口 116

5.8基本定时器TIM6和TIM7 117

5.8.1主要特性 117

5.8.2时钟源 117

5.8.3时基单元 117

5.8.4预分频器 118

5.8.5计数模式 118

5.9定时器库函数 118

小结 122

练习 123

第6章 看门狗(WDG) 124

本章目标 124

学习导航 124

任务描述 124

6.1看门狗概述 125

6.2独立看门狗 125

6.2.1 IWDG的功能描述 125

6.2.2 IWDG的配置 127

6.2.3 IWDG库函数 128

6.3窗口看门狗 128

6.3.1 WWDG的功能描述 128

6.3.2 WWDG的配置 130

6.3.3 WWDG库函数 131

小结 131

练习 132

第7章 通用同步/异步收发器(USART) 133

本章目标 133

学习导航 133

任务描述 133

7.1 USART的功能描述 134

7.1.1 USART的主要特性 134

7.1.2 STM32F107的USART 134

7.2 USART异步模式 136

7.2.1分数波特率 136

7.2.2数据位和校验位 138

7.2.3发送器 138

7.2.4接收器 139

7.2.5 DMA传输 139

7.2.6中断请求 139

7.2.7异步模式配置 140

7.3 USART同步模式 142

7.4 LIN模式 144

7.5 USART编程实例 145

7.5.1 USART2管脚配置 145

7.5.2 USART2配置 146

7.5.3 USART实例 147

7.6 USART库函数 148

小结 150

练习 150

第8章 直接存储器访问(DMA) 151

本章目标 151

学习导航 151

任务描述 151

8.1 DMA的功能描述 152

8.1.1 DMA的结构及特性 152

8.1.2 DMA通道 153

8.1.3 DMA传送 154

8.1.4仲裁器和优先级 154

8.1.5循环模式 154

8.1.6存储器到存储器模式 155

8.1.7 DMA中断 155

8.1.8指针增量 155

8.2 DMA编程实例 155

8.2.1 DMA配置步骤 155

8.2.2 DMA配置 156

8.2.3 DMA实例 159

8.3 DMA库函数 164

小结 164

练习 165

第9章 控制器局域网络(CAN) 166

本章目标 166

学习导航 166

任务描述 166

9.1 CAN总线 167

9.1.1 CAN总线简介 167

9.1.2 CAN总线技术规范 168

9.1.3 CAN帧 169

9.1.4总线仲裁 171

9.2 STM32F107的bxCAN 172

9.2.1 bxCAN的工作模式 172

9.2.2 bxCAN的调试模式 173

9.2.3出错管理 174

9.2.4离线恢复 175

9.2.5位时间特性 175

9.2.6波特率的计算 176

9.2.7 bxCAN配置 176

9.3发送处理 179

9.3.1发送优先级 179

9.3.2中止 179

9.3.3禁止自动重传模式 179

9.3.4发送配置 180

9.4接收管理 181

9.4.1有效报文 181

9.4.2 FIFO管理 181

9.4.3溢出 182

9.4.4接收相关的中断 182

9.4.5接收配置 182

9.5 bxCAN标识符过滤 183

9.5.1 bxCAN过滤器组 183

9.5.2过滤器组的配置 185

9.6 bxCAN中断 187

9.7 bxCAN编程实例 188

9.7.1主函数 188

9.7.2中断服务函数 191

9.7.3运行结果 191

9.8 bxCAN库函数 193

小结 194

练习 194

第10章 ADC和DAC 195

本章目标 195

学习导航 195

任务描述 195

10.1模拟/数字转换器(ADC) 196

10.1.1 ADC功能简介 196

10.1.2 ADC管脚分布和输入源 197

10.1.3通道选择 199

10.1.4 ADC中断 199

10.1.5 DMA请求 199

10.1.6模拟看门狗 200

10.2 ADC的工作模式 200

10.2.1转换模式 201

10.2.2扫描模式 201

10.2.3间断模式 201

10.2.4注入通道管理 201

10.2.5数据对齐 202

10.2.6通道采样时间 202

10.2.7外部触发转换 203

10.3 ADC编程实例 203

10.3.1 ADC配置 203

10.3.2 ADC实例 207

10.4双ADC模式 208

10.4.1同步注入模式 209

10.4.2同步规则模式 209

10.4.3快速交叉模式 209

10.4.4慢速交叉模式 209

10.4.5交替触发模式 210

10.4.6同步注入模式+同步规则模式 210

10.4.7同步规则模式+交替触发模式 210

10.4.8同步注入模式+交叉模式 210

10.5数字/模拟转换器(DAC) 211

10.5.1 DAC功能简介 211

10.5.2 DAC转换 212

10.5.3 DAC输出电压 212

10.5.4 DAC数据格式 212

10.5.5选择DAC触发 213

10.5.6 DMA请求 213

10.6 DAC输出模式 214

10.6.1噪声生成 214

10.6.2三角波生成 214

10.7 DAC编程实例 214

10.7.1 DAC配置 214

10.7.2 DAC实例 217

小结 218

练习 219

第11章 串行外设接口(SPI) 220

本章目标 220

学习导航 220

任务描述 220

11.1 SPI简介 221

11.2 SPI的功能和特点 221

11.3 SPI管脚 222

11.4 SPI的数据发送与接收 222

11.4.1接收与发送缓冲器 223

11.4.2主模式下的数据传输 223

11.4.3从模式下的数据传输 223

11.4.4处理数据的发送与接收 224

11.5 SPI时钟信号的相位和极性 224

11.6 SPI的从设备选择 225

11.7 CRC计算 225

11.8 SPI的DMA 226

11.9 SPI中断 227

11.10 SPI编程实例 227

11.10.1 SPI配置 227

11.10.2 SPI实例 231

小结 237

练习 238

第12章 通用串行总线(USB) 239

本章目标 239

学习导航 239

任务描述 239

12.1 USB简介 240

12.1.1 USB版本 240

12.1.2 USB接口 241

12.1.3总线结构 241

12.1.4 USB接口HID设备 242

12.1.5 USB OTG 243

12.2 USB协议基础 243

12.2.1 USB逻辑组织 243

12.2.2包 244

12.2.3事务 246

12.2.4描述符 247

12.2.5枚举 249

12.3 STM32F107的USB OTG 249

12.3.1通用功能 250

12.3.2 OTG全速控制器 251

12.3.3全速OTG PHY(物理接口) 251

12.3.4 ID信号检测 252

12.3.5上电状态 252

12.3.6软件断开 252

12.3.7默认状态 253

12.3.8挂起状态 253

12.3.9设备端点 253

12.3.10端点配置 254

12.3.11端点传输 254

12.3.12端点状态/中断 254

12.3.13设备SOF 255

12.3.14供电选项 255

12.3.15 USB数据FIFO 256

12.3.16 OTG_FS中断 256

12.4 USB OTG固件库 256

12.4.1 ST USB固件库的文档结构 256

12.4.2 USB开发模板 258

12.5 HID类设备开发模板 260

12.5.1开发模板修改 260

12.5.2主要函数 261

小结 263

练习 264

第13章 以太网(ETH) 265

本章目标 265

学习导航 265

任务描述 265

13.1 ETH简介 266

13.1.1以太网物理层 266

13.1.2以太网的工作方式 267

13.1.3帧结构 267

13.1.4冲突/冲突域 268

13.1.5 IEEE 802.3 268

13.1.6 IEEE 1588 268

13.2 STM32F107的ETH 269

13.2.1 MAC控制器的功能 269

13.2.2 DMA功能 270

13.2.3 PTP功能 271

13.2.4以太网模块的管脚和内部信号 271

13.2.5以太网模块功能描述:RMII 272

13.2.6以太网模块功能描述:MAC 802.3 273

13.2.7 MAC中断 273

13.2.8精确时间协议(IEEE 1588 PTP) 274

13.2.9以太网功能描述:DMA控制器操作 274

13.3 LWIP协议栈 274

13.3.1 LWIP的特性 275

13.3.2 LWIP的结构 275

13.4建立ETH模板 275

13.4.1官方ETH固件库 276

13.4.2修改ETH固件库 276

小结 282

练习 282

第14章 嵌入式界面(μC/GUI) 283

本章目标 283

学习导航 283

任务描述 283

14.1 μC/GUI简介 284

14.1.1 μC/GUI特点 284

14.1.2 μC/GUI文件结构 285

14.1.3 μC/GUI层次结构 286

14.2 μC/GUI功能 286

14.2.1文本显示 287

14.2.2数值显示 288

14.2.3 2-D图形库 288

14.2.4字体 290

14.2.5颜色 290

14.2.6存储设备 292

14.2.7视窗管理器 292

14.2.8窗口对象 294

14.2.9对话框 303

14.3 μC/GUI移植 305

小结 308

练习 308

第15章 嵌入式操作系统(μC/OS-Ⅱ) 309

本章目标 309

学习导航 309

任务描述 309

15.1嵌入式系统程序设计 310

15.1.1嵌入式系统程序设计特点 310

15.1.2嵌入式系统程序结构 311

15.1.3模块化程序设计 312

15.1.4嵌入式操作系统 312

15.2 μC/OS-Ⅱ简介 313

15.3 μC/OS- Ⅱ的时钟和中断 314

15.3.1 μC/OS-Ⅱ的时钟 315

15.3.2 μC/OS-Ⅱ的时间管理 315

15.3.3临界段 316

15.3.4 μC/OS-Ⅱ的中断过程 316

15.4 μC/OS-Ⅱ的任务 317

15.4.1任务 317

15.4.2任务的优先级 318

15.4.3任务的状态 319

15.4.4任务堆栈 319

15.4.5任务控制块 320

15.4.6任务调度 320

15.4.7任务建立 320

15.5 μC/OS- Ⅱ任务的同步与通信 322

15.5.1任务间的同步 322

15.5.2事件 323

15.5.3信号量 323

15.5.4互斥型信号量 326

15.5.5消息邮箱 327

15.5.6消息队列 330

15.5.7信号量集 330

15.6 μC/OS- Ⅱ内存管理 331

15.7 μC/OS- Ⅱ的裁剪 331

小结 332

练习 333

第16章 物联网网关程序设计 334

本章目标 334

学习导航 334

任务描述 334

16.1物联网网关 335

16.1.1物联网 335

16.1.2网关 335

16.1.3物联网网关 335

16.1.4 Zigbee无线传感网 336

16.2网关功能设计 337

16.2.1 CC2530模块 337

16.2.2网关协议转换 337

16.2.3 Zigbee通信协议 337

16.2.4网关功能设计 338

16.3网关界面设计 338

16.3.1网关界面资源表 338

16.3.2回调函数 339

16.4网关任务设计 341

16.4.1网关任务 342

16.4.2任务间同步 346

16.5网关中断设计 347

16.6网关实例 349

16.6.1主函数编写 349

16.6.2网关软件界面 352

16.6.3网关串口输出 353

小结 353

练习 354

实践篇 356

实践1概述 356

实践指导 356

实践1.G. 1 356

实践1.G.2 359

实践1.G.3 360

实践1.G.4 362

知识拓展 368

实践2 STM32F107内核架构 372

实践指导 372

实践2.G. 1 372

实践2.G.2 373

实践2.G.3 375

实践2.G.4 381

知识拓展 384

实践3 通用GPIO和复用AFIO 388

实践指导 388

实践3.G. 1 388

知识拓展 391

实践4 NVIC和EXTI 393

实践指导 393

实践4.G.1 393

实践4.G.2 396

实践4.G.3 399

知识拓展 405

实践5 定时器(TIM) 407

实践指导 407

实践5.G. 1 407

实践5.G.2 410

实践5.G.3 414

实践6 看门狗(DWG) 418

实践指导 418

实践6.G. 1 418

实践6.G.2 420

实践7 通用同步/异步收发器(USART) 424

实践指导 424

实践7.G. 1 424

实践7.G.2 426

实践8 直接存储器访问(DMA) 429

实践指导 429

实践8.G.1 429

实践9 控制局域网络(CAN) 432

实践指导 432

实践9.G..1 432

实践9.G.2 433

实践10 ADC和DAC 442

实践指导 442

实践10.G. 1 442

实践10.G.2 443

实践11 串行外设接口(SPI) 449

实践指导 449

实践11.G.1 449

实践11.G. 2 450

实践12通用串行总线(USB) 453

实践指导 453

实践12.G.1 453

实践12.G.2 454

实践13以太网(ETH) 466

实践指导 466

实践13.G.1 466

实践13.G.2 468

实践14嵌入式界面(μC/GUI) 476

实践指导 476

实践14.G.1 476

实践14.G.2 477

实践14.G.3. 480

实践15嵌入式操作系统(μC/OS-Ⅱ) 484

实践指导 484

实践15.G.1 484

实践15.G.2 486

实践16物联网网关程序设计 489

实践指导 489

实践16.G.1 489

附录A STM32F107管脚定义 504

附录B STM32F107中断映射 509

附录C 复用功能的GPIO配置 512

附录D STM32F107重映射 515