📄 drv_irq.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 + -