⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 handle_ostimer0.s

📁 ARM嵌入式系统关于IRQ中断处理基于c语言的实验代码
💻 S
字号:
	IMPORT	osTimer_OSSR
	IMPORT	osTimer_OSMR0
	IMPORT	osTimer_OSCR

	IMPORT	osScanInterval
	IMPORT	ledShareVariant
	IMPORT	ledShareInterval
	IMPORT	ledStatusBuffer
	IMPORT	interruptVectorListBase

	IMPORT	led_statusSet
	IMPORT	button_statusFetch
	IMPORT	handle_osTimer0New


	EXPORT	handle_osTimer0

	AREA handle_osTimer0 ,CODE ,READONLY

	stmfd r13!,{r14}

	ldr r11,=ledShareVariant
	ldr r4,[r11]
	cmp r4,#0x0				;if invert led status
	beq invertLedStatus

	sub r4,r4,#0x1
	str r4,[r11]
	b pollingButtonStatus

;////////////////

invertLedStatus
	ldr r4,=ledShareInterval
	str r4,[r11]				;init ledShareVariant to re-start counting

	ldr r11,=ledStatusBuffer	
	ldr r0,[r11]
	mvn r0,r0
	str r0,[r11]

	mov r14,pc
	;$$$$$
	;input:r0--value 
	;
	ldr pc,=led_statusSet			;invert led status
	;
	;output:null
	;$$$$$	

;////////////////

pollingButtonStatus
	mov r14,pc
	;$$$$$
	;input:null
	;
	ldr pc,=button_statusFetch
	;
	;output:r0--0 means no input, --!0 input value
	;$$$$$
;
	cmp r0,#0x0
	beq handleOtEnd			;if no button is pressed,end


	ldr r4,=handle_osTimer0New
	ldr r11,=interruptVectorListBase
	mov r5,#26
	mov r5,r5,LSL #0x2
	str r4,[r11,r5]			;if button pressed,overload handle_osTimer0

handleOtEnd
	ldr r10,=osTimer_OSMR0
	ldr r4,=osScanInterval
	ldr r11,=osTimer_OSCR
	ldr r5,[r11]
	add r4,r4,r5
	str r4,[r10]

	ldr r11,=osTimer_OSSR
	ldr r4,[r11]
	and r4,r4,#0x1
	str r4,[r11]				;clear OSTimer0 status.

	ldmfd r13!,{pc}

	END

	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -