懒人资源论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 7765|回复: 0

[单片机] ARM+Cortex-M3与Cortex-M4权威指南 中文扫描版 带书签

[复制链接]

42

主题

0

回帖

571

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
571
发表于 2020-8-12 02:00:48 | 显示全部楼层 |阅读模式
ARM Cortex-M3与Cortex-M4权威指南.z01 (60 MB, 下载次数: 10) ARM Cortex-M3与Cortex-M4权威指南.zip (53.49 MB, 下载次数: 82)
分卷压缩的  请将两个附件下载到同一目录中解压。




目录
译者序
推荐序
前言
关于本书
术语和缩写
本书约定
第1章 ARM CortexM处理器简介
第2章 嵌入式软件开发简介
第3章 技术综述
第4章 架构
第5章 指令集
第6章 存储器系统
第7章 异常和中断
第8章 深入了解异常处理
第9章 低功耗和系统控制特性
第10章 OS支持特性
第11章 存储器保护单元
第12章 错误异常和错误处理
第13章 浮点运算
第14章 调试和跟踪特性
第15章 Keil ARM微控制器开发套件入门
第16章 IAR Embedded Workbench for ARM入门
第17章 GCC入门
第18章 输入和输出软件实例
第19章 使用嵌入式操作系统
第20章 汇编和混合语言工程
第21章 ARM CortexM4和DSP应用
第22章 使用ARM CMSISDSP库
第23章 高级话题
第24章 软件移植
参考文献
附录


封面.png
封面2.png

