osal_start_timerEx()
zigbee吧
全部回复
仅看楼主
level 2
SEegg♀ 楼主
zigbee osal_start_timerEx( )
最近一直在学习关于ZIGBEE方面的知识,其实和大多数学习者一样,刚开始什么都不懂,也就是到网上看一些资料。在这里我感谢那么无私奉献的网友们,是你们让我们这些想学习的新手有了很好的学习机会!谢谢!但是呢,随着学习的不断加深,我发现网上有些东西并不完全正确。我拿个例子来说吧!比如说:osal 里面的osal_start_timerEx( ) 这个函数、我在网上看到一些高人的解释是这样的。定时循环向任务发送事件。。其实函数解释原型是这样的:
osal_start_timerEx( )
Description
This function is called to start a timer. When the timer expires, the given event bit will be set. The event will be set for the task specified by taskID. This timer is a one shot timer, meaning that when the timer expires it isn’t reloaded.
我觉得吧英文差不能这个也读不懂吧!我个人的解释是这样的。这个函数的意思就是在定时执行处理事件的任务。也就是时间过完之后才把这个事件用事件处理函数执行、起到一个时间管理事件的作用。
很多时候,事件并不要求立即得到处理,而是要求过一定的时间后再
进行处理。因此,往往会遇到下面情况:假设A事件发生后要求lO秒之后执行,
B事件在A事件发生1秒后产生,且B事件要求5秒后执行。从时间轴的角度
上,我们可以知道,B事件虽然在A事件之后发生,但应当在A事件之前被处
理。为了按照合理的时间顺序来处理不同事件的执行,这就需要对各种不同的事
件进行时间管理。OSAL调度程序设计了与时间管理相关的函数,用来管理各种
不同的要被处理的事件。
对事件进行时间管理,OSAL也采用了链表的方式进行,每当发生一个要被
处理的事件后,就启动一个逻辑上的定时器,并将此定时器添加到链表之中。利
用硬件定时器作为时间操作的基本单元。设置时间操作的最小精度为lms,每
lms硬件定时器便产生一个时间中断,在时间中断处理程序中去更新定时器链
表。每次更新,就将链表中的每一项时间计数减l,如果发现定时器链表中有某
一表项时间计数已经减到0,则将这个定时器从链表中删除,并设置相应的事件
标志。这样任务调度程序便可以根据事件标志进行相应的事件处理。根据这种思
路,来自协议栈中的任何事件都可以按照时间顺序得到处理。从而提高了协议栈
设计的灵活性。
我最后想说的是:如果自己真的没有足够的水平就不要在网上发表技术性的文章。这样会误导很多学生、
2014年07月07日 03点07分 1
level 6
[滑稽]网上的东西本来就很多错误,学生也是会筛选知识的
2014年07月07日 04点07分 2
一本正经的讲错误的知识便很容易给人误导。
2014年07月07日 04点07分
level 1
ZigBee学习新人 能推荐一些资料或视频学习资料吗?
2014年07月21日 07点07分 3
level 8
很多时候都是在研究的过程中会总结很多东西,真正全都懂了也就不知道该写些什么了,在看网上资料的时候是一种参考,给自己一种思路,而不是绝对的相信,那样的出发点就是错的
2014年07月22日 00点07分 4
level 8
比如你说的定时器链表,虽然精度是1毫秒,有硬件定时器来产生1毫秒定时,而这1毫秒仅仅是将系统时间加1,定时器链表中的任务是由循环扫描来判断而不是直接有定时器去减1的,如果你定了一个1000毫秒的任务,而当前任务里有和2000毫秒的循环,那么那个1000毫秒的任务也会等到这2000毫秒的任务完成了才会执行。
2014年07月22日 00点07分 5
level 1
好,顶一个。
2015年05月01日 12点05分 6
level 1
我想利用osal_start_timerEx()函数起到延时的作用,可这个函数好像最多只能65535ms即65s的时间延时,而我目前想设置1小时的延时,不知道该如何才能做到!有知道的大神帮忙下吗
2016年06月03日 10点06分 7
用一个static变量计数啊,比如static int num=0;当num=60时,60 X 60不就是一个小时嘛,这时候你就可以真正触发1小时延时的任务啦
2016年07月19日 01点07分
最新协议栈是32位定时
2016年07月21日 16点07分
@ai小班 多谢回复,我已经弄好了[呵呵]
2016年07月29日 02点07分
@兔斯基小弟 您好,请问您是怎么解决的呀[乖]?我想设置4小时的延时呢,刚学还不太会呢
2017年04月13日 09点04分
1