图书介绍
ARM Cortex-M0与Cortex-M0+权威指南 第2版2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

- Jsoseph Yiu著;吴常玉,张淑,吴卫东译 著
- 出版社: 北京:清华大学出版社
- ISBN:9787302473312
- 出版时间:2018
- 标注页数:608页
- 文件大小:70MB
- 文件页数:639页
- 主题词:微处理器-指南
PDF下载
下载说明
ARM Cortex-M0与Cortex-M0+权威指南 第2版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 概论1
1.1 欢迎来到嵌入式处理器的世界1
1.1.1 处理器有什么作用1
1.1.2 处理器、CPU、内核、微控制器及其命名2
1.1.3 嵌入式系统的编程2
1.1.4 学习微控制器需要了解什么3
1.2 理解处理器的类型3
1.2.1 处理器为什么有很多种类3
1.2.2 ARM处理器家族概述4
1.2.3 模糊边界6
1.2.4 ARM Cortex-M处理器系列6
1.2.5 ARM Cortex-M0和Cortex-M0+处理器简介9
1.2.6 从Cortex-M0处理器到Cortex-M0+处理器10
1.2.7 Cortex-M0和Cortex-M0+处理器的应用13
1.3 微控制器内部有什么14
1.3.1 微控制器内常见部件14
1.3.2 微控制器应用的处理器的特点15
1.3.3 硅片技术17
1.4 ARM介绍17
1.4.1 ARM生产芯片吗17
1.4.2 ARM的产品是什么17
1.4.3 芯片厂商为什么不设计自己的处理器18
1.4.4 ARM生态系统有什么特殊之处18
1.5 ARM处理器和ARM微控制器方面的资源19
1.5.1 ARM主页19
1.5.2 微控制器厂商提供的资源21
1.5.3 工具厂商提供的资源21
1.5.4 其他资源22
第2章 技术综述23
2.1 Cortex-M0和Cortex-M0+处理器23
2.2 模块框图25
2.3 典型系统27
2.4 什么是ARMv6-M架构29
2.5 Cortex-M处理器间的软件可移植性30
2.6 ARM Cortex-M0和Cortex-M0+处理器的优势31
2.6.1 低功耗和能耗效率31
2.6.2 高代码密度32
2.6.3 低中断等待和确定行为32
2.6.4 易于使用32
2.6.5 系统级特性和OS支持特性33
2.6.6 调试特性33
2.6.7 可配置性、灵活性和可扩展性33
2.6.8 软件可移植性和可重用性34
2.6.9 产品选择的多样性34
2.6.10 生态系统支持35
2.7 Cortex-M0和Cortex-M0+处理器的应用35
2.7.1 微控制器35
2.7.2 传感器36
2.7.3 传感器集线器36
2.7.4 电源管理IC36
2.7.5 ASSP和ASIC36
2.7.6 片上系统中的子系统37
2.8 为什么要在微控制器应用中使用32位处理器37
2.8.1 性能37
2.8.2 代码密度38
2.8.3 ARM架构的其他优势40
2.8.4 软件可重用性41
第3章 嵌入式软件开发介绍42
3.1 欢迎进入嵌入式系统编程42
3.2 基本概念42
3.2.1 复位42
3.2.2 时钟43
3.2.3 电压43
3.2.4 输入和输出44
3.2.5 嵌入式软件程序流程介绍44
3.2.6 编程语言选择48
3.3 ARM Cortex-M编程介绍49
3.3.1 C编程数据类型49
3.3.2 用C访问外设50
3.3.3 程序映像内有什么54
3.3.4 SRAM中的数据55
3.3.5 微控制器启动时会发生什么56
3.4 软件开发流程58
3.5 Cortex微控制器软件接口标准60
3.5.1 CMSIS介绍60
3.5.2 CMSIS-CORE所做的标准化62
3.5.3 CMSIS-CORE的组织63
3.5.4 使用CMSIS-CORE63
3.5.5 CMSIS的优势66
3.6 软件开发的其他信息67
第4章 架构68
4.1 ARMv6-M架构综述68
4.1.1 架构的含义68
4.1.2 ARMv6-M架构背景68
4.2 编程模型69
4.2.1 操作模式和状态69
4.2.2 寄存器和特殊寄存器71
4.2.3 APSR的行为75
4.3 存储器系统76
4.3.1 概述76
4.3.2 单周期I/O接口77
4.3.3 存储器保护单元78
4.4 栈存储操作78
4.5 异常和中断80
4.6 嵌套向量中断控制器81
4.6.1 灵活的中断管理81
4.6.2 嵌套中断支持82
4.6.3 向量异常入口82
4.6.4 中断屏蔽82
4.7 系统控制块82
4.8 调试系统82
4.9 程序映像和启动流程83
第5章 指令集86
5.1 指令集是什么86
5.2 ARM和Thumb指令集背景87
5.3 汇编基础89
5.3.1 汇编语法一览89
5.3.2 后缀的使用93
5.3.3 统一汇编语言(UAL)93
5.4 指令列表94
5.4.1 处理器内传送数据95
5.4.2 存储器访问97
5.4.3 栈存储访问101
5.4.4 算术运算102
5.4.5 逻辑运算107
5.4.6 移位和循环移位运算109
5.4.7 展开和顺序反转运算111
5.4.8 程序流控制113
5.4.9 存储器屏障指令115
5.4.10 异常相关指令117
5.4.11 休眠模式特性相关指令118
5.4.12 其他指令119
5.5 伪指令120
第6章 指令使用示例122
6.1 概述122
6.2 程序控制122
6.2.1 if-then-else122
6.2.2 循环123
6.2.3 跳转指令123
6.2.4 跳转指令的典型用法124
6.2.5 函数调用和函数返回125
6.2.6 跳转表126
6.3 数据访问128
6.3.1 简单数据访问128
6.3.2 使用存储器访问指令的例子128
6.4 数据类型转换130
6.4.1 数据大小的转换131
6.4.2 大小端转换131
6.5 数据处理132
6.5.1 64位/128位加法132
6.5.2 64位/128位减法133
6.5.3 整数除法133
6.5.4 无符号整数开方根135
6.5.5 位和位域计算136
第7章 存储器系统139
7.1 微控制器中的存储器系统139
7.2 Cortex-M0和Cortex-M0+处理器中的总线系统140
7.3 存储器映射141
7.3.1 概述141
7.3.2 系统级设计143
7.4 程序存储器、Bootloader和存储器重映射144
7.4.1 程序存储器和Bootloader144
7.4.2 存储器映射144
7.5 数据存储器145
7.6 小端和大端支持146
7.7 数据类型148
7.8 存储器属性和存储器访问权限149
7.9 硬件行为对编程的影响151
7.9.1 数据对齐151
7.9.2 访问非法地址152
7.9.3 多加载和存储指令的使用152
7.9.4 等待状态152
第8章 异常和中断154
8.1 异常和中断的含义154
8.2 Cortex-M0和Cortex-M0+处理器内的异常类型155
8.2.1 概述155
8.2.2 不可屏蔽中断156
8.2.3 HardFault156
8.2.4 SVC156
8.2.5 可挂起的系统调用156
8.2.6 系统节拍157
8.2.7 中断157
8.3 NVIC简介157
8.4 异常优先级定义158
8.5 向量表159
8.6 异常流程概述161
8.6.1 接受异常161
8.6.2 压栈和出栈161
8.6.3 异常返回指令162
8.6.4 末尾连锁162
8.6.5 延迟到达162
8.7 EXC RETURN163
8.8 用于中断控制的NVIC控制寄存器166
8.8.1 NVIC控制寄存器概述166
8.8.2 中断使能和清除使能166
8.8.3 中断挂起和清除挂起168
8.8.4 中断优先级169
8.9 异常屏蔽寄存器(PRIMASK)171
8.10 中断输入和挂起行为172
8.10.1 简单中断处理172
8.10.2 简单的脉冲中断处理173
8.10.3 中断挂起状态在得到服务前取消173
8.10.4 外设在确认中断请求时清除挂起状态174
8.10.5 ISR完成后中断请求保持为高174
8.10.6 进入ISR前产生了多个中断请求脉冲175
8.10.7 在ISR执行期间产生了中断请求脉冲175
8.10.8 已禁止中断的中断请求确认176
8.11 异常入口流程176
8.11.1 压栈176
8.11.2 取出向量并更新PC178
8.11.3 更新寄存器178
8.12 异常退出流程178
8.12.1 寄存器出栈179
8.12.2 从返回地址取指并执行180
8.13 中断等待180
第9章 系统控制和低功耗特性181
9.1 系统控制寄存器简介181
9.2 SCB中的寄存器182
9.2.1 SCB中的寄存器列表182
9.2.2 CPU ID寄存器182
9.2.3 用于系统异常管理的控制寄存器183
9.2.4 向量表偏移寄存器184
9.2.5 应用中断和复位控制寄存器185
9.2.6 系统控制寄存器186
9.2.7 配置和控制寄存器186
9.2.8 系统处理控制和状态寄存器187
9.3 使用自复位特性187
9.4 使用向量表重定位特性189
9.5 低功耗特性190
9.5.1 概述190
9.5.2 休眠模式191
9.5.3 等待事件和等待中断192
9.5.4 唤醒条件194
9.5.5 退出时休眠特性196
9.5.6 唤醒中断控制器197
第10章 操作系统支持特性200
10.1 支持OS的特性概述200
10.2 嵌入式系统的操作系统介绍200
10.3 SysTick定时器202
10.3.1 SysTick寄存器202
10.3.2 设置SysTick204
10.3.3 SysTick用于时间测量206
10.3.4 将SysTick用作单发定时器206
10.4 进程栈和 PSP207
10.5 SVCall异常211
10.6 PendSV212
10.7 高级话题:在编程中使用SVC和PendSV213
10.7.1 使用SVC异常214
10.7.2 使用PendSV异常217
10.8 高级话题:实际的上下文切换219
第11章 错误处理232
11.1 错误异常概述232
11.2 错误是如何产生的232
11.3 分析错误233
11.4 意外切换至ARM状态234
11.5 实际应用中的错误处理234
11.6 软件开发期间的错误处理235
11.7 锁定237
11.7.1 锁定的原因238
11.7.2 锁定期间发生了什么238
11.8 避免锁定239
11.9 和ARMv7-M架构中错误处理的对比240
第12章 存储器保护单元242
12.1 MPU是什么242
12.2 MPU适用的情形242
12.3 技术介绍244
12.4 MPU寄存器244
12.4.1 MPU类型寄存器245
12.4.2 MPU控制寄存器245
12.4.3 MPU区域编号寄存器246
12.4.4 MPU区域基地址寄存器247
12.4.5 MPU区域基本属性和大小寄存器247
12.5 设置MPU250
12.6 存储器屏障和MPU配置256
12.7 使用子区域禁止257
12.7.1 允许高效的存储器划分257
12.7.2 减少所需的区域总数258
12.8 使用MPU时的注意事项259
12.8.1 程序代码259
12.8.2 数据存储器259
12.9 和Cortex-M3/M4/M7处理器的MPU间的差异259
第13章 调试特性261
13.1 软件开发和调试特性261
13.2 调试接口262
13.2.1 JTAG和串行线调试通信协议262
13.2.2 Cortex-M处理器和CoreSight调试架构264
13.2.3 调试接口的设计考虑265
13.3 调试特性一览265
13.4 调试系统266
13.5 暂停模式和调试事件267
13.6 利用MTB实现指令跟踪268
第14章 Keil微控制器开发套件入门272
14.1 Keil微控制器开发套件介绍272
14.1.1 概述272
14.1.2 工具272
14.1.3 Keil MDK的优势273
14.1.4 安装273
14.2 典型的程序编译流程274
14.3 硬件介绍276
14.3.1 Freescale Freedom开发板(FRDM-KL25Z)276
14.3.2 STMicroelectronics STM32L0 Discovery277
14.3.3 STMicroelectronics STM32F0 Discovery278
14.3.4 NXP LPC1114FN28278
14.4 μVision IDE入门279
14.4.1 如何开始279
14.4.2 启动Keil MDK279
14.4.3 Freescale FRDM-KL25Z工程设置步骤280
14.4.4 ST Microelectronics STM32L0 Discovery工程设置步骤290
14.4.5 STMicroelectronice STM32F0 Discovery工程设置步骤300
14.4.6 NXP LPC1114FN28工程设置步骤310
14.5 使用IDE和调试器319
14.6 底层内容322
14.6.1 CMSIS文件322
14.6.2 时钟设置323
14.6.3 栈和堆的设置323
14.6.4 编译324
14.7 工程环境的优化324
14.7.1 目标选项324
14.7.2 优化选项326
14.7.3 运行时环境选项328
14.7.4 工程管理328
14.8 使用模拟器330
14.9 在SRAM中执行程序331
14.10 使用MTB指令跟踪333
第15章 IAR embedded workbench for ARM入门336
15.1 IAR embedded workbench for ARM概述336
15.2 典型的程序编译流程337
15.3 创建简单的blinky工程339
15.4 工程选项344
15.5 在IAR EWARM中使用MTB指令跟踪346
15.6 提示和要点347
第16章 GCC入门351
16.1 GCC工具链351
16.2 关于本章中的例子351
16.3 典型开发流程352
16.4 创建简单的Blinky工程354
16.5 命令行选项概述355
16.6 Flash编程358
16.7 在Keil MDK-ARM中使用ARM嵌入式处理器GNU工具360
16.8 在CooCox IDE中使用ARM嵌入式处理器GNU工具367
16.8.1 概述和设置367
16.8.2 创建新的工程369
16.8.3 使用IDE和调试器375
第17章 mbed入门377
17.1 什么是mbed377
17.2 mbed系统是怎么工作的378
17.3 mbed的优势380
17.4 设置FRDM-KL25Z板和mbed账号380
17.4.1 检查mbed Web网页380
17.4.2 注册mbed账号380
17.4.3 个入计算机的设置381
17.5 创建blinky程序381
17.5.1 只开关红色LED的简单版本381
17.5.2 利用脉宽调试控制LED383
17.6 支持的常用外设对象384
17.7 使用printf385
17.8 应用实例:火车模型控制器387
17.9 中断392
17.10 要点和提示393
第18章 编程实例395
18.1 利用通用异步收发器来产生输出395
18.1.1 通用异步收发器通信概述395
18.1.2 微控制器上的UART配置概述397
18.1.3 配置FRDM-KL25Z中的UART397
18.1.4 配置STM32L0 Discovery板中的UART399
18.1.5 配置STM32F0 Discovery板上的UART400
18.1.6 配置LPC1114FN28上的UART401
18.2 实现printf404
18.2.1 概述404
18.2.2 Keil MDK的重定向405
18.2.3 IAR EWARM的重定向406
18.2.4 GNU编译器套件的重定向407
18.2.5 IAR EWARM的半主机407
18.2.6 CoIDE的半主机409
18.3 开发输入和输出函数410
18.3.1 为何要重新开发410
18.3.2 其他接口413
18.3.3 有关scanf的其他信息413
18.4 中断编程实例414
18.4.1 中断处理概述414
18.4.2 中断控制函数概述415
18.5 应用实例:火车模型用的另一个控制器416
18.6 CMSIS-CORE的不同版本419
第19章 超低功耗设计422
19.1 超低功耗使用示例422
19.1.1 概述422
19.1.2 进入休眠模式422
19.1.3 WFE与WFI423
19.1.4 利用退出时休眠特性424
19.1.5 利用挂起发送事件特性426
19.1.6 利用唤醒中断控制器426
19.1.7 利用事件通信接口427
19.2 低功耗设计要求429
19.3 能量去哪里了429
19.4 开发低功耗应用431
19.4.1 低功耗设计概述431
19.4.2 降低功耗的各种方法432
19.4.3 选择正确的方法433
19.5 调试考虑434
19.5.1 调试和低功耗434
19.5.2 调试和Flash编程的“安全模式”434
19.5.3 低电压引脚和调试接口434
19.6 低电压设备的检测434
19.6.1 ULPBench的背景434
19.6.2 ULPBench-CP概述435
19.7 Freescale KL25Z低功耗特性使用示例438
19.7.1 目标438
19.7.2 测试设置438
19.7.3 KL25Z的低功耗模式438
19.7.4 时钟设计439
19.7.5 测试设置440
19.7.6 测量结果445
19.8 LPC1114低功耗特性使用示例446
19.8.1 LPC1114FN28概述446
19.8.2 实验1:使用12MHz内部和外部晶振448
19.8.3 实验2:使用降频1MHz和100kHz451
19.8.4 其他改进452
19.8.5 利用LPC1114的深度休眠453
第20章 嵌入式OS编程460
20.1 介绍460
20.1.1 背景460
20.1.2 嵌入式OS和RTOS460
20.1.3 为什么要使用嵌入式OS461
20.1.4 CMSIS-RTOS的作用461
20.1.5 关于Keil RTX Kernel462
20.1.6 在Keil MDK中构建一个简单RTX实例463
20.2 RTX Kernel概述467
20.2.1 线程467
20.2.2 RTX配置468
20.2.3 深入研究第一个例子469
20.2.4 线程间通信概述472
20.2.5 信号事件通信472
20.2.6 互斥体(Mutex)476
20.2.7 信号量478
20.2.8 消息队列481
20.2.9 邮件队列483
20.2.10 内存池管理特性485
20.2.11 通用等待函数和超时数值488
20.2.12 定时器特性488
20.2.13 给非特权线程增加SVC服务491
20.3 在应用中使用RTX495
20.4 调试RTX应用498
20.5 疑难解答499
20.5.1 栈大小需求499
20.5.2 优先级499
20.5.3 利用OS错误报告500
20.5.4 OS特性配置500
20.5.5 其他问题500
20.6 其他要点和提示500
20.6.1 修改RTX_Config_CM.c500
20.6.2 线程优先级501
20.6.3 缩短等待时间501
20.6.4 其他信息501
第21章 混合语言工程502
21.1 汇编在工程开发中的应用502
21.2 汇编编程实践和AAPCS503
21.3 汇编函数概述504
21.3.1 ARM工具链504
21.3.2 GCC工具链505
21.3.3 IAR Embedded Workbench for ARM506
21.3.4 汇编函数结构506
21.4 内联汇编507
21.4.1 ARM工具链507
21.4.2 GNU编译器组件508
21.5 嵌入汇编特性(ARM工具链)509
21.6 混合语言工程510
21.6.1 概述510
21.6.2 在汇编代码中调用C函数510
21.6.3 在C代码中调用汇编函数511
21.7 在Keil MDK-ARM中创建汇编工程512
21.7.1 一个简单的工程512
21.7.2 Hello World513
21.7.3 其他文本输出函数514
21.8 用于中断控制的通用汇编代码516
21.8.1 使能和禁止中断516
21.8.2 设置和清除中断挂起状态517
21.8.3 设置中断优先级518
21.9 汇编语言的其他编程技巧519
21.9.1 为变量分配数据空间519
21.9.2 复杂跳转处理522
21.10 使用特殊指令522
21.10.1 CMSIS-CORE522
21.10.2 习语识别524
第22章 软件移植525
22.1 概述525
22.2 从8位/16位微控制器向ARM Cortex-M移植软件525
22.2.1 通用改动525
22.2.2 存储器需求527
22.2.3 8位或16位微控制器不再适用的优化528
22.2.4 实例:从8051移植到ARM Cortex-M0/Cortex-M0+528
22.3 ARM7TDMI和Cortex-M0/M0+处理器间的差异530
22.3.1 经典ARM处理器概述530
22.3.2 操作模式531
22.3.3 寄存器532
22.3.4 指令集533
22.3.5 中断533
22.4 从ARM7TDMI向Cortex-M0/Cortex-M0+处理器移植软件533
22.4.1 启动代码和向量表533
22.4.2 中断534
22.4.3 C程序代码535
22.4.4 汇编代码535
22.4.5 原子访问535
22.4.6 优化536
22.5 各种Cortex-M处理器间的差异536
22.5.1 概述536
22.5.2 系统模型537
22.5.3 NVIC和异常538
22.5.4 指令集540
22.5.5 系统级特性541
22.5.6 调试和跟踪特性541
22.6 在Cortex-M处理器间移植时的通用改动542
22.7 Cortex-M0/M0+和Cortex-M1间的软件移植543
22.8 Cortex-M0/M0+和Cortex-M3间的软件移植543
22.9 Cortex-M0/M0+和Cortex-M4/M7间的软件移植545
第23章 高级话题547
23.1 C语言实现的位数据处理547
23.2 C实现的启动代码549
23.3 栈溢出检测554
23.3.1 什么是栈溢出554
23.3.2 工具链的栈分析554
23.3.3 栈的测试分析555
23.3.4 利用存储器保护单元对栈进行限制555
23.3.5 OS上下文切换期间的栈检测556
23.4 中断服务程序重入556
23.5 信号量设计558
23.6 存储器顺序和存储器屏障558
附录A 指令集快速参考561
附录B 异常类型快速参考565
B.1 异常类型565
B.2 异常压栈后栈的内容566
附录C CMSIS-CORE快速参考567
C.1 数据类型567
C.2 异常枚举567
C.3 嵌套向量中断控制器访问函数568
C.4 系统和SysTick操作函数569
C.5 内核寄存器操作函数570
C.6 特殊指令操作函数570
附录D NVIC、SCB和SysTick寄存器快速参考571
D.1 NVIC寄存器一览571
D.2 中断设置使能寄存器(NVIC->ISER)571
D.3 中断清除使能寄存器(NVIC->ICER)571
D.4 中断设置挂起寄存器(NVIC->ISPR)572
D.5 中断清除挂起寄存器(NVIC->ICPR)572
D.6 中断优先级寄存器(NVIC->IRQ[0]到NVIC->IRQ[7])573
D.7 SCB寄存器一览573
D.8 CPU ID寄存器(SCB->CPUID)573
D.9 中断控制状态寄存器(SCB->ICSR)574
D.10 向量表偏移寄存器(SCB->VTOR,0xE000ED08)575
D.11 应用中断和控制状态寄存器(SCB->AIRCR)575
D.12 系统控制寄存器(SCB->SCR)575
D.13 配置控制寄存器(SCB->CCR)576
D.14 系统处理优先级寄存器2(SCB->SHR[0])576
D.15 系统处理优先级寄存器3(SCB->SHR[1])576
D.16 系统处理控制和状态寄存器577
D.17 SysTick寄存器一览577
D.18 SysTick控制和状态寄存器(SysTick->CTRL)577
D.19 SysTick重装载值寄存器(SysTick->LOAD)578
D.20 SysTick当前值寄存器(SysTick->VAL)578
D.21 SysTick校准值寄存器(SysTick->CALIB)578
附录E 调试寄存器快速参考579
E.1 内核调试寄存器579
E.2 断点单元581
E.3 数据监视点单元582
E.4 ROM表寄存器584
E.5 微跟踪缓冲584
E.6 POSITION寄存器586
E.7 MASTER寄存器586
E.8 FLOW寄存器587
E.9 BASE寄存器587
E.10 包格式587
E.11 实例588
附录F 调试接头分配590
F.1 10针Cortex调试连接头590
F.2 20针Cortex调试+ETM接头590
F.3 老式的20针IDC接头排列591
附录G 疑难解答592
G.1 程序不运行/启动592
G.1.1 向量表丢失或位置错误592
G.1.2 使用了错误的C启动代码592
G.1.3 复位向量中的值错误592
G.1.4 程序映像没有被正确地编程到Flash中593
G.1.5 错误的工具链配置593
G.1.6 错误的栈指针初始值593
G.1.7 错误的大小端设置593
G.2 程序启动,却进入了硬件错误593
G.2.1 非法存储器访问594
G.2.2 非对齐数据访问594
G.2.3 存储器访问权限(只限于Cortex-M0+处理器)594
G.2.4 从总线返回错误594
G.2.5 异常处理中的栈被破坏595
G.2.6 程序在某些C函数中崩溃595
G.2.7 意外地试图切换至ARM状态595
G.2.8 在错误的优先级上执行SVC595
G.3 休眠问题595
G.3.1 执行WFE不进入休眠595
G.3.2 退出时休眠过早地引起休眠595
G.3.3 中断已经在挂起态时SEVONPEND不工作596
G.3.4 由于休眠模式可能禁止了某些时钟,处理器无法唤醒596
G.3.5 竞态596
G.4 中断问题597
G.4.1 执行了多余的中断处理597
G.4.2 执行了多余的SysTick处理597
G.4.3 在中断处理中禁止中断597
G.4.4 错误的中断返回指令597
G.4.5 异常优先级设置的数值598
G.5 其他问题598
G.5.1 错误的SVC参数传递方法598
G.5.2 调试连接受到I/O设置或低功耗模式的影响598
G.5.3 调试协议选择/配置598
G.5.4 使用事件输出作为脉冲I/O598
G.5.5 向量表和代码位置的设备实际需求599
G.6 其他可能的编程陷阱599
G.6.1 中断优先级599
G.6.2 同时使用主栈和进程栈时的栈溢出599
G.6.3 数据对齐600
G.6.4 丢失volatile关键字600
G.6.5 函数指针601
G.6.6 读-修改-写601
G.6.7 中断禁止601
G.6.8 SystemInit函数602
G.6.9 断点和内联602
附录H ARM Cortex-M0微控制器面包板工程604
H.1 背景604
H.2 硬件设计604
附录I 参考文档607
热门推荐
- 1596958.html
- 1672708.html
- 287740.html
- 1671194.html
- 1442894.html
- 500522.html
- 116731.html
- 2981795.html
- 1230004.html
- 3758624.html
- http://www.ickdjs.cc/book_3182196.html
- http://www.ickdjs.cc/book_1797558.html
- http://www.ickdjs.cc/book_557009.html
- http://www.ickdjs.cc/book_1848758.html
- http://www.ickdjs.cc/book_387335.html
- http://www.ickdjs.cc/book_1702850.html
- http://www.ickdjs.cc/book_3140168.html
- http://www.ickdjs.cc/book_3145344.html
- http://www.ickdjs.cc/book_1651030.html
- http://www.ickdjs.cc/book_1361659.html