osal_int_disable( INTS_ALL )分析:
源码:
uint8 osal_int_disable( uint8 interrupt_id )
{
if ( interrupt_id == INTS_ALL )
{
HAL_DISABLE_INTERRUPTS();
return ( SUCCESS );
}
else
{
return ( INVALID_INTERRUPT_ID );
}
}
这个函数的作用是关闭所有的中断,如果interrupt_id == INTS_ALL条件成立,则执行关闭中断函数,并且在其内部调用函数HAL_DISABLE_INTERRUPTS(),而此函数是通过宏定义实现的:#defineHAL_DISABLE_INTERRUPTS() st( EA =0; )
可以发现EA=0,查看技术手册我们可以知道EA是总中断的控制位,也就是总中断为0,关闭所有中断。
如果interrupt_id == INTS_ALL条件不成立,那么返回INVALID_INTERRUPT_ID = 0x07,代表中断的ID不正确,是非法的。
注:st函数的宏定义如下:#definest(x) do { x } while (__LINE__ ==-1),__LINE__表示当前代码的行号,他肯定不为-1,所以while循环的条件不成立,所以先执行后判断,执行完成一次退出。