第20篇 基于ARM A9处理器用汇编语言实现中断<二>

**Q:**怎样理解在ARM A9处理器中用汇编语言实现中断的过程和原理呢?

**A:**以下是一段在ARM A9处理器中使用汇编语言实现中断的示例主程序代码,该代码的开始部分创建异常向量表,矢量表中的条目提供了跳转到各种异常服务程序的指令;然后中间部分代码初始化定时器和按键的子程序;最后部分是程序用到的全局变量。主程序调用子程序初始化HPS Timer、FPGA Interval Timer以及FPGA KEY;最后程序初始化HPS GPIO1端口,使能A9处理器中的IRQ中断然后进入无限循环,当全局变量tick在HPS Timer的异常服务程序被置1时,DE1-SoC开发板上的USER_LED被点亮或熄灭。

该代码使用了两个中断,其中FPGA Interval Timer中断用于控制LED滚动闪烁的速率,而按键中断用于控制LED滚动闪烁的方向。在DE1-SoC上运行这段代码后,4个连续点亮的红色LED从右向左呈现流水灯似闪烁,按下KEY0或KEY1,流水灯的方向会改变。

关于该示例代码的更详细原理与中断处理过程可以参考...\University_Program\Computer_Systems\DE1-SoC\DE1-SoC_Computer\doc_ARM里的DE1-SoC_Computer_ARM文档。

相关推荐
我爱C编程3 小时前
基于FPGA的8PSK+卷积编码Viterbi译码通信系统,包含帧同步,信道,误码统计,可设置SNR
fpga开发·通信·8psk·帧同步·snr·卷积编码·维特比译码
I'm a winner11 小时前
新手入门 Makefile:FPGA 项目实战教程(三)
fpga开发
Jooolin13 小时前
【教你一招】反汇编有啥用?
c++·ai编程·汇编语言
范纹杉想快点毕业13 小时前
嵌入式 C 语言编程规范个人学习笔记,参考华为《C 语言编程规范》
linux·服务器·数据库·笔记·单片机·嵌入式硬件·fpga开发
lazyduck1 天前
从半年到一年的 bug 往事:TCP modbus的卡死与补救
fpga开发·modbus
范纹杉想快点毕业1 天前
《嵌入式 C 语言编码规范与工程实践个人笔记》参考华为C语言规范标准
服务器·c语言·stm32·单片机·华为·fpga开发·51单片机
Chipi Chipi2 天前
FPGA即插即用Verilog驱动系列——串口数据、命令解析
fpga开发
FPGA_ADDA2 天前
基于 AMDXCVU47P HBM2 FPGA 的 2 路 100G 光纤 PCIe 高性能计算加速卡
fpga开发·vu47p·100g光纤pcie·高性能计算加速卡
霖002 天前
高级项目——基于FPGA的串行FIR滤波器
人工智能·经验分享·matlab·fpga开发·信息与通信·信号处理
I'm a winner2 天前
FPGA+护理:跨学科发展的探索(四)
笔记·fpga开发