混合信号嵌入式设计实验指南-数字实验之:实验2—中断
目标:本实验专门用于介绍PSoC CPU 的中断句柄。注意这个实验分成7 个部分:LAB2A 到LAB 2G 。在继续下一个实验前,要成功地完成每一个部分。
完成这个实验后,读者应能做到:
用C 语言写控制程序;
理解如何处理一个发布的中断;
理解如何处理一个未处理的中断;
将CPU 设置在休眠模式,然后用休眠定时器未处理的中断唤醒它;
使用汇编语言编写的中断句柄,来操作在C 程序里声明的一个全局变量;
使用C 语言编写的中断句柄,来操作在C 程序里声明的一个全局变量;
在中断向量表空间中,放置一个小的中断服务程序ISR。
假设:
所有先前实验的假设;
使能编译器用于开发系统。
要求的材料:
CY3210 PSoCEval1 板子;
面包板线。
要求的设备:
无。
相关的参考资料
所有前面实验的参考资料;
Cypress C 语言编译器用户指南。
中断控制器为PSoC混合信号阵列内的不同硬件资源提供了一种机制,可以将程序的执行改变到新的地址,而不需要考虑当前正在执行的任务。图1.13 给出了中断处理的方块图。
对于CPU,要识别一个特殊资源的中断,下面必须是真(有效)的:
必须设置它的中断使能屏蔽;
图1.13 中断处理
它必须是所有未处理中断中,级别最高的;必须设置全局中断使能。CPU 通过下面响应这个请求:将当前程序计数器的值保存起来;将当前标志寄存器的值保存起来。跳转到指定的中断向量地址。对于27x 系列的器件,有18 个不同的中断源。
表1.2 从最高优先级到最低优先级,给出了每个中断源和它的向量地址。
表1.2中断向量表
中断源 |
向量位置 |
硬件复位 |
0x0000 |
供电监视器 |
0x0004 |
模拟列0 |
0x0008 |
模拟列1 |
0x000c |
模拟列2 |
0x0010 |
模拟列3 |
0x0014 |
VC3 |
时钟 |
GPIO |
0x001c |
数字块00 |
0x0020 |
数字块01 |
0x0024 |
数字块02 |
0x0028 |
数字块03 |
0x002c |
数字块10 |
0x0030 |
数字块11 |
0x0034 |
数字块12 |
0x0038 |
数字块13 |
0x003c |
I2C |
0x0060 |
休眠定时器 |
0x0064 |
在中断服务程序的末尾,先前程序计数器和标志寄存器的值被恢复到它们原来的值,原先的程序从离开它的地方继续。
练习2A-1 :假设正确的使能全局中断和中断屏蔽,可能永远不能服务较低优先级的中断。这是为什么?
评论