搜索
bottom↓
回复: 7

【请教】RTT中的定时器有数量限制吗?

[复制链接]

出0入0汤圆

发表于 2011-9-23 14:27:09 | 显示全部楼层 |阅读模式
如题

最近在使用定时器回调时,程序经常跑飞,一去回调就不知道跑到哪去,初步怀疑可能定时器开太多了。。

所以,请教一下,RTT中的定时器有数量限制吗? 如果有,在哪里定义?

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2011-9-23 14:59:54 | 显示全部楼层
没有数量限制,都是挂链表的。你用的哪个版本?建议用0.4.0,这个分支对于定位问题会更容易。

出0入0汤圆

 楼主| 发表于 2011-9-23 15:11:38 | 显示全部楼层
多谢老大的回复,,刚才也仔细看了一下RTT教程,说软定时器是没有数量限制的。但是我看到定时器的代码中,有一个链表,链表中又有一个事件定义,而这个事件应该是有限制的(还没详细看代码,个人理解),那是不是意味着我的整个系统中所定义的事件就有一个限制了。
    比如信号量,互斥量,邮箱、消息、线程等等,都应该算是一个事件,如果这样的话,在一个固定(或限定)的事件里,我就不能多定义个中的事件??
    我现在使用的版本就是4.0,因为外括了内存,定时器时已经用定了十多二十了个,我下断点时,定时器能够进行函数的回调,但是一进入回调,整个RTT就陷入了死循环。

出0入0汤圆

发表于 2011-9-23 15:29:05 | 显示全部楼层
定时器里面做了什么? 定时器里面的程序应该按ISR的要求写.
可以把定时器回调置空测试一下:
void time_out(void)
{
//
//
}

>>整个RTT就陷入了死循环。
在哪里循环? 还是因为应用程序有死循环回不去了? 或是进入了异常?

出0入0汤圆

发表于 2011-9-23 15:48:36 | 显示全部楼层
如果是0.4.0版本,把RT_DEBUG选项打开。

定时器,不过是软、“硬”都没有数量限制。“硬”定时器是在ISR环境中调用的,所以一定要小心再小心,这块也不能去下断点。

出0入0汤圆

 楼主| 发表于 2011-9-23 16:08:08 | 显示全部楼层
刚刚试过,将定时器的回调置空了。。程序正常能运行;

有可能是我回调里的函数出了问题,因为我启动定时器前,调用了一个函数,而这个函数需要获取一个互斥量;函数调用完后,就会释放这个互斥量;再启动定时器;定时器回调时,又会调用这个函数,进行互斥量的获取与释放;然后RTT就陷入不停的调度中。一个假 死的循环

我的程序大致是这样的:

void timer_callback(void){
    fun2();//其它函数的调用;
    functioncall();//包含互斥量函数的调用。当程序跑到这里时,整个RTT就会陷入不停的调度;
}

void fun1(void){
    fun3();//其它函数的调用
    functioncall1();//这个函数包含了获取与释放互斥量 1,调用完,即释放互斥量
   
    rt_timer_init(....,timer_callback,...);
    rt_timer_start();


初步估计有可能是我的互斥量获取不到,有可能导致假死,但是,我的函数调用完后,就释放了该互斥量;搞不明白,,我能够确定当进行回调的时候,互斥量肯定是空闲的。就算是不空闲的,也不应该等1、2分钟,这个互斥量还释放不出来。。

出0入0汤圆

 楼主| 发表于 2011-9-23 16:23:03 | 显示全部楼层
回复【4楼】ffxz  
如果是0.4.0版本,把rt_debug选项打开。
定时器,不过是软、“硬”都没有数量限制。“硬”定时器是在isr环境中调用的,所以一定要小心再小心,这块也不能去下断点。
-----------------------------------------------------------------------

当硬件的定时器中的ISR 是肯定要小心再小心;不过 》“硬”都没有数量限制。这个说法就不是很同意了。我觉得,硬件资源就这多,不可能无限制的给你使用硬件的定时器,只不过我们在使用的定时器中,通常都是利用所需要定时事件的最小值,进行变量的叠加而已,当变量叠加到特定的时间,就进入相应的函数处理,给人的感觉就好像有多个定时器一样,但实际上的物理定时器有限制的,这就要求我们在程序设计时,要合理的利用定时器了,至于如何合理,就不是一时半会能说明白的啦。。呵呵。。说了一堆废话,,大家别喷,。。

出0入0汤圆

发表于 2011-9-23 16:33:18 | 显示全部楼层
>>初步估计有可能是我的互斥量获取不到,有可能导致假死
http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=5019952
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-16 05:54

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表