📄 idle_task.s.bak
字号:
AREA IDLE_TASK, CODE, READONLY
INCLUDE asm_defs.s
IMPORT ST_Idle_Count
IMPORT TCD_Interrupt_Level
Idle_Count DCD ST_Idle_Count
Int_Level DCD TCD_Interrupt_Level
;
;idle task:just do counting, the interrupt MUST be disabled during counting
;
EXPORT ST_Idle_Loop
ST_Idle_Loop
;close arm interrupt
MRS a1,CPSR ; Pickup current CPSR
ORR a1,a1,#LOCKOUT ; Build interrupt lockout value
MSR CPSR_cxsf,a1 ; Lockout interrupts
;do counting
LDR a2,[pc,#Idle_Count-.-8] ; Pickup idle count address
LDR a1,[a2, #0] ; Pickup current count
ADD a1,a1,#1
STR a1,[a2,#0]
;restore interrupt according to TCD_Interrupt_Level
LDR a2,[pc, #Int_Level-.-8] ; Pickup address of interrupt
; lockout
BIC a1,a1,#LOCK_MSK ; Clear lockout mask
LDR a3,[a2, #0] ; Pickup interrupt lockout mask
ORR a1,a1,a3 ; Build new interrupt lockout mask
MSR CPSR_cxsf,a1 ; Place it into the SPSR
B ST_Idle_Loop ;loop again
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -