亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? os_cpu_a.s

?? UCOS-II FOR STM32F103XX 1 本程序是我自己移植
?? S
字號:
; External Interrupts
	EXTERN  NMIException
    EXTERN  HardFaultException
    EXTERN  MemManageException
    EXTERN  BusFaultException
    EXTERN  UsageFaultException
    EXTERN  SVCHandler
    EXTERN  DebugMonitor
    EXTERN  PendSVC
    EXTERN  SysTickHandler

    EXTERN  WWDG_IRQHandler
    EXTERN  PVD_IRQHandler
    EXTERN  TAMPER_IRQHandler
    EXTERN  RTC_IRQHandler
    EXTERN  FLASH_IRQHandler
    EXTERN  RCC_IRQHandler
    EXTERN  EXTI0_IRQHandler
    EXTERN  EXTI1_IRQHandler
    EXTERN  EXTI2_IRQHandler
    EXTERN  EXTI3_IRQHandler
    EXTERN  EXTI4_IRQHandler
    EXTERN  DMAChannel1_IRQHandler
    EXTERN  DMAChannel2_IRQHandler
    EXTERN  DMAChannel3_IRQHandler
    EXTERN  DMAChannel4_IRQHandler
    EXTERN  DMAChannel5_IRQHandler
    EXTERN  DMAChannel6_IRQHandler
    EXTERN  DMAChannel7_IRQHandler
    EXTERN  ADC_IRQHandler
    EXTERN  USB_HP_CAN_TX_IRQHandler
    EXTERN  USB_LP_CAN_RX0_IRQHandler
    EXTERN  CAN_RX1_IRQHandler
    EXTERN  CAN_SCE_IRQHandler
    EXTERN  EXTI9_5_IRQHandler
    EXTERN  TIM1_BRK_IRQHandler
    EXTERN  TIM1_UP_IRQHandler
    EXTERN  TIM1_TRG_COM_IRQHandler
    EXTERN  TIM1_CC_IRQHandler
    EXTERN  TIM2_IRQHandler
    EXTERN  TIM3_IRQHandler
    EXTERN  TIM4_IRQHandler
    EXTERN  I2C1_EV_IRQHandler
    EXTERN  I2C1_ER_IRQHandler
    EXTERN  I2C2_EV_IRQHandler
    EXTERN  I2C2_ER_IRQHandler
    EXTERN  SPI1_IRQHandler
    EXTERN  SPI2_IRQHandler
    EXTERN  USART1_IRQHandler
    EXTERN  USART2_IRQHandler
    EXTERN  USART3_IRQHandler
    EXTERN  EXTI15_10_IRQHandler
    EXTERN  RTCAlarm_IRQHandler
    EXTERN  USBWakeUp_IRQHandler

    
	AREA	|subr|, CODE, READONLY
	PRESERVE8

