完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1 个讨论
|
|
我也碰到过类似的问题,没成功:
;按一下按键K1-K4(EINT1,EINT2,EINT0,EINT3),用中断的方式点亮对应的灯LED1-LED4(GPG5,GPG6,GPG7,GPG10) ;此代码没有成功,不能进入中断 ;9key_interrupt rGPFCON EQU 0x56000050 rGPGCON EQU 0x56000060 rGPGDAT EQU 0x56000064 rGPGUP EQU 0x56000068 LED1_ON EQU (~(1<<5)) LED2_ON EQU (~(1<<6)) LED3_ON EQU (~(1<<7)) LED4_ON EQU (~(1<<10)) LED1_OFF EQU (1<<5) LED2_OFF EQU (1<<6) LED3_OFF EQU (1<<7) LED4_OFF EQU (1<<10) ;================= ; INTERRUPT ;================= SRCPND EQU 0x4a000000 ;Interrupt request status INTMOD EQU 0x4a000004 ;Interrupt mode control INTMSK EQU 0x4a000008 ;Interrupt mask control PRIORITY EQU 0x4a00000c ;IRQ priority control <-- May 06, 2002 SOP INTPND EQU 0x4a000010 ;Interrupt request status INTOFFSET EQU 0x4a000014 ;Interruot request source offset SUSSRCPND EQU 0x4a000018 ;Sub source pending INTSUBMSK EQU 0x4a00001c ;Interrupt sub mask AREA flyriz,CODE,READONLY ENTRY CODE32 START B RESET b . ;转跳到Undefined mode程序入口 b . ;转跳到SWI 中断程序入口 b . ;转跳到PAbort(指令异常)程序入口 b . ;转跳到DAbort(数据异常)程序入口 b . ;保留 b HandlerIRQ ;转跳到IRQ 中断程序入口 b . ;转跳到FIQ 中断程序入口 RESET LDR R0,=INTMSK LDR R1,=0xFFFFFFF0 ;屏蔽除EINT0...3以外的所有中断 str R1,[R0] LDR R0,=INTSUBMSK LDR R1,=0x7FFF ;屏蔽所有的子中断 STR R1,[R0] ;初始化GPF0...3为中断模式 LDR R0,=rGPFCON LDR R1,[R0] LDR R2,=0xFFFFFF00 AND R1,R1,R2 ORR R1,R1,#0xAA STR R1,[R0] BL LED_INIT LOOP NOP B LOOP HandlerIRQ SUB LR,LR,#4 STMFD SP!,{LR} LDR R1,=INTPND LDR R0,[R1] TST R0,#1 BEQ EINT1 ;点亮第3个灯 LDR R1,=rGPGDAT LDR R2,[R1] AND R2,R2,#LED3_ON STR R2,[R1] EINT1 TST R0,#2 BEQ EINT2 ;点亮第1个灯 LDR R1,=rGPGDAT LDR R2,[R1] AND R2,R2,#LED1_ON STR R2,[R1] EINT2 TST R0,#4 BEQ EINT3 ;点亮第2个灯 LDR R1,=rGPGDAT LDR R2,[R1] AND R2,R2,#LED2_ON STR R2,[R1] EINT3 TST R0,#8 BEQ EINT_END ;点亮第4个灯 LDR R1,=rGPGDAT LDR R2,[R1] AND R2,R2,#LED4_ON STR R2,[R1] EINT_END LDR R0,=SRCPND MOV R1,#0xF STR R1,[R0] LDR R0,=INTPND MOV R1,#0xF STR R1,[R0] ;四个LED全熄灭 LDR R1,=rGPGDAT LDR R0,[R1] ORR R0,R0,#LED1_OFF|LED2_OFF|LED3_OFF|LED4_OFF STR R0,[R1] SUBS PC,LR,#4 ;初始化LED IO口 LED_INIT ;IO口方向设置为输出 LDR R1,=rGPGCON LDR R0,[R1] ;LDR R2,=0x30FC00 ;0000 0000 0011 0000 1111 1100 0000 0000 B ;MVN R2,R2 ;1111 1111 1100 1111 0000 0011 1111 1111 B ,R2=0xFFCF03FF LDR R2,=~( (3<<10)|(3<<12)|(3<<14)|(3<<20) ) AND R0,R0,R2 ;LDR R2,=0x105400 ;0000 0000 0001 0000 0101 0100 0000 0000 B LDR R2,=(1<<10)|(1<<12)|(1<<14)|(1<<20) ORR R0,R0,R2 STR R0,[R1] ;四个LED全熄灭 LDR R1,=rGPGDAT LDR R0,[R1] ;ORR R0,R0,#0x04E0 ;0000 0100 1110 0000 ORR R0,R0,#LED1_OFF|LED2_OFF|LED3_OFF|LED4_OFF STR R0,[R1] MOV PC,LR ;function: initializing stacks InitStacks mrs r0,cpsr bic r0,r0,#0x1f ;MODEMASK=0x1f orr r1,r0,#0x12 ;IRQMODE=0x12 msr cpsr_cxsf,r1 ;IRQMode ldr sp,=0x33FF7000 ; IRQStack=0x33FF7000 mov pc,lr END |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 17:03 , Processed in 0.396782 second(s), Total 45, Slave 35 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号