|
#if EN_OS_INT_ENTER >0
#pragma disable
始终搞不明白这两行代码什么意思。
#if EN_OS_INT_ENTER >0 //是允许系统管理中断嵌套???????
#pragma disable 禁止中断?????????
如果是禁止中断,又怎么实现的中断嵌套呢????
以下是陈明计提供的串口中断实例:
/*********************************************************************************************************
** 函数名称: comm
** 功能描述: 串口中断处理程序
** 输 入: 无
** 输 出: 无
** 全局变量: 无
** 调用模块: 无
**
** 作 者: 陈明计
** 日 期: 2002年12月4日
**-------------------------------------------------------------------------------------------------------
** 修改人:
** 日 期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#if EN_OS_INT_ENTER >0
#pragma disable /* 除非最高优先级中断,否则,必须加上这一句 */
#endif
void comm(void) interrupt 4
{
uint8 data temp;
if (RI == 1)
{
#if EN_OS_INT_ENTER >0
OS_INT_ENTER();
#endif
RI = 0;
OSQIntPost(SerialInData,SBUF);
OSIntExit();
return;
}
if (TI == 1)
{
TI = 0;
if (OSQAccept(&temp,SerialOutData) == OS_Q_OK)
{
SBUF = temp;
}
else
{
SerialCanSend = 1;
}
}
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。
|