处理时要分辨中断源
处理完要清中断
//初始化外部中断,设置按键为中断源
void key_eint_init(void)
{
/* 引脚:GPF0、2 GPG3、11 */
/* 中断:EINT0、2 EINT11、19*/
GPFCON &= ~((3<<0) | (3<<4)); //清零
GPFCON |= ((2<<4) | (2<<0)); //设置[10],配置为外部中断
GPGCON &= ~((3<<6) | (3<<22));
GPGCON |= ((2<<6) | (2<<22)); //设置[10],配置为外部中断
/* 设置中断触发方式:双边沿触发 */
EXTINT0 |= (3<<0) | (3<<8); //配置EINT0、2
EXTINT1 |= (3<<12); //配置EINT11
EXTINT2 |= (3<<12); //配置EINT19
/* 设置外部MASK清零使能 */
EINTMASK &= ((1<<11) | (1<<19));
}
//初始化中断控制器
void interrupt_init(void)
{
INTMASK &= ~((1<<0) | (1<<2) | (1<<5));//使能中断
}
mrs r0,cpsr //读出CPSR
bic r0,r0,#(1<<7) //第7位清零(IRQ)
msr cpsr,r0
0x18
处调用中断服务函数/*====================================异常向量表===========================================*/
_start:
b reset //vector 0x00: reset(0地址对应reset)
ldr pc, und_addr //vector 0x04: und (发生未定义指令异常,则进入“处理未定义异常函数”)绝对跳转,跳转至sdram中
ldr pc, swi_addr //vector 0x08: swi
b halt //vector 0x0c: prefetch aboot
b halt //vector 0x10: data aboot
b halt //vector 0x14: reserved
bl irq_addr //vector 0x18: IRQ
b halt //vector 0x1c: FIQ
irq_addr:
.word do_irq
0x08
的模式执行程序,即跳到bl do_irq
这一指令 ldr sp, =0x33D00000
lr-4
是异常处理完后的返回地址,也需要保存 sub lr,lr,#4
stmdb sp!, {
r0-r12,lr}
bl handle_irq_c
^
会把spsr的值恢复到cpsr中 ldmia sp,{
r0-r12,pc}^
void handle_irq_c(void)
{
/* 1.分辨中断源 */
int bit = INTOFFSET;
/* 2.调用对应的处理函数 */
key_eint_irq(bit); //处理中断,清除外部中断标志
/* 3.清中断 :从源头开始清 */
SRCPND = (1<<bit);
INTPND = (1<<bit);
}
INTOFFEST
的中的可知当前中断源EINTPEND
(External Interrupt Pending Register)EINTPEND
的值写入EINTPEND
/* 2.调用对应的处理函数 ,清除对应的中断*/
key_eint_irq(bit);
从源头开始清:即先清除SRCPND
,再清除INTPND
它只清除SRCPND
与INTPND
寄存器对应于数据中设置为1的位的位置,因此清除哪一个中断,只需要对应为写1即可
SRCPND
(SOURCE PENDING (SRCPND) REGISTER)
INTPND
(INTERRUPT PENDING (INTPND) REGISTER)
Field menuMapper in com.fast.project.system.service.impl.MenuServiceImpl required a bean of type ‘com.fast.project.XXXXXr’ that could not be found时一是mapper层没有添加@mapper注解,导致该接口无法被扫描。二是启动类配置了@Compo...
参考地址:http://blog.csdn.net/zhuying_linux/article/details/6630220优点:shell简单、灵活,,对于linux系统的自动化管理非常有帮助,可以让系统管理员的工作变得容易、简单、高效。shell脚本可以在unix和linux系统中灵活移植。shell脚本方便获取和修改源码,不需要编译。shell在linux很多地
一、Lambda 表达式的基础语法:Java8中引入了一个新的操作符 "->" 该操作符称为箭头操作符或 Lambda 操作符箭头操作符将 Lambda 表达式拆分成两部分:左侧:Lambda 表达式的参数列表右侧:Lambda 表达式中所需执行的功能, 即 Lambda 体语法格式一:无参数,无返回值 () -> System.out.println("Hello Lambda!");语法格式二:有一个参数,并且无返回值 (x) -> ...
2014年下半年 网络工程师 上午试卷 综合知识内存按字节编址从A5000H到DCFFFH的区域其存储容量为(2)。A.123KB B.180KB C.223KB D.224KB解析:从地址A5000H到DCFFFH的容量大小=DCFFF-A5000=37FFFH(224*1024)大小其中1024byte=1Kb此时我们将37FFFH转换成十进制=229...
来自:http://askubuntu.com/questions/62129/how-to-install-open64-compiler开始玩Open64了!编译安装Open64需要安装以下软件库。sudo apt-get install mawk csh bash make flex bison gfortran ia32-libs gcc-multilib g++-multil
1. IRP and Fast I/Ohttp://excel.fit.vutbr.cz/submissions/2019/019/19_poster.pdf2.Minifilter 拦截FileMapping IO事件https://blog.csdn.net/zj510/article/details/85059638#FileMapping_173 文件过滤http...
1. 极坐标在平面内取一个定点O,叫极点,引一条射线Ox,叫做极轴,再选定一个长度单位和角度的正方向(通常取逆时针方向)。对于平面内任何一点M,用ρ表示线段OM的长度(有时也用r表示),θ表示从Ox到OM的角度,ρ叫做点M的极径,θ叫做点M的极角,有序数对 (ρ,θ)就叫点M的极坐标,这样建立的坐标系叫做极坐标系。通常情况下,M的极径坐标单位为1(长度单位),极角坐标单位为rad(或°) 2. p...
文章目录背景项目目标maven项目坐标项目依赖how to use生成一个pojo类。main.java功能介绍1. 接受多层pojo递归嵌套2. 接受正则表达式(支持基本类型/String/Date类型)3. 时间函数4. 容器随机5. 基本数据类型检测方法6. 支持 以@为前缀的语义转换7. 优先级8. 1.1.0 新增内容继承类使用内部类使用详细案例框架支持的类型注解使用方式注意: 注解的表达能力有限为什么不用map?后续进展所有规则均参照前端界比较流行的mock框架:javascript Mo
和大多数人一样,我在几个月前听到了很多关于函数式编程的东西,不过并没有更深入的了解。于我而言,可能只是一个流行词罢了。从那时起,我开始更深地了解函数式编程并且我觉得应该为那些总能听到它但不知道究竟是什么的新人做一点事情。谈及函数式编程,你可能会想到它们:Haskell 和 Lisp,以及很多关于哪个更好的讨论。尽管它们都是函数式语言,不过的确有很大的不...
说实话,搞IT并不容易,虽然是白领,环境好,待遇高,但身体了一天不如一天,视力了也在下降,找女朋友了也难,在别人不知道的时候还在埋头苦干的加班,难也。
ListView加载文本数据都是很简单的,即使是异步获取文本数据。但是异步加载图片就稍微有一点麻烦,既要获得一个比较好的用户体验,还要防止出现图片错位等各种不良BUG,其实要考虑的东西还是挺多的。好了,我们先来看一下我们今天要实现的一个效果图: 看起来似乎并不难,确实,我们今天的核心问题只有一个,就是怎么异步加载图片,并且没有违和感。好了,废话不多说,先来看主布局文
本文链接:https://blog.csdn.net/qq_30815237/article/details/86706977 ...