ARM9——中断学习
2016-07-24 19:33
302 查看
中断的概念
指 CPU 在正常运行程序时,由于内部或外部事件引起 CPU 暂时中止执行现行程序,转
去执行请求 CPU 为其服务的那个外设或事件的服务程序,待该服务程序执行完后又返
回到被中止的程序这样一个过程。
中断的优先级:
为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先级。
中断的嵌套:
是指中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行,这个过程就是中断嵌套。
指 CPU 在正常运行程序时,由于内部或外部事件引起 CPU 暂时中止执行现行程序,转
去执行请求 CPU 为其服务的那个外设或事件的服务程序,待该服务程序执行完后又返
回到被中止的程序这样一个过程。
中断的优先级:
为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要性和紧迫程度,硬件将中断源分为若干个级别,称作中断优先级。
中断的嵌套:
是指中断系统正在执行一个中断服务时,有另一个优先级更高的中断提出中断请求,这时会暂时终止当前正在执行的级别较低的中断源的服务程序,去处理级别更高的中断源,待处理完毕,再返回到被中断了的中断服务程序继续执行,这个过程就是中断嵌套。
PRESERVE8 先是在启动代码里设置异常向量表 start b reset b halt b halt b halt b halt b halt b _irq b halt reset (关闭看门狗) ldr sp,=(0x32000000+0x100000) ;在reset中设置reset异常的栈指针 MOV r0,#0x53 ; 设置 ARM9 的工作模式和中断允许 msr CPSR_cxsf,r0 _irq ldr sp,=(0x31000000+0x100000) stmdb sp!,{r0-r12,lr} IMPORT do_irq bl do_irq ldmia sp!,{r0-r12,pc}^ ;压栈内容出栈 halt b halt void do_irq() //中断服务函数 { unsigned int i; for(i=0; i<4; i++) //四个按键 { if(SRCPND1 & (1<<i)) //中断触发 { if(GPFDAT & (1<<i)) //下降沿 { my_printf("K%d is release\r\n",i+1); } Else //上升沿 { my_printf("K%d is pressed\r\n",i+1); } } } SRCPND1 = SRCPND1; //清零 INTPND1 = INTPND1; } void key_init(void) { GPFCON = 0xaa; //初始化GPF0,1,2,3 EXTINT0 = (0x7<<12)|(0x7<<8)|(0x7<<4)|(0x7<<0); //设置上升下降沿都触发中断 SRCPND1 = SRCPND1; //硬件置1,手动清0 INTPND1 = INTPND1; INTMSK1 &= ~(0x0f); //打开中断允许 } MMU_Init(); //先初始化MMU uart_init(); //初始化串口 key_init(); //中断初始化 GPACON = 0x0; GPBCON = (0x5 << 10); GPBSEL = 0x0; while(1) { GPADAT = 0x0; //led灯闪烁 GPBDAT = 0x0; delay(0x1000000); GPADAT = 0xffffffff; GPBDAT = 0xffffffff; delay(0x1000000); }
相关文章推荐
- 项目注意规范
- WPF编程宝典读书笔记——第10章 资源(一)
- socks5反向代理实现思路
- [0.0] 什么是机器学习
- setjmp和longjmp完成保存上下文和切换上下文的工作
- poj 2777 Count Color (线段树 区间更新 染色)
- 五、Zedboard学习之纯PL控制
- The Monocycle
- 基本知识点
- Java设计模式:工厂模式
- guava 常用API说明
- HTTP 和 SCOKET 通信的区别? TCP,UDP 的连接方法?HTTP 几种常用方式
- 分配内存的问题
- binlog
- sublime txt 设置在浏览器预览
- vijos1906:联合权值
- python核心编程第七章练习
- Dynamic Memory
- Java反射(二):反射的使用
- tcpip学习