TI的大神们,我使用协议栈的定时器接口函数准备操作定时器,搞不懂了,就是不进中断,回调函数也没用
编译TIMER=TRUE
在SampleApp_Init()里面定义的了定时器的配置函数
HalTimerConfig(HAL_TIMER_0,HAL_TIMER_MODE_CTC, HAL_TIMER_CHANNEL_A,
HAL_TIMER_CH_MODE_OUTPUT_COMPARE, TRUE, timer3CallBackFunction);
HalTimerInterruptEnable(HAL_TIMER_0, HAL_TIMER_CH_MODE_OUTPUT_COMPARE, TRUE);
当ZDO_STATE_CHANGE触发,成为中断时候执行HalTimerStart(HAL_TIMER_0, 5000);
回调函数:
static void timer3CallBackFunction(uint8 timerId, uint8 channel, uint8 channelMode)
{
SampleApp_Send_P2P_Message();
}
根本进不去回调函数,然后我再去看中断处理
HAL_ISR_FUNCTION( halTimer3Isr, T3_VECTOR )
{
halProcessTimer3();
}
设端点无法进入……也不执行。无解中…….
之后换了种办法,去掉编译TIMER=TRUE,自己用寄存机配置
void InitT3()
{
T3CTL |= 0x08 ; //开溢出中断
T3IE = 1; //开总中断和 T3 中断
T3CTL |= 0xE0; //128 分频,128/16000000*N=0.5S,N=62500
T3CTL &= ~0x03; //自动重装 00->0xff 62500/255=245(次)
T3CTL |= 0x10; //启动 EA = 1; //开总中断
}
HAL_ISR_FUNCTION( halTimer3Isr, T3_VECTOR )
{
RCON = 0x00; //清中断标志, 也可由硬件自动完成
if(count++ > 245) //245 次中断后 LED 取反,闪烁一轮(约为 0.5 秒时间)
{ //经过示波器测量确保精确
count = 0; //计数清零
LED1 = ~LED1; //改变 LED1 的状态
}
}
这里灯始终不闪….无解ing……………………
VV:
你想直接使用硬件定时器的目的为什么了?你期望达到的定时时间多少?需要uS级吗?
yusheng Wu:
回复 VV:
您好VV:
计划是这样的,用ADC采集1KHZ信号,每个400us采集一次,存到数组里面。到达一定数量以后打包发送到协调器。
想试验下这个计划行不行。所以想要启动定时器,试了几种方法都失败了。