TI中文支持网
TI专业的中文技术问题搜集分享网站

cc2530 z-stack协议栈中定时器的使用

if ( (SerialApp_NwkState == DEV_ZB_COORD)
|| (SerialApp_NwkState == DEV_ROUTER)
|| (SerialApp_NwkState == DEV_END_DEVICE) )
{


HalTimerConfig(HAL_TIMER_3,HAL_TIMER_MODE_CTC,HAL_TIMER_CHANNEL_SINGLE,HAL_TIMER_CH_MODE_OUTPUT_COMPARE,TRUE,CallBack); 
HalTimerInterruptEnable ( uint8 timerId,uint8 channelMode,bool enable );
HalTimerStart(HAL_TIMER_3,100);

static void CallBack( uint8 timerId, uint8 channel, uint8 channelMode)

{
unsigned char tip[] = {0x23,0x00,0xff};
tip[1] = ENDDEVICE;
HalUARTWrite(UART0, tip, 3);
}

然后串口并没有输出信息,哪里配置错了吗?

user1999055:

原文地址:http://www.kaleidscope.cn:1020/archives/1056

以下为部分内容:

Zigbee协议栈中如果要实现一个定时事件或者延时的话,有很多种方法,定时事件呢其实就是我们熟悉的使用定时器来定时,产生定时事件,当然也可以用来延时。 1、协议栈定时器HalTimerConfig ZigBee协议栈提供了定时器的使用接口,在hal层调用HalTimerConfig即可配置使用,而定时器2被协议栈占用了,所以只有使用1、3、4三个定时器。 在hal_timer.h中我们可以看到几个定时器的定义:

/* Timer ID definitions */

#define HAL_TIMER_0 0x00 // 8bit timer

#define HAL_TIMER_1 0x01 // 16bit Mac timer

#define HAL_TIMER_2 0x02 // 8bit timer

#define HAL_TIMER_3 0x03 // 16bit timer

#define HAL_TIMER_MAX 4 // Max number of timer

所以和硬件中的定时器是有区别的,经过了映射,这里需要注意一下。

* HAL_TIMER_0 –> HW Timer 3 8bit

* HAL_TIMER_2 –> HW Timer 4 8bit

* HAL_TIMER_3 –> HW Timer 1 16bit

如果我们要使用协议栈的定时器进行相关操作,只需进行定时器的配置即可:

extern uint8 extern uint8 HalTimerConfig ( uint8 timerId,uint8 opMode,uint8 channel,uint8 channelMode,bool intEnable,halTimerCBack_t cback );

opMode – Operation mode操作方式共3种

* channel – Channel where the counter operates on选择通道,对应IO口

* channelMode – Mode of that channel通道的模式

* intEnable -可中断

* cBack – Pointer to the callback function 中断函数

然后在回调函数中进行处理相关事件即可。

void timer_callback(uint8 timerId, uint8 channel, uint8 channelMode);

2、使用寄存器直接操作

直接使用寄存器就更简单了,就把CC2530当做一个单片机用就可以了,这里我拿了我以前写的代码给大家演示,注释有错的地方请忽略,大概就这样吧。

void InitT3(void)

{

T3CTL |= 0x08 ; //开溢出中断

T3IE = 1; //开总中断和T3中断

T3CTL|=0X12; //,128/16000000*N=0.5S,N=65200

T3CC0 = 0x01;

T3CTL &= ~0X03; //自动重装 00->0xff

T3CTL |=0X10; //启动

}

void timer1Init(void)

{/*设置定时器T1,128分频,模模式,从0计数到T1CC0*/

user6046158:

请问一下楼主,你的问题解决了吗?我最近想使用协议栈输出PWM波,但是有些参数不会配置,看了你的帖子配置了一点点,不知道楼主后续怎么样了。还请楼主指点一二。

YiKai Chen:

回复 user6046158:

可以參考一下 : sunmaysky.blogspot.com/…/how-to-output-pwm-from-cc2530.html

user6046158:

回复 YiKai Chen:

你好,请问这个网站是墙外的吗?我这一打开就显示页面丢失

YiKai Chen:

回复 user6046158:

是墙外的

user6046158:

回复 YiKai Chen:

好吧!我等下自己翻一下,非常感谢你的指点

赞(0)
未经允许不得转载:TI中文支持网 » cc2530 z-stack协议栈中定时器的使用
分享到: 更多 (0)