本篇主要提供细说CortexM0开发——以LPC为例电子书的pdf版本下载,本电子书下载方式为百度网盘方式,点击以上按钮下单完成后即会通过邮件和网页的方式发货,有问题请联系邮箱ebook666@outlook.com
基本信息
书名:细说Cortex M0开发——以LPC1114为例
定价:59.00元
作者:冯迅
出版社:清华大学出版社
出版日期:2018-01-01
ISBN:9787302489986
字数:
页码:312
版次:1
装帧:平装
开本:16
商品重量:0.4kg
编辑推荐
内容提要
本书以恩智浦公司(NXP)的LPC1114芯片为例,详细讨论了ARM CortextM0处理器的开发过程。主要讲述了开发环境MDKARM的配置及LPC1114内部各个组成模块的结构及使用方法,包含GPIO端口、时钟源、NVIC中断系统、系统定时器、定时器/计数器、串口、A/D转换、I2C接口、SPI接口、看门狗、功耗管理及Flash编程固件等内容。全书以应用为主,针对LPC1114开发中可能遇到的问题都进行了详细的讨论。书中所有代码无须任何修改就可直接使用,所有程序代码均在MDKARM4.22a环境下调试通过。本书可作为高校及相关培训机构的教材,也可作为爱好者自学使用的书籍,还可作为嵌入式系统工程开发人员的参考手册。
目录
目录 n
章LPC1114及其开发环境简介1 n
1.1LPC1114及其主要特性1 n
1.2MDK开发环境及其配置4 n
1.3习题9第2章时钟配置与仿真10 n
2.1LPC1114的时钟及其配置10 n
2.2LPC1114的时钟仿真21 n
2.3LPC1114的时钟输出端口测试25 n
2.4习题30第3章程序的编译与下载31 n
3.1编译程序31 n
3.2下载程序32 n
3.2.1Flash Magic32 n
3.2.2ULINK233 n
3.3习题36第4章通用输入输出端口及应用37 n
4.1实例引入37 n
4.2头文件解析41 n
4.2.1预定义分析41 n
4.2.2头文件应用50 n
4.3GPIO应用详解54 n
4.3.1GPIO端口操作分析54 n
4.3.2GPIO端口寄存器60 n
4.3.3GPIO引脚配置65 n
4.4GPIO编程实践72 n
4.5习题73第5章异常和中断系统及应用74 n
5.1异常74 n
5.1.1异常及向量地址74 n
5.1.2优先级75 n
5.1.3异常处理75 n
5.2中断系统80 n
5.2.1NVIC80 n
5.2.2寄存器及其映射81 n
5.2.3中断触发与处理86 n
5.2.4中断操作函数86 n
5.3外部中断88 n
5.3.1LPC1114外部中断88 n
5.3.2外部中断入口函数89 n
5.4外部中断编程实践90 n
5.5习题91第6章SysTick定时器及应用92 n
6.1SysTick定时器功能分析92 n
6.1.1内部结构92 n
6.1.2寄存器及其映射93 n
6.1.3初始值设置95 n
6.2SysTick定时器编程实践96 n
6.3习题97第7章通用定时器及应用98 n
7.1通用定时器概述98 n
7.1.1内部结构98 n
7.1.2寄存器及其映射98 n
7.2定时功能分析101 n
7.2.1寄存器配置101 n
7.2.2定时功能编程实践106 n
7.3计数功能分析108 n
7.3.1寄存器配置108 n
7.3.2计数功能编程实践109 n
7.4输入捕获功能分析112 n
7.4.1寄存器配置113 n
7.4.2输入捕获功能编程实践114 n
7.5PWM功能分析117 n
7.5.1寄存器配置117 n
7.5.2PWM功能编程实践122 n
7.6通用定时器综合实践124 n
7.6.1驱动LCD1602液晶屏124 n
7.6.2红外解码129 n
7.7习题136第8章通用串行口及应用137 n
8.1UART功能分析137 n
8.1.1内部结构137 n
8.1.2寄存器及其映射137 n
8.1.3寄存器配置140 n
8.2UART综合实践150 n
8.2.1接收中断150 n
8.2.2发送端口状态157 n
8.2.3选择性启动159 n
8.3习题164第9章A/D转换及应用165 n
9.1A/D转换功能分析165 n
9.1.1A/D转换器的特性165 n
9.1.2寄存器及其映射165 n
9.1.3寄存器配置167 n
9.1.4注意事项172 n
9.2A/D转换编程实践173 n
9.3习题1780章I2C接口及应用179 n
10.1I2C接口功能分析179 n
10.1.1I2C总线179 n
10.1.2I2C接口的特性180 n
10.1.3寄存器及其映射181 n
10.1.4寄存器配置183 n
10.2I2C接口编程实践190 n
10.3习题1991章SPI接口及应用200 n
11.1SPI接口功能分析200 n
11.1.1SPI接口特性200 n
11.1.2寄存器及其映射200 n
11.1.3寄存器配置202 n
11.2SPI接口编程实践210 n
11.3习题2182章看门狗及应用219 n
12.1看门狗功能分析219 n
12.1.1内部结构及特性219 n
12.1.2寄存器及其映射220 n
12.1.3寄存器配置221 n
12.1.4注意事项226 n
12.2看门狗编程实践227 n
12.3习题2293章功耗管理及应用230 n
13.1功耗管理230 n
13.1.1PMU230 n
13.1.2SCR寄存器233 n
13.1.3节能模式235 n
13.2功耗管理编程实践242 n
13.3习题2464章复位与SWD技术247 n
14.1复位247 n
14.1.1复位源247 n
14.1.2上电复位249 n
14.1.3外部引脚复位250 n
14.1.4掉电检测复位251 n
14.2SWD调试252 n
14.2.1调试接口252 n
14.2.2连接方式254 n
14.3习题2545章Flash编程固件255 n
15.1BootLoader256 n
15.2IAP258 n
15.3代码读保护268 n
15.4Flash纠错270 n
15.5IAP编程实践270 n
15.6习题2806章电子时钟实例281 n
16.1实例描述281 n
16.2电路原理图281 n
16.3实例分析282 n
16.3.1电路分析282 n
16.3.2功能分析282 n
16.4程序代码282 n
16.5代码说明299 n
16.5.1状态机编程299 n
16.5.2静态局部变量302 n
16.5.3其他说明302 n
16.6习题302附录AI2C总线接口标准状态码303附录B标准ASCII码表311 n
n
参考文献313 n
n
作者介绍
文摘
第5章
异常和中断系统及应用
本章学习目标
(1) 熟悉CortexM0的异常系统。
(2) 掌握NVIC下中断的操作方法。
(3) 掌握外部中断的使用方法。
5.1异常〖4/5〗5.1.1异常及向量地址在CortexM0内核中,把Reset(复位)、NMI(不可屏蔽中断)、HardFault(硬错误)、SVCall(超级管理员调用)、PendSV(中断驱动请求)、SysTick(系统定时器请求)及IRQ(中断请求)统一称为“异常”,可见异常是一个比中断更大的概念,中断IRQ只是异常中的一个部分,或者说中断包含于异常。所有的异常都有各自的入口向量地址,而且除了Reset、NMI及HardFault以外,其他异常都具有可配置的优先级,具体如表51所示。表51异常的优先级及向量地址
ExceptionumberIRQ numberExceptiotypePriorityVector address1—Reset-3, the highest0x000000042-14NMI-20x000000083-13HardFault-10x0000000C4~10—Reserved——11-5SVCallConfigurable0x0000002C12~13—Reserved——14-2PendSVConfigurable0x0000003815-1SysTickConfigurable0x0000003C16 and above0 and aboveInterrupt (IRQ)Configurable0x00000040 and above从表51中可以看到,在CortexM0内核中,向量入口地址分配从0x00000004到0x00000040,由于是32位字对齐,所以每两个向量地址之间的间隔为4,所以一共有16个异常编号。但由于编号4~10和编号12~13的异常没有定义,所以这9个异常及其向量地址均作为保留,所以实际的CortexM0一共只有7个异常向量,下面就对它们分别进行说明。
Reset: 由上电或热复位引发,是一种特殊形式的异常。当复位信号有效时,无论指令执行到什么位置,处理器都将停止当前的指令。复位信号失效后,从复位异常规定的向量入口地址处开始执行,按Thumb模式工作。
NMI: 可由外设引发或软件触发,是除Reset之外的高优先级异常,它永远是被允许的,不能被任何别的异常屏蔽或阻止,除了Reset之外任何异常都不能抢占NMI。
HardFault: 在正常情况或异常处理时突然出现错误而引发的一种异常。它比任何一个可以配置优先级的异常的优先级都高。
SVCall: 由SVC指令触发的异常,在操作系统环境下,应用程序可使用SVC指令访问操作系统内核或设备驱动程序。
PendSV: 它是一种中断驱动的请求,用于面向系统级服务。在操作系统环境下,当没有别的异常激活时,使用PendSV进行上下文切换。
SysTick: 由系统滴答定时器计数到0时所引发的一种异常。软件也能产生该异常,在操作系统环境下,处理器可使用这一异常作为系统滳答计时。
IRQ: 即中断,是由外设或软件请求而产生的异常,所有的中断对指令的执行都是异步进行的。在计算机系统中,外设通过中断方式与处理器进行通信。
5.1.2优先级
所有的异常都有一个优先级,优先级数值越小优先级越高。Reset、NMI和HardFault 3个异常具有负数值的固定优先级,比其他异常的优先级更高。当处理器正在执行一个异常处理时,如果有更高优先级的异常发生,则该异常可以被抢占。如果发生的异常与正在执行的异常具有相同的优先级,则不管其异常编号是多少,正在执行的异常都不会被抢占,新发生的异常变为挂起状态。如果在软件中没有配置优先级,那么所有可配置优先级的异常的优先级均为0。
关于异常进入,可能会发生以下几种特殊情况。
(1) 抢占(Preemption): 当处理器在执行一个异常处理时,另一个异常处理可以抢占这个正在被执行的异常处理,只要其优先级比正在被处理的异常优先级高。一个异常处理抢占另一个异常处理,称为异常的嵌套。
(2) 尾链(Tailchaining): 当一个异常处理刚好完成时,若此时有一个挂起的异常满足进入执行的条件,则从堆栈弹出数据的操作会被跳过,直接转到这个新的异常处理,该机制加速了异常服务。
(3) 迟到(Latearriving): 当一个异常处理正在保存状态时,如果出现了一个更高优先级的异常,则处理器切换去执行这个优先级更高的异常,为新异常初始化预取向量。迟到异常并不会影响向量的保存,因为两个异常所需要保存的状态是一致的。在迟到异常返回时,正常的尾链规则依然有效,该机制加速了抢占。
序言