使用中断-netfpga-1g-cml: kintex-7 fpga开发板 用户手册

时间:2024-06-29 04:47:40
【文件属性】:

文件名称:使用中断-netfpga-1g-cml: kintex-7 fpga开发板 用户手册

文件大小:6.52MB

文件格式:PDF

更新时间:2024-06-29 04:47:40

Cortex-M3

11.1 使用中断 任何一个有点型的嵌入式系统,就没有不使用中断机制的。在 CM3 中,NVIC 为我们搞定了使 用中断时的很多例行任务,如优先级检查、入栈/出栈、取向量等。不过在 NVIC 能行使职能之前, 还需要我们做好如下的初始化工作:  建立堆栈  建立向量表  分配各中断的优先级  使能中断 11.1.1 建立堆栈 当开发的程序比较简单时,可以从头到尾都只使用 MSP。这时,只需要保证开出一个容量够大 的堆栈,再把 MSP初始化到其顶即可——这也是单片机开发最常见的做法。 堆栈用穿是非常致命的错误,必须非常严肃地计算安全容量。在计算时,除了要计入最深函数 调用时对堆栈的需求,还需要判定最多可能有多少级中断嵌套。一个笨方法(但是很保险)是假设 每个中断都可以嵌套。对于每一级嵌套的中断,至少需要 8个字(32字节),而且如果 ISR过于复 杂,还可能有更多的堆栈需求。 因为 CM3中的堆栈是以“向下生长的满栈”来操作 SP的。在简单的场合中,经常可以把 SP初 始化为 SRAM 的末尾,这么一来就使所有的空闲内存都能为堆栈所用——反正不用白不用,用了也 白用,如图 11.1所示。  使用中断  异常/中断服务例程  软件中断  异常服务例程的示范  使用 SVC  SVC示范:用于输出数据的函数  在 C中使用 SVC


网友评论