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

📄 sys_init.asm

📁 这是实现三相异步电动机FOC的DSP开发源代码
💻 ASM
字号:
;===========================================================================
; 文件名: Sys_init.asm				      
;
; 模块名: SYS_INIT	
;
; 功能描述:  初始化 F24x/xx 设备
;
; 公司:	达盛科技
;
; 修改记录:
;
; 最后更新日期: 2005.7.29
;===========================================================================
		.include	x24x_app.h
		.def	SYS_INIT
		.ref	GPR0    
		

stack_size	.set	20h
stack_start	.usect	"stack",stack_size	

SYS_INIT:
;---目标板选择---------------
	.if (x240)

		POINT_PG0
		SETC	INTM			;禁止中断
		SPLK	#0h, IMR		;屏蔽所有中断
		SPLK	#0FFh, IFR		;清所有中断标志
		CLRC	SXM				;禁止符号扩展
		CLRC	OVM				;清溢出标志
		CLRC	CNF				;设置 Block B0 为数据存储器
		LAR	AR1, #stack_start	;初始化堆栈指针
		MAR	*,AR1

		POINT_B0
		SPLK	#04h, GPR0		;Set 0 wait states for XMIF
		OUT	GPR0, WSGR

		POINT_PF1
		SPLK	#0041h,PLL_CNTL1	;Disable PLL first.=CPUCLK/2,
		SPLK	#00B1h,PLL_CNTL2	;CLKIN(XTAL)=10MHz, PLL*2.0=20MHz
;		SPLK	#0081h,PLL_CNTL1	;CLKMD=PLL Enable,f_SYSCLK=f_CPUCLK/2
        SPLK	#0080h,PLL_CNTL1	;CLKMD=PLL Enable,f_SYSCLK=f_CPUCLK/4
		SPLK	#40C0h,SYSCR		;CLKOUT=CPUCLK

	;Comment out if WD is to be active
		SPLK	#006Fh, WD_CNTL 	;如果 VCCP=5V则禁止WD
		KICK_DOG
		RET
	.endif
;-----------------------------------

	.if (x243)
		POINT_PG0
		SETC	INTM			;Disable interrupts
		SPLK	#0h, IMR		;Mask all Ints
		SPLK	#0FFh, IFR		;Clear all Int Flags

;Init PDP interrupt flag after reset		
		LDP	#PIRQR0>>7
		LACC	PIRQR0		; Clear pending PDP flag
		AND	#0FFFEh
		SACL	PIRQR0
		POINT_EV
		LACC	EVIFRA		; Clear PDP int flag
		OR	#0001h
		SACL	EVIFRA 


		POINT_PG0
		CLRC	SXM			;Clear Sign Extension Mode
		CLRC	OVM			;Reset Overflow Mode
		CLRC	CNF			;Config Block B0 to Data mem.
		SPM	0
		LAR	AR1, #stack_start	;Init s/w stack pointer
		MAR	*,AR1

		POINT_B0
		SPLK	#0040h, GPR0	;Set 0 wait states for XMIF
		OUT	GPR0, WSGR

		POINT_PF1
		SPLK	#40C0h,SYSCR	;CLKOUT=CPUCLK

	;Comment out if WD is to be active
		SPLK	#006Fh, WD_CNTL 	;如果 VCCP=5V则禁止WD
		KICK_DOG
		RET
	.endif
;-----------------------------------

	.if (x2407)
		POINT_PG0
		SETC	INTM			;禁止中断
		SPLK	#0h, IMR		;屏蔽中断申请
		SPLK	#0FFh, IFR		;清除中断标志

;Init PDP interrupt flag after reset		
		LDP	#PIRQR0>>7
		LACC	PIRQR0		; Clear pending PDP flag
		AND	#0FFFEh
		SACL	PIRQR0
		LACC	PIRQR2		; Clear pending PDP flag
		AND	#0FFFEh
		SACL	PIRQR2

		LDP #MCRB>>7
		;SPLK #0FE3FH,MCRB
		LACC MCRB
		OR #003CH
		SACL MCRB

		POINT_EV
		LACC	EVAIFRA		; Clear PDPINTA flag
		OR	#0001h
		SACL	EVAIFRA 
		LDP	#EVBIFRA>>7
		LACC	EVBIFRA		; Clear PDPINTB flag
		OR	#0001h
		SACL	EVBIFRA 
		
		POINT_PG0
		CLRC	SXM			;Clear Sign Extension Mode
		CLRC	OVM			;Reset Overflow Mode
		CLRC	CNF			;Config Block B0 to Data mem.
		SPM	0
		LAR	AR1, #stack_start		;Init s/w stack pointer
		MAR	*,AR1

		POINT_B0
		SPLK	#00C0h, GPR0	;Set 1 wait states for I/O space
		OUT	GPR0, WSGR

		POINT_PF1 
   
		.if (x4_PLL)  
    		SPLK	#00A5h, SCSR1	; x4 PLL, ADC en, EV1 en, clr Ill Addr flg         
		.endif 
 
    		.if (x2_PLL)  
    		SPLK	#02A5h, SCSR1	; x2 PLL, ADC en, EV1 en, clr Ill Addr flg
		.endif 
        
	;Comment out if WD is to be active
		SPLK	#006Fh, WD_CNTL 	;如果 VCCP=5V则禁止WD
		KICK_DOG
		RET
	.endif
;-----------------------------------

⌨️ 快捷键说明

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