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

📄 instisr.c

📁 56f8300E系列dsp的BOOTloader
💻 C
📖 第 1 页 / 共 2 页
字号:
    asm( move.l POUND >>(BSP_PERIPH_BASE + archoff_##device), R2 );           		\
    asm( move.l POUND >>##device##DeviceContext, R3 );                      \
    asm( move.l POUND >>##device##type1##_DispatchCallback, R4 );           \
    asm( move.l POUND >>##device##type2##_DispatchCallback, R5 );           \
    asm( jsr	CallBack);													\
    asm( move.l X:(SP)-,R5);												\
    asm( move.l X:(SP)-,R4);												\
    asm( move.l X:(SP)-,R3);												\
    asm( move.l X:(SP)-,R2);												\
    asm( rti);																\
};


#define ArchInstall4CallBackISR(device,num, type1, type2, type3, type4,  CallBack, prio )	\
void SDK_Interrupt##num(void);                                              \
void SDK_Interrupt##num(void)                                               \
{                                                                           \
	extern void CallBack(void);												\
	asm( adda	#2,SP);														\
	asm( move.l	N, X:(SP)+);												\
	asm( move.l	R1, X:(SP)+);												\
	asm( move.l	R2, X:(SP)+);												\
	asm( move.l	R3, X:(SP)+);												\
	asm( move.l	R4, X:(SP)+);												\
	asm( move.l	R5, X:(SP));												\
    asm( move.l POUND >>##device##type1##_DispatchCallback, N );           	\
    asm( move.l POUND >>##device##type2##_DispatchCallback, R1 );           \
    asm( move.l POUND >>(BSP_PERIPH_BASE + archoff_##device), R2 );            	\
    asm( move.l POUND >>##device##DeviceContext, R3 );           			\
    asm( move.l POUND >>##device##type3##_DispatchCallback, R4 );           \
    asm( move.l POUND >>##device##type4##_DispatchCallback, R5 );           \
    asm( jsr	CallBack);													\
    asm( move.l X:(SP)-,R5);												\
    asm( move.l X:(SP)-,R4);												\
    asm( move.l X:(SP)-,R3);												\
    asm( move.l X:(SP)-,R2);												\
    asm( move.l X:(SP)-,R1);												\
    asm( move.l X:(SP)-,N);												\
    asm( rti);																\
};


#define ArchInstallGPIOISR( num, port, prio )                         					\
void SDK_Interrupt##num(void);                                              			\
void SDK_Interrupt##num(void)                                               			\
{																						\
	asm( 		alignsp 		                    								);	\
	asm(    	move.l  R2 , x:(SP)+												);	\
	asm(    	move.l  A10, x:(SP)													);	\
	asm(    	move.l  POUND ArchIO.Port##port,R2									);	\
																						\
	asm( 		move.w X:(BSP_PERIPH_BASE + archoff_Port##port##_IntPendingReg), A			);	\
    asm( 		jsr GPIO##port##any##_DispatchCallback								);  \
																						\
	asm( getPinCallback:															); 	\
																						\
	asm( 		move.w X:(BSP_PERIPH_BASE + archoff_Port##port##_IntPendingReg), A			);	\
																						\
    asm( 		brset POUND 0x0001, A1, pin_1  										);	\
    asm( pin_1_next: 																);	\
    asm( 		brset POUND 0x0002, A1, pin_2  										);	\
    asm( pin_2_next: 																);	\
    asm( 		brset POUND 0x0004, A1, pin_3  										);	\
    asm( pin_3_next: 																);	\
    asm( 		brset POUND 0x0008, A1, pin_4  										);	\
    asm( pin_4_next: 																);	\
    asm( 		brset POUND 0x0010, A1, pin_5  										);	\
    asm( pin_5_next: 																);	\
    asm( 		brset POUND 0x0020, A1, pin_6  										);	\
    asm( pin_6_next: 																);	\
    asm( 		brset POUND 0x0040, A1, pin_7  										);	\
    asm( pin_7_next: 																);	\
    asm( 		brset POUND 0x0080, A1, pin_8  										);	\
    asm( pin_8_next: 																);	\
																						\
	asm(    	move.l  x:(SP)- , A													);	\
	asm(    	move.l  x:(SP)- , R2												);	\
	asm(    	move.l  x:(SP)- , SP												);	\
																						\
    asm(		rti 																);	\
																						\
    asm( pin_1: 																	);	\
    asm( 		bfset POUND 1, X:(BSP_PERIPH_BASE + archoff_Port##port##_IntEdgeSensReg) 	); 	\
    asm( 		jsr GPIO##port##0any##_DispatchCallback								); 	\
    asm( 		bra pin_1_next														);	\
																						\
    asm( pin_2: 																	);	\
    asm( 		bfset POUND 2, X:(BSP_PERIPH_BASE + archoff_Port##port##_IntEdgeSensReg) 	); 	\
    asm( 		jsr GPIO##port##1any##_DispatchCallback								); 	\
    asm( 		bra pin_2_next														);	\
																						\
    asm( pin_3: 																	);	\
    asm( 		bfset POUND 3, X:(BSP_PERIPH_BASE + archoff_Port##port##_IntEdgeSensReg)	);	\
    asm( 		jsr GPIO##port##2any##_DispatchCallback								); 	\
    asm( 		bra pin_3_next														);	\
																						\
    asm( pin_4: 																	);	\
    asm( 		bfset POUND 4, X:(BSP_PERIPH_BASE + archoff_Port##port##_IntEdgeSensReg) 	);	\
    asm( 		jsr GPIO##port##3any##_DispatchCallback								); 	\
    asm( 		bra pin_4_next														);	\
																						\
    asm( pin_5: 																	);	\
    asm( 		bfset POUND 5, X:(BSP_PERIPH_BASE + archoff_Port##port##_IntEdgeSensReg) 	);	\
    asm( 		jsr GPIO##port##4any##_DispatchCallback								); 	\
    asm( 		bra pin_5_next														);	\
																						\
    asm( pin_6: 																	);	\
    asm( 		bfset POUND 6, X:(BSP_PERIPH_BASE + archoff_Port##port##_IntEdgeSensReg) 	);	\
    asm( 		jsr GPIO##port##5any##_DispatchCallback								); 	\
    asm( 		bra pin_6_next														);	\
																						\
    asm( pin_7: 																	);	\
    asm( 		bfset POUND 7, X:(BSP_PERIPH_BASE + archoff_Port##port##_IntEdgeSensReg) 	); 	\
    asm( 		jsr GPIO##port##6any##_DispatchCallback								); 	\
    asm( 		bra pin_7_next														);	\
																						\
    asm( pin_8: 																	);	\
    asm( 		bfset POUND 8, X:(BSP_PERIPH_BASE + archoff_Port##port##_IntEdgeSensReg) 	); 	\
    asm( 		jsr GPIO##port##7any##_DispatchCallback								); 	\
    asm( 		bra pin_8_next														);	\
																						\
    asm( GPIO##port##any##_DispatchCallback:										);	\
    asm( GPIO##port##0any##_DispatchCallback:										);	\
    asm( GPIO##port##1any##_DispatchCallback:										);	\
    asm( GPIO##port##2any##_DispatchCallback:										);	\
    asm( GPIO##port##3any##_DispatchCallback:										);	\
    asm( GPIO##port##4any##_DispatchCallback:										);	\
    asm( GPIO##port##5any##_DispatchCallback:										);	\
    asm( GPIO##port##6any##_DispatchCallback:										);	\
    asm( GPIO##port##7any##_DispatchCallback:										);	\
    asm( 		rts																	);	\
}

/* ADC ISR */
#define ArchInstallADCErrorCallBackISR(device, num, CallBack, prio )		\
void SDK_Interrupt##num(void);                                              \
void SDK_Interrupt##num(void)                                               \
{                                                                           \
    asm(	brclr POUND ADC_ZCI|ADC_LLMT|ADC_HLMT , X:(BSP_PERIPH_BASE + archoff_##device##_StatusReg ), end ); \
	asm(	alignsp 		                    						);		\
	asm(	move.l  R2 , x:(SP)+										);		\
	asm(	move.l  R3 , x:(SP)+										);		\
	asm(	move.l  R4 , x:(SP)+										);		\
	asm(	move.l  Y  , x:(SP)											);		\
    asm( 	move.l  POUND (BSP_PERIPH_BASE + archoff_##device), R2 			);      \
    asm(	move.l	POUND >>device##DeviceContext, R3 					);		\
    asm(	brset POUND ADC_ZCI  , X:(BSP_PERIPH_BASE + archoff_##device##_StatusReg), lbl_AZC 			);	\
    asm(endtestZC:																	);	\
    asm(	brset POUND ADC_LLMT|ADC_HLMT , X:(BSP_PERIPH_BASE + archoff_##device##_StatusReg), lbl_ALL	);	\
    asm(endtest:																	);	\
	asm(	move.l  x:(SP)- , Y											);		\
	asm(	move.l  x:(SP)- , R4										);		\
	asm(	move.l  x:(SP)- , R3										);		\
	asm(	move.l  x:(SP)- , R2										);		\
	asm(	move.l  x:(SP)- , SP										);		\
	asm(    nop   														);		\
	asm(    nop															);		\
    asm(end: 															);		\
    asm(	rti 														);		\
                                                                            \
    asm(lbl_AZC: 																				);	\
    asm(	brclr 	POUND ADC_ZCIE, X:(R2 + #arch_sADC_offset_Control1Reg), clear_ZCSR	);	\
    asm(	move.l	POUND >>device##ZeroCrossing##_DispatchCallback, R4 						);	\
	asm(	move.w	X:(R2 + #arch_sADC_offset_ZeroCrossStatusReg), Y1					);	\
	asm(	move.w	X:(R3 + #sAdcDevice_offset_maskZeroCrossing ), Y0							);	\
	asm(	and.w	Y1, Y0																		);	\
	asm(	beq		endtestZC																	);	\
    asm(	jsr		CallBack																	);	\
	asm(clear_ZCSR:																				);	\
	asm(	move.w	0x00ff, X:(R2 + #arch_sADC_offset_ZeroCrossStatusReg)				);	\
    asm(	jmp		endtestZC																	);	\
                                                                       		\
    asm(lbl_ALL: 																				);	\
	asm(	move.w	X:(R2 + #arch_sADC_offset_LimitStatusReg), Y1						);	\
	asm(	move.w	X:(R3 + #sAdcDevice_offset_maskLimit ), Y0									);	\
	asm(	and.w	Y1, Y0																		);	\
	asm(	move.w	Y0, Y1																		);	\
	asm(	brclr	#$ff, Y0, lbl_AHL															);	\
    asm(	brclr 	POUND ADC_LLMTIE, X:(R2 + #arch_sADC_offset_Control1Reg), clear_LLSR	);	\
    asm(	move.l	POUND >>device##LowLimit##_DispatchCallback, R4								);	\
    asm(	jsr		CallBack																	);	\
	asm(clear_LLSR:																				);	\
	asm(	move.w	0x00ff, X:(R2 + #arch_sADC_offset_LimitStatusReg)					);	\
                                                                            \
    asm(lbl_AHL: 																				);	\
    asm(	brclr 	POUND ADC_HLMTIE, X:(R2 + #arch_sADC_offset_Control1Reg), clear_HLSR	);	\
	asm(	move.w	Y1, Y0																		);	\
	asm(	asrr.w	#8, Y0																		);	\
	asm(	beq		endtest															);	\
    asm(	move.l	POUND >>device##HighLimit##_DispatchCallback, R4 							);	\
    asm(	jsr		CallBack																	);	\
	asm(clear_HLSR:																				);	\
	asm(	move.w	0xff00, X:(R2 + #arch_sADC_offset_LimitStatusReg)					);	\
    asm(	jmp		endtest																		);	\
}
/* include user and default configuration */
#include "config.h"

 

⌨️ 快捷键说明

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