微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 定时启动事件怎样能延时2个小时以上?

定时启动事件怎样能延时2个小时以上?

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

您好:

   1. 因为项目的原因,需要终端2个小时才启动一个事件,但是目前协议栈上给的函数osal_start_timerEx( uint8 taskID, uint16 event_id, uint16 timeout_value ), 最多延时65秒,试问,怎样才能延时到2个小时呢?

    2. 我将osal_start_timerEx( uint8 taskID, uint16 event_id, uint16 timeout_value ),改为osal_start_timerEx( uint8 taskID, uint16 event_id, uint32 timeout_value ),

也将osalTimerRec_t * osalAddTimer( uint8 task_id, uint16 event_flag, uint16 timeout ),改为

osalTimerRec_t * osalAddTimer( uint8 task_id, uint16 event_flag, uint32 timeout ),发现可以延时到2个小时以上,但是,协调器向终端发送信息,终端就接收不到了,这是什么原因?我应该做什么样的改动?

3.我按照 2 改完后,发现有一个警告,但是这个警告怎么也找不到修改的地方,这个警告是:Warning[w6]: Type conflict for external/entry "osal_start_timerEx", in module APS against external/entry in module OSAL_Timers; function types differ in parameter 3; different basic types ,我该怎么修改?

   期待你们的回复,谢谢了

已回复了。可以考虑使用新的协议栈,里面已经改为了unint32.  osal接口底层也会用到,你这样改显然是有问题的。

实在要在这个版本上做,你可以把定时任务定得小一点 ,uint16最多是65535ms, 你就定成60s的一个定时器,然后在定时处理任务里,用一个全局变量不断++

当这个值大于7200就是2小时嘛

{

// 60s定时事件,restart定时器60s

osal_start_timerEx(id, even, 60000);

if( twohours++ >=7200)

{

     //两小时到了

    twohours=0;

}

}

谢谢TY回复,

    您说的新协议栈是Z-Stack Home 1.2.2a吗?

是的。

TY您好:

 我按照网上的方法将ewp文件删除了,还是打不开,我需要更换IAR吗?我用的IAR是8051Embedded Workbench

 

不要删。重新下个IAR就好了,如下Link,9.10.1的版本。

https://www.iar.com/iar-embedded-workbench/partners/texas-instruments/ti-wireless/

TY您好,

    我重新下载了9.10.1版本,然后我将原来Source文件夹下的文件直接拷入到新版协议栈SampleTemperatureSensor下的Source文件夹下,将新协议栈下的文件删除掉,然后debug后,发现终端都加入不了网络了,协调器也不发信息了

   为什么会出现这样的情况?

不能这样覆盖式copy的。你先用协议栈本身的例子SampleTemperatureSensor来测试。 

好的,我为了快速实现所以。。。恩恩,我再试试 

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

网站地图

Top