ExVectors    
	DCD     0                         ; Top of Stack
	DCD     0                         ; Reset Handler
	DCD     NMIException              ; NMI Handler
	DCD     HardFaultException        ; Hard Fault Handler
	DCD     MemManageException        ; MPU Fault Handler
	DCD     BusFaultException         ; Bus Fault Handler
	DCD     UsageFaultException       ; Usage Fault Handler
	DCD     0                         ; Reserved
	DCD     0                         ; Reserved
	DCD     0                         ; Reserved
	DCD     0                         ; Reserved
	DCD     SVCHandler                ; SVCall Handler
	DCD     DebugMonitor              ; Debug Monitor Handler
	DCD     0                         ; Reserved
	DCD     PendSVC                   ; PendSV Handler
	DCD     SysTickHandler            ; SysTick Handler
	DCD     WWDG_IRQHandler           ; Window Watchdog
    DCD     PVD_IRQHandler            ; PVD through EXTI Line detect
    DCD     TAMPER_IRQHandler         ; Tamper
    DCD     RTC_IRQHandler            ; RTC
    DCD     FLASH_IRQHandler          ; Flash
    DCD     RCC_IRQHandler            ; RCC
    DCD     EXTI0_IRQHandler          ; EXTI Line 0
    DCD     EXTI1_IRQHandler          ; EXTI Line 1
    DCD     EXTI2_IRQHandler          ; EXTI Line 2
    DCD     EXTI3_IRQHandler          ; EXTI Line 3
    DCD     EXTI4_IRQHandler          ; EXTI Line 4
    DCD     DMAChannel1_IRQHandler    ; DMA Channel 1
    DCD     DMAChannel2_IRQHandler    ; DMA Channel 2
    DCD     DMAChannel3_IRQHandler    ; DMA Channel 3
    DCD     DMAChannel4_IRQHandler    ; DMA Channel 4
    DCD     DMAChannel5_IRQHandler    ; DMA Channel 5
    DCD     DMAChannel6_IRQHandler    ; DMA Channel 6
    DCD     DMAChannel7_IRQHandler    ; DMA Channel 7
    DCD     ADC_IRQHandler            ; ADC
    DCD     USB_HP_CAN_TX_IRQHandler  ; USB High Priority or CAN TX
    DCD     USB_LP_CAN_RX0_IRQHandler ; USB Low  Priority or CAN RX0
    DCD     CAN_RX1_IRQHandler        ; CAN RX1
    DCD     CAN_SCE_IRQHandler        ; CAN SCE
    DCD     EXTI9_5_IRQHandler        ; EXTI Line 9..5
    DCD     TIM1_BRK_IRQHandler       ; TIM1 Break
    DCD     TIM1_UP_IRQHandler        ; TIM1 Update
    DCD     TIM1_TRG_COM_IRQHandler   ; TIM1 Trigger and Commutation
    DCD     TIM1_CC_IRQHandler        ; TIM1 Capture Compare
    DCD     TIM2_IRQHandler           ; TIM2
    DCD     TIM3_IRQHandler           ; TIM3
    DCD     TIM4_IRQHandler           ; TIM4
    DCD     I2C1_EV_IRQHandler        ; I2C1 Event
    DCD     I2C1_ER_IRQHandler        ; I2C1 Error
    DCD     I2C2_EV_IRQHandler        ; I2C2 Event
    DCD     I2C2_ER_IRQHandler        ; I2C2 Error
    DCD     SPI1_IRQHandler           ; SPI1
    DCD     SPI2_IRQHandler           ; SPI2
    DCD     USART1_IRQHandler         ; USART1
    DCD     USART2_IRQHandler         ; USART2
    DCD     USART3_IRQHandler         ; USART3
    DCD     EXTI15_10_IRQHandler      ; EXTI Line 15..10
    DCD     RTCAlarm_IRQHandler       ; RTC Alarm through EXTI Line
    DCD     USBWakeUp_IRQHandler      ; USB Wakeup from suspend	

NVIC_INT_CTRL   	EQU     0xE000ED04  ; 中斷控制寄存器
NVIC_SYSPRI2    	EQU     0xE000ED20  ; 系統優先級寄存器(2)
NVIC_PENDSV_PRI 	EQU     0xFFFF0000  ; 軟件中斷和系統節拍中斷
                                        ; (都為最低,0xff).
NVIC_PENDSVSET  	EQU     0x10000000  ; 觸發軟件中斷的值.

	IMPORT	OSTCBCur
addr_OSTCBCur		DCD	OSTCBCur
	IMPORT	OSTCBHighRdy
addr_OSTCBHighRdy	DCD	OSTCBHighRdy
	IMPORT	OSPrioCur
addr_OSPrioCur		DCD	OSPrioCur
	IMPORT	OSPrioHighRdy
addr_OSPrioHighRdy	DCD	OSPrioHighRdy	
	
	IMPORT  OSRunning
	IMPORT	OSIntEnter
	IMPORT	OSIntExit
	IMPORT	OSTimeTick 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Function: 	OSStartHighRdy																			;
