求教问题,关于定时器的溢出模式进不了中断的问题?
问题描述:
我用的MCU是CC2530 ,协议栈版本是ZStack-CC2530-2.2.2-1.3.0,开发环境是IAR 7.51
最近遇到一个问题,我的裸机程序(不带协议栈)我使用定时器4,使用free-running模式,完全正常使用。但是,当我把它放到协议栈里面以后,并且把协议栈设置为#define HAL_TIMER FALSE,发现不能进去中断程序了。
我在仿真器中,也看了T4CNT的数值,也是在变化的。但是不知道为什么放到协议栈中,就不能进去中断了呢?或者,这个该如何解决呢?先谢谢了
源程序:
①裸机程序:
void Init_T4_AND_LED(void)
{
P1DIR |= 0x02;
P1SEL &= ~0x02;
P1_1 = 0;
TIMER34_INIT(4); //初始化T4
TIMER34_ENABLE_OVERFLOW_INT(4,1); //开T4中断
EA = 1;
T4IE = 1;
TIMER34_SET_CLOCK_divIDE(4,128);
TIMER34_SET_MODE(4,0); //自动重装00->0xff
TIMER34_START(4,1); //启动
};
/*****************************************
//主函数
*****************************************/
void main(void)
{
Init_T4_AND_LED();
while(1)
{
Delay(2);
Delay(2);
};
}
#pragma vector = T4_VECTOR
__interrupt void T4_ISR(void)
{
IRCON = 0x00; //可不清中断标志,硬件自动完成
P1_1 ^= 1;
}
②协议栈中,我是添加到
uint8 InitTimerFlag = 0x00;
void zb_HandleOsalEvent( uint16 event )
{
---------
---------
if( InitTimerFlag == 0x00 )
{
InitTimerFlag = 0x01;
Init_T4_AND_LED();
}
-------
-------
}
后面的初始化函数和向量中断函数,就都是一样的了
结语:
这个问题困扰了两天了,始终没有发现到底是哪里的问题。请各位帮帮忙,在此不胜感激
我解决了,原来是HAL_ISR_FUNCTION()