微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > ZStack-CC2530-2.3.0-1.4.0 定时器使用问题

ZStack-CC2530-2.3.0-1.4.0 定时器使用问题

时间:10-02 整理:3721RD 点击:

我在使用ZStack-CC2530-2.3.0-1.4.0 时需要用到us级别的定时,和pwm输出,现在想通过使用定时器实现以上功能,但是定时器没有工作,不知道在zstack中使用定时器要有哪些步骤呢?谢谢!我已经做了以下工作:

1,配置HAL_TIMER == TRUE;

2,初始化定时器

HalTimerConfig(HAL_TIMER_3,HAL_TIMER_MODE_CTC,HAL_TIMER_CHANNEL_A,HAL_TIMER_CH_MODE_OUTPUT_COMPARE,TRUE,CallBack);


 HalTimerStart(HAL_TIMER_3,100);

3,编写定时处理函数

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

{

HalLedSet (HAL_LED_2, HAL_LED_MODE_FLASH);
}

就是这样,没问题啊。。

实际运行定时器没有工作,是不是还要其他要修改的地方,还有怎么在协议栈里面添加pwm功能呢?谢谢!

我是在void GenericApp_Init( byte task_id )这里初始化的,不知道这样有没有问题呢,麻烦知道的高手指点一下谢谢!

没发觉有什么问题,

不知道你有没有单步调试过,

以上程序都执行到了么,

是不是不能进入CallBack啊?

 

打开pwm功能,

我觉得就是设置一下定时器外设的引脚(设置PERCFG和PxSEL寄存器),

再设置一下匹配时的操作就行了吧(设置CCTL寄存器的CMP[2:0])。

进不去callback,估计是定时器没工作,而且打开定时器后程序就不正常了。

这个版本的协议栈里面,HalTimerConfig函数的第一个参数,是timerId,HAL_TIMER_3对应是硬件上的Timer1

具体可以看下这个函数里面进去的时候,有一个转换的函数。

uint8 HalTimerConfig (uint8 timerId, uint8 opMode, uint8 channel, uint8 channelMode, 

                     bool intEnable, halTimerCBack_t cBack)

{   uint8 hwtimerid;

  hwtimerid = halTimerRemap (timerId);

  if ((opMode & HAL_TIMER_MODE_MASK) && (timerId < HAL_TIMER_MAX) &&

       (channelMode & HAL_TIMER_CHANNEL_MASK) && (channel & HAL_TIMER_CHANNEL_MASK))  

 {    

 halTimerRecord[hwtimerid].configured    = TRUE;    

 halTimerRecord[hwtimerid].opMode        = opMode;    

 halTimerRecord[hwtimerid].channel       = channel;   

  halTimerRecord[hwtimerid].channelMode   = channelMode;    

 halTimerRecord[hwtimerid].intEnable     = intEnable;    

halTimerRecord[hwtimerid].callBackFunc  = cBack;  

 }  

 else  

{    

return HAL_TIMER_PARAMS_ERROR;

  }

  return HAL_TIMER_OK;

}

如果使用其他定时器也是不行的

这个版本是2007的吧

在这个栈里为什么看不到系统时钟的初始化,没有调用到跟定时器有关的函数呢?

再看看HalTimerStart函数就知道了。。

谢谢,不知道这个跟编译选项有关呢,我只有NV_RESTORE =1,和跟uart相关的选项

还有一个问题:我的协调器间隔100ms广播64字节数据(可以看到发送指示灯按间隔时间闪烁),但是中端接收的间隔远大于100ms,无线传输距离<1m,中端接收有一定的间隔,但是完全跟协调器发送的不同,是不是传输过程有自动成帧呢,如果发送的间隔长点(>500ms),发送跟接收就是同步的。有什么办法可以实现发送接收的间隔同步呢,或者近乎同步。谢谢!

ZC在网络里面一直出active状态,因为需要监控管理整个网络,而ZED是有可能处于休眠状态的,那么ZC在向ZED发送数据的时候,它可能认为ZED正处于休眠状态,所以不能立即把数据发出去,那么当ZED发送data request出来的时候,ZC可以判断此时,ZED一定出去active状态,那么这时候才把数据发出去。那么ZED发送数据给ZC,因为ZED知道ZC一直出去active状态,所以想发的时候就直接发出去了。

我的zed配置为路由器也是这样,怎样才能不进入休眠呢,编译选项已经去除POWER_SAVING,DRFD_RCVC_ALWAYS_ON=TRUE.

US级定时的问题到现在有谁解决了?给指导一下吧,这个问题我也遇到了,进不了回调函数

 HalTimerStart函数式在哪里调用的呀,还有回调函数CallBack应该放在哪里,而且回调函数里面不用处理中断标志位吗?

您好!您把问题解释得很清楚,但是能告诉我们解决办法吗?我也碰到类似的问题了,谢谢了!

问题没有解决,改方案了

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

网站地图

Top