Zigbee协议栈中OSAL系统如何写中断服务函数
目前用Zigbee协议栈中OSAL操作系统做无线收发、组网、和上位机串口通信什么的。硬件是CC2430,郑州蜂舞的开发板。以前没用过操作系统,添加中断服务程序的时候编译报错如图:提示:Error: function "T4_ISR" has no prototype
但是定时器中断实验程序(不在OSAL系统上)就没这个问题
如图
另,哪位大侠做过Zigbee2006组网能否给点这方面的资料,最好是偏重应用的。 问题补充:
是不是有了OSAL以后中断服务函数不能这么写?
#pragma vector = URX0_VECTOR
__interrupt void UART0_ISR(void)
{
;
}
如果不能应该怎么用中断呢?
或者是我的IAR设置有问题? 估计是你的设置有问题,很有可能是头文件没有包含进去,你仔细看一下包含的路径时候出错 hal_uart.c里面用了中断向量URX0_VECTOR 。
#if HAL_UART_ISR
/***************************************************************************************************
* @fn halUart0RxIsr
*
* @brief UART0 Receive Interrupt
*
* @param None
*
* @returnNone
***************************************************************************************************/
#if HAL_UART_0_ENABLE
HAL_ISR_FUNCTION( halUart0RxIsr, URX0_VECTOR )
{
cfg0->rxBuf = U0DBUF;
if ( cfg0->rxHead == cfg0->rxMax )
{
cfg0->rxHead = 0;
}
else
{
cfg0->rxHead++;
}
}
#endif 应该这样写:
HAL_ISR_FUNC_PROTOTYPE(UART0_ISR,URX0_VECTOR)
{;} 5楼正确,在协议栈里都做了封装!!
#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) z-stack已经占用了一部分中断,有的话就去改,没有再写,而且改的话需要理解原先的代码,不然改完就不工作了。
页:
[1]