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

📄 drv_irq.c

📁 uCosII是一个小型的多任务调度内核
💻 C
字号:

#include "drv_defs.h"          /* drvier SFR define */

/*------------------------------------------------------------------------------
Function:       irq_clear_subsrc
Date:           2005-12-27
Description:    clear interrupt SUBSRCPND
Arguments:      vector
Return Value:   None
------------------------------------------------------------------------------*/
void irq_clear_subsrc(unsigned int vector)
{
//	SUBSRCPND |= (1<<vector);      /* clear the mask bit */
	SUBSRCPND = (1<<vector);      /* clear the mask bit */
}

/*------------------------------------------------------------------------------
Function:       irq_clear
Date:           2005-12-27
Description:    clear interrupt SRCPND
Arguments:      vector
Return Value:   None
------------------------------------------------------------------------------*/
void irq_clear(unsigned int vector)
{
//	SRCPND |= (1<<vector);      /* clear the mask bit */
//	INTPND |= (1<<vector);   	   /* clear the mask bit */
	SRCPND = (1<<vector);      /* clear the mask bit */
	INTPND = (1<<vector);   	   /* clear the mask bit */
}


/*------------------------------------------------------------------------------
Function:       irq_enable_submask
Date:           2005-12-27
Description:     enable the INTSUBMASK 
Arguments:      vector
Return Value:   None
------------------------------------------------------------------------------*/
void irq_enable_submask(unsigned int vector)
{
	INTSUBMSK &= ~(1<<vector);      /* clear the mask bit */
}

/*------------------------------------------------------------------------------
Function:       irq_enable_submask
Date:           2005-12-27
Description:    disable the INTSUBMASK
Arguments:      vector
Return Value:   None
------------------------------------------------------------------------------*/
void irq_disable_submask(unsigned int vector)
{
	INTSUBMSK |= (1<<vector);      /* clear the mask bit */
}

/*------------------------------------------------------------------------------
Function:       irq_enable
Date:           2005-11-24
Description:    enable the vector interrupt
Arguments:      None
Return Value:   None
------------------------------------------------------------------------------*/
void irq_enable(unsigned int vector)
{
	INTMSK &= ~(1<<vector);      /* clear the mask bit */
}

/*------------------------------------------------------------------------------
Function:       irq_disable
Date:           2005-11-24
Description:    disable the vector interrupt
Arguments:      None
Return Value:   None
------------------------------------------------------------------------------*/
void irq_disable(unsigned int vector)
{
	INTMSK |= (1<<vector);      /* set the mask bit */
}


/*------------------------------------------------------------------------------
Function:       irq_stop
Date:           2005-12-21
Description:    stop all IRQ & FIQ
Arguments:      None
Return Value:   None
------------------------------------------------------------------------------*/
void irq_stop(void)
{
	unsigned int tcp;
	__asm
	{
		MRS tcp, CPSR
		ORR tcp, tcp, #0xC0
		MSR CPSR_c, tcp
	}
}



/*------------------------------------------------------------------------------
Function:       irq_start
Date:           2005-12-21
Description:    restore all IRQ & FIQ
Arguments:      None
Return Value:   None
------------------------------------------------------------------------------*/
void irq_start(void)
{
	unsigned int tcp;
	__asm
	{
		MRS tcp, CPSR
		BIC tcp, tcp, #0xC0
		MSR CPSR_c, tcp
	}
}


⌨️ 快捷键说明

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