微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > 求教问题,关于定时器的溢出模式进不了中断的问题?

求教问题,关于定时器的溢出模式进不了中断的问题?

时间:12-22 整理:3721RD 点击:

问题描述:

我用的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()

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top