; Purpose:		To start the task with the highest priority during OS startup							;
; Processing:	See uC/OS-II Task Level Context Switch flow chart										;
; Parameters: 	void																					;
; Outputs:  	None																					;
; Returns:  	void																					;
; Notes:		Called once during OSStart()															;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	EXPORT	OSStartHighRdy
OSStartHighRdy
	LDR		r0, =OSRunning				; OSRunning = 1
	MOV		r1, #1
	STRB	r1, [r0]

	LDR		r5, addr_OSTCBHighRdy			; Get highest priority task TCB address

	LDR		r5, [r5]				; get stack pointer
	LDR		sp, [r5]				; switch to the new stack

	POP		{r3-R12}
	LDR		r0, [sp,#0x1c]
	MSR		apsr, r0
	POP		{r0-r3,r12,r14}
	ADD		sp,sp,#8
	bx		lr
	
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Function: 	OS_TASK_SW 																				;
; Purpose: 		To perform a context switch from the Task Level.										;
; Processing:	See uC/OS-II Task Level Context Switch flow chart										;
; Parameters:	void																					;
; Outputs:  	None																					;
; Returns:		void																					;
; Notes:		The whole function is executed in CRITICAL state. See OSSched().						;
;																										;
; On entry, OSTCBCur and OSPrioCur hold the current TCB and priority									;
; and OSTCBHighRdy and OSPrioHighRdy contain the same for the task										;
; to be switched to.																					;
; The following code assumes that the virtual memory is directly										;
; mapped into  physical memory. If this is not true, the cache must 									;
; be flushed at context switch to avoid address aliasing.												;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	EXPORT	OSCtxSw
OSCtxSw
	PUSH    {R4, R5}
    LDR     R4, =NVIC_INT_CTRL  	;觸發PendSV異常 (causes context switch)
    LDR     R5, =NVIC_PENDSVSET
    STR     R5, [R4]
    MSR 	PRIMASK, r4
	POP     {R4, R5}
    BX      LR

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Function: 	OSIntCtxSW 																				;
; Purpose: 		To perform a context switch from the Interrupt Level.									;
; Processing:	See uC/OS-II Interrupt Level Context Switch flow chart									;
; Parameters:	void																					;
; Outputs:  	None																					;
; Returns:		void																					;
; Notes:		The whole function is executed in CRITICAL state. See OSIntExit().						;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	EXPORT 	OSIntCtxSw
OSIntCtxSw
	;OSPrioCur = OSPrioHighRdy
	LDR	r6, addr_OSPrioHighRdy
	LDR	r5, addr_OSPrioCur	
	LDRB	r6, [r6]
	STRB	r6, [r5]			

	;OSTCBCur = OSTCBHighRdy
	LDR	r4, addr_OSTCBHighRdy
	LDR	r5, addr_OSTCBCur	
	LDR	r4, [r4]
	STR	r4, [r5] 

	LDR	sp, [r4]

	POP	{r0}
	MSR PRIMASK, r0
    POP	{R4-R11,pc}

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Function:		OSTickISR																				;
; Purpose:		Timer0 Interrupt Sever																	;
; Processing:	Call OSTimeTick																			;
; Parameters: 	void																					;
; Outputs:		None																					;
; Returns:		void																					;
; Notes:																								;					
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	EXPORT 	OSTickISR
OSTickISR
	PUSH	{r4-r11,lr}
	MRS     R0, PRIMASK
	PUSH	{R0}

	LDR		r4, addr_OSTCBCur
	LDR		r4, [r4]
	STR		sp, [r4]				 ; OSTCBCur -> stkptr = sp
 
	BL		OSIntEnter
	MRS		r1, ipsr
	LDR		R0, =ExVectors
	LDR		r0,[r0,r1,lsl #0x2]
	BLX		r0
	BL		OSIntExit

	POP		{r0}
	MSR  	PRIMASK, r0
	POP		{r4-r11,pc}				; start the new task

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Function:		OSPendSV																				;
; Purpose:																			;
; Processing:																				;
; Parameters: 	void																					;
; Outputs:		None																					;
; Returns:		void																					;
; Notes:																								;					
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	EXPORT 	OSPendSV
OSPendSV                
    CPSID   I
	PUSH	{R4-R11,lr}
	MRS     R0, PRIMASK
	PUSH	{R0}

    LDR     R4, =OSTCBCur         	; OSTCBCur->OSTCBStkPtr = SP;
    LDR     R4, [R4]
    STR     SP, [R4]                ; R0 is SP of process being switched out
                                    ; at this point, entire context of process has been saved
	; OSPrioCur = OSPrioHighRdy
	LDR		r4, =OSPrioCur
	LDR		r5, =OSPrioHighRdy
	LDRB	r6, [r5]
	STRB	r6, [r4]
	
	; OSTCBCur = OSTCBHighRdy
	LDR		r4, =OSTCBHighRdy
	LDR		r5, =OSTCBCur	
	LDR		r4, [r4]
	STR		r4, [r5]

    LDR		sp, [r4]

	POP		{r0}
	MSR  	PRIMASK, r0
    POP		{R4-R11,pc}
  
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;                                   CRITICAL SECTION METHOD 3 FUNCTIONS
;
; Description: Disable/Enable interrupts by preserving the state of interrupts.  Generally speaking you
;              would store the state of the interrupt disable flag in the local variable 'cpu_sr' and then
;              disable interrupts.  'cpu_sr' is allocated in all of uC/OS-II's functions that need to 
;              disable interrupts.  You would restore the interrupt disable state by copying back 'cpu_sr'
;              into the CPU's status register.
;              OS_CPU_SR OSCPUSaveSR()
; Arguments  : none
; Returns    : OS_CPU_SR
;              OSCPURestoreSR(OS_CPU_SR cpu_sr)
; Arguments  : OS_CPU_SR
; Returns    : none
; Note(s)    : These functions are used in general like this,
;
;            void Task (void *data)
;            {
;                    #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
;                          OS_CPU_SR  cpu_sr;
;                    #endif
;                         :
;                         :
;                    OS_ENTER_CRITICAL(); /* cpu_sr = OSCPUSaveSR(); */
;                         :
;                         :
;                    OS_EXIT_CRITICAL();  /* OSCPURestoreSR(cpu_sr); */
;                         :
;                         :
;            }
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
	EXPORT  CortexM3DisInt
CortexM3DisInt
	MRS     R0, PRIMASK
	CPSID   I                       ; Disable all the interrupts
	BX 	LR

	EXPORT  CortexM3EnInt
CortexM3EnInt
	MSR  	PRIMASK, R0   
	BX LR

	END
	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕不卡的av| 亚洲天堂免费看| 午夜精品视频一区| 精品一区二区三区视频| 99精品视频一区二区三区| 2014亚洲片线观看视频免费| 午夜精品久久久久久| 99久久99久久精品免费观看| 国产亚洲欧美中文| 国产一区二区不卡在线| 日韩一区二区三区免费观看| 午夜激情久久久| 色综合久久久久综合| 国产午夜一区二区三区| 国产一区在线观看麻豆| 欧美成人女星排行榜| 久久av资源网| 欧美大片顶级少妇| 蜜桃av一区二区三区| 日韩电影一二三区| 欧美三级欧美一级| 香蕉成人伊视频在线观看| 欧美在线一区二区三区| 亚洲精品国产精品乱码不99| 99re视频精品| 国产精品美女久久久久久久久| 成人三级伦理片| 中文字幕一区二区三区乱码在线| 成人av资源网站| 国产精品久久久久精k8| 成人av综合在线| 日韩久久一区二区| 色噜噜狠狠色综合欧洲selulu| 亚洲欧洲综合另类| 在线免费观看日本欧美| 亚洲激情中文1区| 一本一道综合狠狠老| 亚洲精品中文字幕乱码三区| 91亚洲午夜精品久久久久久| 亚洲免费观看高清完整| 日本道色综合久久| 一区二区高清免费观看影视大全| 欧美色图在线观看| 日韩成人免费在线| 精品少妇一区二区三区在线播放| 经典一区二区三区| 欧美成人性战久久| 久久精品国产亚洲高清剧情介绍| 精品久久久久一区| 国产成人在线视频免费播放| 国产欧美精品区一区二区三区| 国产成都精品91一区二区三| 国产精品乱人伦| 91久久精品午夜一区二区| 亚洲同性gay激情无套| 在线免费观看视频一区| 蜜臀精品一区二区三区在线观看| 久久一二三国产| av在线播放不卡| 亚洲国产日韩精品| 精品国产一区二区三区不卡 | 午夜精品久久久久久| 日韩视频一区二区在线观看| 91同城在线观看| 国产成人精品亚洲午夜麻豆| 久久精品国产一区二区三| 国产高清在线精品| 激情丁香综合五月| 久久精品国产999大香线蕉| 日韩和的一区二区| 亚洲一区视频在线| 91精品国产综合久久精品| 日韩经典中文字幕一区| www欧美成人18+| 91免费在线播放| 日本成人在线视频网站| 国产欧美日韩不卡免费| av在线综合网| 免费欧美高清视频| 国产精品成人网| 在线精品亚洲一区二区不卡| 男男gaygay亚洲| 中文乱码免费一区二区| 欧美理论电影在线| 成人综合在线观看| 午夜精品久久一牛影视| 久久综合给合久久狠狠狠97色69| 91九色02白丝porn| 黄色小说综合网站| 国产精品福利一区| 日韩一区二区在线免费观看| 北条麻妃一区二区三区| 免费成人结看片| 最近中文字幕一区二区三区| 日韩视频永久免费| 91丨porny丨国产| 国产精品1区2区3区在线观看| 亚洲国产日韩一级| 国产午夜精品一区二区三区视频| 欧美日本视频在线| 91在线视频官网| 国产在线国偷精品产拍免费yy| 亚洲一区二区在线播放相泽| 国产日韩欧美a| 欧美日韩在线观看一区二区 | 国产一区二区免费视频| 亚洲高清在线精品| 日本一区二区三区久久久久久久久不| 欧美日韩在线观看一区二区| 国产精品1024| 日本欧洲一区二区| 亚洲在线成人精品| 国产精品久久久久久久久图文区| 日韩三级在线观看| 欧美日韩国产影片| 高清av一区二区| 久久激情综合网| 午夜精品福利一区二区蜜股av| 亚洲色图制服诱惑| 久久色在线观看| 97久久久精品综合88久久| 国产精品一区二区在线播放| 首页国产欧美久久| 亚洲最色的网站| 亚洲人成网站在线| 激情综合色综合久久| 亚洲一区二区三区影院| 成人欧美一区二区三区视频网页| 国产精品免费av| 国产欧美日韩综合| 久久久电影一区二区三区| 亚洲精品在线三区| 日韩欧美的一区| 欧美一区二区性放荡片| 欧美一级夜夜爽| 欧美日韩精品欧美日韩精品一 | 亚洲人妖av一区二区| 国产精品久久一卡二卡| 国产精品电影院| 亚洲三级视频在线观看| 亚洲精品欧美激情| 午夜电影一区二区| 毛片av一区二区| 国产一区二区三区黄视频| 国产91精品在线观看| 不卡电影一区二区三区| 91麻豆免费视频| 欧美丝袜丝交足nylons| 91精品国产aⅴ一区二区| 欧美电影免费观看高清完整版在线观看 | 色综合久久久久综合体桃花网| 色婷婷亚洲综合| 欧美高清www午色夜在线视频| 欧美大片免费久久精品三p| 久久久一区二区| 亚洲欧洲中文日韩久久av乱码| 亚洲国产成人tv| 麻豆精品一区二区综合av| 国产一区二区在线电影| 精品欧美黑人一区二区三区| 九一久久久久久| 国产大陆亚洲精品国产| av在线播放一区二区三区| 欧美亚洲高清一区| 欧美一级黄色片| 国产日韩欧美高清| 亚洲欧美日韩中文字幕一区二区三区| 午夜精品久久久久久久久久| 美女爽到高潮91| 成人午夜激情片| 欧美视频日韩视频| 欧美一区二区三区视频免费播放| 久久久亚洲午夜电影| 日韩美女视频一区二区| 日韩av在线发布| 国产91富婆露脸刺激对白| 欧美伊人久久久久久久久影院 | 欧美国产精品v| 亚洲影院在线观看| 狠狠狠色丁香婷婷综合久久五月| 9l国产精品久久久久麻豆| 欧美浪妇xxxx高跟鞋交| 国产午夜亚洲精品羞羞网站| 亚洲亚洲精品在线观看| 国产一区二区三区免费看| 色呦呦国产精品| 欧美不卡一区二区三区| 亚洲视频中文字幕| 免费高清在线一区| 99精品在线免费| 精品国产一区二区三区四区四 | 亚洲愉拍自拍另类高清精品| 狠狠色丁香久久婷婷综合_中 | 91麻豆免费看| 精品国产91久久久久久久妲己 | 一区二区三区丝袜| 久久av中文字幕片| 欧美性色欧美a在线播放| 久久久美女毛片| 日韩有码一区二区三区|