第25篇 基于ARM A9处理器用C语言实现中断<一>

**Q:**怎样理解基于ARM A9处理器用C语言实现中断的过程呢?

**A:**同样以一段使用C语言实现中断的主程序为例介绍,和汇编语言实现中断一样这段代码也使用了定时器中断和按键中断。执行该主程序会在DE1-SoC的红色LED上显示流水灯,按下KEY1可以改变流水灯移动的方向。定时器中断服务程序用于控制流水灯的速率,而按键中断服务程序就用于控制按键产生中断。

C编译器只会生成设置supervisor模式堆栈的代码用于运行主程序,而不会生成设置IRQ模式堆栈的代码,因此,在代码10中,主程序需要首先调用set_A9_IRQ_stack()例程使用内联汇编语言指令初始化IRQ模式堆栈指针。此外,要在A9处理器中使能IRQ中断,主程序还需要调用enable_A9_interrupts()子程序中给出的内联汇编代码,最后再调用子程序配置通用中断控制器(GIC)、定时器、虚拟按键中断。

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

相关推荐
笨笨饿19 分钟前
#72_聊聊I2C以及他们的变体
linux·c语言·网络·stm32·单片机·算法·个人开发
南境十里·墨染春水1 小时前
linux学习进展 C语言连接mysql
linux·c语言·学习
Byron Loong1 小时前
【逆向】AT Hook 与 Inline Hook 对比
c语言·汇编·c++
大都督会赢的3 小时前
数据结构(1)--顺序表
c语言·数据结构·学习·指针
爱编码的小八嘎3 小时前
C语言完美演绎9-24
c语言
小娄~~3 小时前
多线程函数
c语言·开发语言
YangWeiminPHD4 小时前
金水32051编译器:人与单片机CPU之间的桥梁
c语言·单片机·编译器
XMAIPC_Robot4 小时前
180FPS AI相机模组,轻巧大算力, 高性能双目同步摄像模组+搭配RK3588
人工智能·嵌入式硬件·深度学习·数码相机·fpga开发
人设定义中...5 小时前
电脑上的图片传输到VGA上显示 (设计作业)
fpga开发
XMAIPC_Robot5 小时前
基于RK3588 高算力,小尺寸,轻重量6T算力无人机AI模块,可接两路同步相机模组
运维·人工智能·深度学习·fpga开发·无人机·边缘计算