|
楼主 |
发表于 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分钟,这个互斥量还释放不出来。。 |
|