CC2530在协议栈中编程无法进入I/O口外部中断HAL_ISR_FUNCTION(ZMDPort01ISR, P0INT_VECTOR )
/****************************
//T1初始化与P0.1配置程序程序
***************************/
void InitialT1_P01(void)
{
//HalUARTWrite(0,uartbuf,16);
P0SEL |= 0x00; //配置成GPIO功能
P0DIR &= ~0x02; //配置成输入
P0IFG |= 0x00; //清除中断标志
PICTL = 0x00; //设置为上升沿触发中断 PICTL[1] = 0上升沿触发;PICTL[1] = 1下降沿触发
//初始化定时器1
T1CNTH = 0x00;
T1CNTL = 0x00;
T1CTL |= 0x09; //32分频;自动重装模式(0x0000->0xffff)
P0IEN |= 0x02; //使能P0_1引脚中断
IEN0 |= 0x80; //打开总中断
//EA = 1;
IEN1 |= 1<<5;
}
/******************************************************************************
P0.1端口中断服务函数
******************************************************************************/
HAL_ISR_FUNCTION(ZMDPort01ISR, P0INT_VECTOR )
{
if(P0IFG>0)
{
Port01ISR();
}
P0IFG = 0;
P0IF = 0;
osal_set_event(GenericApp_TaskID,SEND_DATA_EVENT);
}
//HAL_ISR_FUNC_PROTOTYPE(f,v);
//HAL_ISR_FUNC_PROTOTYPE(f,v);
void Port01ISR(void)
{
//uartbuf[30] = "Get in HaL_ISR !";
HalUARTWrite(0,uartbuf,16);
T1L = T1CNTL;
T1H = T1CNTH;
if(float_flag == 0)
{
t1 = T1H*256+T1L;
PICTL = 1; //设置为下降沿触发
}
else
{
t2 = T1H*256+T1L;
PICTL = 0; //设置为上升沿触发
HighTime[index] = t2 -t1;
index++;
if((t2 - t1) > 10000 && (t2 - t1 < 30000))index = 0;
if(index == 29)
{
index = 0;
flag = 1;
EA = 0;
}
}
float_flag = !float_flag;
}
您好,我写了一个单机版的I/O中断,可以实现检测外部中断信号,但是移植到协议栈中之后,就一直无法进入中断,请高手帮我看一下我的代码,哪里不对?
您移植到了哪个工程?在TI的示例程序内,P0_1已经用作了按键操作
#define PUSH1_SBIT P0_1
您可以取消协议栈内的按键操作试试,将hal_board_cfg.h内的
/* Set to TRUE enable KEY usage, FALSE disable it */
#ifndef HAL_KEY
#define HAL_KEY TRUE
#endif
改为 #define HAL_KEY FALSE
您好,我是移植到了GenericApp这个工程里面的EndDevice.c这个文件中。我按照您的提示已经修改了代码,并且已经可以进入中断,功能已经实现了,真是太感谢了。
裸机 T3 中断16次 放到协议栈中断上万次 求解 QQ772011129 方便联系 大神
谢谢你,我也解决了一样的问题