OSAL系统如何写中断服务函数
参考资料;
http://bbs.21ic.com/icview-192248-1-1.html
问题:
OSAL添加中断服务程序的时候编译报错
提示:Error[Pa045]: function "T4_ISR" has no prototype
但是定时器中断实验程序(裸机,无OSAL)就没这个问题
解答:
OSAL里中断进行了封装,不能直接写
#pragma vector = URX0_VECTOR
__interrupt void UART0_ISR(void)
{
;
}
而应该类似于下面这个写法:
HAL_ISR_FUNCTION( halUart0RxIsr, URX0_VECTOR )
{
}
在hal_mcu.h里
#define _PRAGMA(x) _Pragma(#x)
#define HAL_ISR_FUNC_DECLARATION(f,v) _PRAGMA(vector=v) __near_func __interrupt void f(void)
#define HAL_ISR_FUNC_PROTOTYPE(f,v) _PRAGMA(vector=v) __near_func __interrupt void f(void)
#define HAL_ISR_FUNCTION(f,v) HAL_ISR_FUNC_PROTOTYPE(f,v); HAL_ISR_FUNC_DECLARATION(f,v)