第1章ARMCortexM处理器简介
1.1什么是ARMCortexM处理器
1.1.1CortexM3和CortexM4处理器
1.1.2CortexM处理器家族
1.1.3处理器和微控制器的区别
1.1.4ARM和微控制器供应商
1.1.5选择CortexM3和CortexM4微控制器
1.2CortexM处理器的优势
1.2.1低功耗
1.2.2性能
1.2.3能耗效率
1.2.4代码密度
1.2.5中断
1.2.6易于使用
1.2.7可扩展性
1.2.8调试特性
1.2.9OS支持
1.2.10多种系统特性
1.2.11软件可移植性和可重用性
1.2.12选择(设备、工具和OS等)
1.3ARMCortexM处理器应用
1.4ARM处理器和ARM微控制器的资源
1.4.1ARM网站上有什么
1.4.2微控制器供应商提供的文档
1.4.3工具供应商提供的文档
1.4.4其他资源
1.5背景和历史
1.5.1ARM简史
1.5.2ARM处理器的发展
1.5.3ThumbISA的架构版本
1.5.4处理器命名
1.5.5关于ARM生态系统
第2章嵌入式软件开发简介
2.1ARM微控制器是怎样构成的
2.2开始时需要准备什么
2.2.1开发组件
2.2.2开发板
2.2.3调试适配器
2.2.4软件设备驱动
2.2.5例子
2.2.6文档和其他资源
2.2.7其他设备
2.3软件开发流程
2.4编译应用程序
2.5软件流程
2.5.1轮询
2.5.2中断驱动
2.5.3多任务系统
2.6C程序中的数据类型
2.7输入、输出和外设访问
2.8微控制器接口
2.9Cortex微控制器软件接口标准(CMSIS)
2.9.1CMSIS简介
2.9.2CMSISCore所做的标准化
2.9.3CMSISCore的组织结构
2.9.4如何使用CMSISCore
2.9.5CMSIS的优势
2.9.6CMSIS的多个版本
第3章技术综述
3.1CortexM3和CortexM4处理器的一般信息
3.1.1处理器类型
3.1.2处理器架构
3.1.3指令集
3.1.4模块框图
3.1.5存储器系统
3.1.6中断和异常支持
3.2CortexM3和CortexM4处理器的特性
3.2.1性能
3.2.2代码密度
3.2.3低功耗
3.2.4存储器系统
3.2.5存储器保护单元
3.2.6中断处理
3.2.7OS支持和系统级特性
3.2.8CortexM4的特殊特性
3.2.9易于使用
3.2.10调试支持
3.2.11可扩展性
3.2.12兼容性
第4章架构
4.1架构简介
4.2编程模型
4.2.1操作模式和状态
4.2.2寄存器
4.2.3特殊寄存器
4.2.4浮点寄存器
4.3应用程序状态寄存器
4.3.1整数状态标志
4.3.2Q状态标志
4.3.3GE位
4.4存储器系统
4.4.1存储器系统特性
4.4.2存储器映射
4.4.3栈存储
4.4.4存储器保护单元(MPU)
4.5异常和中断
4.5.1什么是异常
4.5.2嵌套向量中断控制器(NVIC)
4.5.3向量表
4.5.4错误处理
4.6系统控制块(SCB)
4.7调试
4.8复位和复位流程
第5章指令集
5.1ARMCortexM处理器指令集的背景简介
5.2ARMCortexM处理器间的指令集比较
5.3理解汇编语言语法
5.4指令后缀的使用
5.5统一汇编语言(UAL)
5.6指令集
5.6.1处理器内传送数据
5.6.2存储器访问指令
5.6.3算术运算
5.6.4逻辑运算
5.6.5移位和循环移位指令
5.6.6数据转换运算(展开和反序)
5.6.7位域处理指令
5.6.8比较和测试
5.6.9程序流控制
5.6.10饱和运算
5.6.11异常相关指令
5.6.12休眠模式相关指令
5.6.13存储器屏障指令
5.6.14其他指令
5.6.15不支持的指令
5.7CortexM4特有的指令
5.7.1CortexM4的增强DSP扩展简介
5.7.2SIMD和饱和指令
5.7.3乘法和MAC指令
5.7.4打包和解包
5.7.5浮点指令
5.8桶形移位器
5.9在编程中访问特殊寄存器和特殊指令
5.9.1简介
5.9.2内在函数
5.9.3内联汇编和嵌入汇编
5.9.4使用其他的编译器相关的特性
5.9.5访问特殊寄存器
第6章存储器系统
6.1存储器系统特性简介
6.2存储器映射
6.3连接处理器到存储器和外设
6.4存储器需求
6.5存储器的端
6.6数据对齐和非对齐数据访问支持
6.7位段操作
6.7.1简介
6.7.2位段操作的优势
6.7.3不同数据大小的位段操作
6.7.4C程序实现的位段操作
6.8默认的存储器访问权限
6.9存储器访问属性
6.10排他访问
6.11存储器屏障
6.12微控制器中的存储器系统
第7章异常和中断
7.1异常和中断简介
7.2异常类型
7.3中断管理简介
7.4优先级定义
7.5向量表和向量表重定位
7.6中断输入和挂起行为
7.7异常流程简介
7.7.1接受异常请求
7.7.2异常进入流程
7.7.3执行异常处理
7.7.4异常返回
7.8中断控制用的NVIC寄存器细节
7.8.1简介
7.8.2中断使能寄存器
7.8.3设置中断挂起和清除中断挂起
7.8.4活跃状态
7.8.5优先级
7.8.6软件触发中断寄存器
7.8.7中断控制器类型寄存器
7.9用于异常和中断控制的SCB寄存器细节
7.9.1SCB寄存器简介
7.9.2中断控制和状态寄存器(ICSR)
7.9.3向量表偏移寄存器(VTOR)
7.9.4应用中断和复位控制寄存器(AIRCR)
7.9.5系统处理优先级寄存器(SCB>SHP[0~11])
7.9.6系统处理控制和状态寄存器(SCB>SHCSR)
7.10用于异常或中断屏蔽的特殊寄存器细节
7.10.1PRIMASK
7.10.2FAULTMASK
7.10.3BASEPRI
7.11设置中断的步骤示例
7.11.1简单情况
7.11.2向量表重定位时的情况
7.12软件中断
7.13要点和提示
第8章深入了解异常处理
8.1简介
8.1.1关于本章
8.1.2C实现的异常处理
8.1.3栈帧
8.1.4EXC_RETURN
8.2异常流程
8.2.1异常进入和压栈
8.2.2异常返回和出栈
8.3中断等待和异常处理优化
8.3.1什么是中断等待
8.3.2多周期指令执行时的中断
8.3.3末尾连锁
8.3.4延迟到达
8.3.5出栈抢占
8.3.6惰性压栈
第9章低功耗和系统控制特性
9.1低功耗设计
9.1.1低功耗对微控制器有什么意义
9.1.2低功耗系统需求
9.1.3CortexM3和CortexM4处理器的低功耗特点
9.2低功耗特性
9.2.1休眠模式
9.2.2系统控制寄存器(SCR)
9.2.3进入休眠模式
9.2.4唤醒条件
9.2.5退出时休眠特性
9.2.6挂起发送事件(SEVONPEND)
9.2.7休眠扩展/唤醒延迟
9.2.8唤醒中断控制器(WIC)
9.2.9事件通信接口
9.3在编程中使用WFI和WFE
9.3.1何时使用WFI
9.3.2使用WFE
9.4开发低功耗应用
9.4.1降低动态功耗
9.4.2降低活跃周期
9.4.3减小休眠模式电流
9.5SysTick定时器
9.5.1为什么要有SysTick定时器
9.5.2SysTick定时器操作
9.5.3使用SysTick定时器
9.5.4其他考虑
9.6自复位
9.7CPUID基本寄存器
9.8配置控制寄存器
9.8.1CCR简介
9.8.2STKALIGN位
9.8.3BFHFNMIGN位
9.8.4DIV_O_TRP位
9.8.5UNALIGN_TRP位
9.8.6USERSETMPEND位
9.8.7NONBASETHRDENA位
9.9辅助控制寄存器
9.10协处理器访问控制寄存器
第10章OS支持特性
10.1OS支持特性简介
10.2影子栈指针
10.3SVC异常
10.4PendSV异常
10.5实际的上下文切换
10.6排他访问和嵌入式OS
第11章存储器保护单元
11.1MPU简介
11.1.1关于MPU
11.1.2使用MPU
11.2MPU寄存器
11.2.1MPU类型寄存器
11.2.2MPU控制寄存器
11.2.3MPU区域编号寄存器
11.2.4MPU基地址寄存器
11.2.5MPU区域基本属性和大小寄存器
11.2.6MPU别名寄存器
11.3设置MPU
11.4存储器屏障和MPU配置
11.5使用子区域禁止
11.5.1允许高效的存储器划分
11.5.2减少所需的区域总数
11.6使用MPU时的注意事项
11.6.1程序代码
11.6.2数据存储器
11.6.3外设
11.7MPU的其他用法
11.8与CortexM0+处理器中的MPU间的差异
第12章错误异常和错误处理
12.1错误异常简介
12.2错误的原因
12.2.1存储器管理(MemManage)错误
12.2.2总线错误
12.2.3使用错误
12.2.4HardFault
12.3使能错误处理
12.3.1MemManage错误
12.3.2总线错误
12.3.3使用错误
12.3.4HardFault
12.4错误状态寄存器和错误地址寄存器
12.4.1简介
12.4.2MemManage错误信息
12.4.3总线错误信息
12.4.4使用错误信息
12.4.5HardFault状态寄存器
12.4.6调试错误状态寄存器(DFSR)
12.4.7错误地址寄存器MMFAR和BFAR
12.4.8辅助错误状态寄存器
12.5分析错误
12.6异常处理相关的错误
12.6.1压栈
12.6.2出栈
12.6.3惰性压栈
12.6.4取向量
12.6.5非法返回
12.6.6优先级和压栈或出栈错误
12.7锁定
12.7.1什么是锁定
12.7.2避免锁定
12.8错误处理
12.8.1用于调试的HardFault
12.8.2错误屏蔽
12.9其他信息
12.9.1运行具有两个栈的系统
12.9.2检测栈溢出
第13章浮点运算
13.1关于浮点数
13.1.1简介
13.1.2单精度浮点数
13.1.3半精度浮点数
13.1.4双精度浮点数
13.1.5CortexM处理器中的浮点支持
13.2CortexM4浮点单元(FPU)
13.2.1浮点单元简介
13.2.2浮点寄存器简介
13.2.3CPACR寄存器
13.2.4浮点寄存器组
13.2.5浮点状态和控制寄存器(FPSCR)
13.2.6浮点上下文控制寄存器(FPU>FPCCR)
13.2.7浮点上下文地址寄存器(FPU>FPCAR)
13.2.8浮点默认状态控制寄存器(FPU>FPDSCR)
13.2.9介质和浮点特性寄存器(FPU>MVFR0、FPU>MVFR1)
13.3惰性压栈详解
13.3.1惰性压栈特性的关键点
13.3.2第1种情况:被打断的任务中没有浮点上下文
13.3.3第2种情况:被打断的任务中有浮点上下文,ISR中没有
13.3.4第3种情况:被打断的任务和ISR中都有浮点上下文
13.3.5第4种情况:中断嵌套,且第2个中断处理中存在浮点上
下文
13.3.6第5种情况:中断嵌套,且两个中断处理中都存在浮点上
下文
13.3.7惰性压栈的中断
13.3.8浮点指令的中断
13.4使用浮点单元
13.4.1CMSISCore中的浮点支持
13.4.2用C语言实现浮点编程
13.4.3编译器命令行选项
13.4.4ABI选项:Hardvfp和Softvfp
13.4.5特殊的FPU模式
13.5浮点异常
13.6要点和提示
13.6.1微控制器的运行时库
13.6.2调试操作
第14章调试和跟踪特性
14.1调试和跟踪特性简介
14.1.1什么是调试特性
14.1.2什么是跟踪特性
14.1.3调试和跟踪特性总结
14.2调试架构
14.2.1CoreSight调试架构
14.2.2处理器调试接口
14.2.3调试端口(DP)、访问端口(AP)和调试访问端口(DAP)
14.2.4跟踪接口
14.2.5CoreSight的特点
14.3调试模式
14.4调试事件
14.5断点特性
14.6调试部件简介
14.6.1处理器调试支持
14.6.2Flash补丁和断点(FPB)单元
14.6.3数据监视点和跟踪(DWT)单元
14.6.4指令跟踪宏单元
14.6.5嵌入式跟踪宏单元(ETM)
14.6.6跟踪端口接口单元(TPIU)
14.6.7ROM表
14.6.8AHB访问端口(AHBAP)
14.7调试操作
14.7.1调试连接
14.7.2Flash编程
14.7.3断点
第15章KeilARM微控制器开发套件入门
15.1简介
15.2典型的程序编译流程
15.3μVision入门
15.4工程选项
15.4.1Device选项
15.4.2Target选项
15.4.3Output选项
15.4.4Listing选项
15.4.5User选项
15.4.6C/C++选项
15.4.7Asm选项
15.4.8Linker选项
15.4.9Debug选项
15.4.10Utilities选项
15.5使用IDE和调试器
15.6使用指令集模拟器
15.7在SRAM中运行程序
15.8优化选项
15.9其他信息和要点
15.9.1栈和堆存储大小配置
15.9.2其他信息
第16章IAREmbeddedWorkbenchforARM入门
16.1IAREmbeddedWorkbenchforARM简介
16.2典型的程序编译流程
16.3创建简单的blinky工程
16.4工程选项
16.5提示和要点
第17章GCC入门
17.1GCC工具链
17.2典型开发流程
17.3创建简单的blinky工程
17.4命令行选项简介
17.5Flash编程
17.5.1使用KeilMDKARM
17.5.2使用第三方Flash编程工具
17.6KeilMDKARM和ARM嵌入式处理器GNU工具一起使用
17.7CoIDE和ARM嵌入式处理器GNU工具一起使用
17.8基于gcc的商业版开发组件
17.8.1AtollicTrueSTUDIOforARM
17.8.2RedSuite
17.8.3CrossWorksforARM
第18章输入和输出软件实例
18.1产生输出
18.2重定向到指令跟踪宏单元(ITM)
18.2.1简介
18.2.2KeilMDKARM
18.2.3IAREmbeddedWorkbench
18.2.4GCC
18.3半主机
18.4重定向到外设
第19章使用嵌入式操作系统
19.1嵌入式OS简介
19.1.1什么是嵌入式OS
19.1.2何时使用嵌入式OS
19.1.3CMSISRTOS的作用
19.2KeilRTXRealTimeKernel
19.2.1关于RTX
19.2.2特性简介
19.2.3RTX和CMSISRTOS
19.2.4线程
19.3CMSISRTOS实例
19.3.1具有两个线程的简单CMSISRTOS
19.3.2线程间通信简介
19.3.3信号事件通信
19.3.4互斥体(MUTEX)
19.3.5信号量
19.3.6消息队列
19.3.7邮件队列
19.3.8内存池管理特性
19.3.9通用等待函数和超时数值
19.3.10定时器特性
19.3.11访问非特权设备
19.4OS感知调试
19.5疑难解答
19.5.1栈大小和栈对齐
19.5.2特权等级
19.5.3其他问题
第20章汇编和混合语言工程
20.1汇编代码在工程中的使用
20.2C和汇编间的交互
20.3汇编函数的结构
20.4例子
20.4.1ARM工具链的简单例子(KeilMDKARM、DS5)
20.4.2ARM嵌入式处理器GNU工具的简单例子
20.4.3访问特殊寄存器
20.4.4数据存储器
20.4.5Helloworld
20.4.6显示十六进制和十进制的数据
20.4.7NVIC中断控制
20.4.8无符号整数平方根
20.5混合语言工程
20.5.1从汇编中调用C函数
20.5.2从C中调用汇编函数
20.5.3嵌入汇编(KeilMDKARM/ARMDS5professional)
20.5.4内联汇编
20.6内在函数
20.7习语识别
第21章ARMCortexM4和DSP应用
21.1微控制器上的DSP
21.2点积实例
21.3传统DSP处理器的架构
21.4CortexM4的DSP指令
21.4.1寄存器和数据类型
21.4.2小数运算
21.4.3SIMD数据
21.4.4加载和存储指令
21.4.5算术指令
21.4.6CortexM4的一般优化策略
21.4.7指令限制
21.5为CortexM4编写优化的DSP代码
21.5.1Biquad滤波器
21.5.2快速傅里叶变换
21.5.3FIR滤波器
第22章使用ARMCMSISDSP库
22.1DSP库简介
22.2预构建的二进制代码
22.3函数命令规则
22.4获得帮助
22.5例1:DTMF解调
22.5.1产生正弦波
22.5.2使用FIR滤波器进行解析
22.5.3使用FFT进行解析
22.5.4使用Biquad滤波器进行解析
22.5.5DTMF示例代码
22.6例2:最小二乘法运动跟踪
第23章高级话题
23.1决断和跳转
23.1.1条件跳转
23.1.2复杂的判决树
23.2性能考虑
23.3双字栈对齐
23.4信号量设计的各种方法
23.4.1用SVC服务实现信号量
23.4.2使用位段实现信号量
23.5非基本线程使能
23.6中断服务的重入
23.7C语言实现的位数据处理
23.8启动代码
23.9栈溢出检测
23.9.1工具链的栈分析
23.9.2栈的测试分析
23.9.3根据栈布局检测栈溢出
23.9.4使用MPU
23.9.5使用DWT和调试监控异常
23.9.6OS上下文切换中的栈检查
23.10Flash补丁特性
23.11CortexM3和CortexM4处理器的版本
23.11.1简介
23.11.2CortexM3r0p0到r1p0/r1p1的变动
23.11.3CortexM3r1p1到r2p0的变动
23.11.4CortexM3r2p0到r2p1的变动
23.11.5CortexM4r0p0到r0p1的变动
第24章软件移植
24.1简介
24.2从8位/16位MCU移植到CortexMMCU
24.2.1架构差异
24.2.2一般调整
24.2.3存储器大小需求
24.2.48位或16位微控制器不再适用的优化
24.2.5例子:从8051移植到ARMCortexM
24.3从ARM7TDMI到CortexM3/M4的软件移植
24.3.1硬件差异简介
24.3.2汇编语言文件
24.3.3C语言文件
24.3.4预编译的目标文件和库
24.3.5优化
24.4不同CortexM处理器间的软件移植
24.4.1不同CortexM处理器间的差异
24.4.2所需的软件变动
24.4.3嵌入式OS
24.4.4创建CortexM处理器的可移植程序代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|懒人资源论坛

GMT+8, 2024-4-26 10:32 , Processed in 0.076390 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表