求助IAR 5.50 RT_THREAD 动态创建线程问题
我按照手册例程创建了两个动态线程。但是在运行过程中finsh会提示(priority < RT_THREAD_PRIORITY_MAX) assert failed at _rt_thread_init:65仿真后发现,在IAR仿真时出现堆栈溢出。第一个线程创建成功,第二个线程在创建时因为堆栈溢出后数据错误,所以优先级参数发生错误。但是同样的程序
在keil下面编译下载后正常运行。
请问,各位同仁是否有碰到过此问题,如果有知道答案的烦请告知。谢谢!
static rt_thread_t tid1 = RT_NULL;
static rt_thread_t tid2 = RT_NULL;
//线程创建例程
static void thread1_entry(void *parameter)
{
rt_uint32_t count = 0;
while(1)
{
rt_kprintf("thread1: count: %d\n",count++);
rt_thread_yield();
}
}
static void thread2_entry(void *parameter)
{
rt_uint32_t count = 0;
while(1)
{
rt_kprintf("thread2: count = %d\n",count ++);
rt_thread_yield();
}
}
int thread_dynamic_simple_init()
{
tid1 = rt_thread_create("t1",
thread1_entry,
RT_NULL,
512,
10,
5);
if(tid1 != RT_NULL)
rt_thread_startup(tid1);
tid2 = rt_thread_create("t2",
thread2_entry,
RT_NULL,
512,
10,
5);
if(tid2 != RT_NULL)
rt_thread_startup(tid2);
return 0;
}
int rt_application_init()
{
thread_dynamic_simple_init();
return 0;
}
点击此处下载 ourdev_700180T3PR5V.rar(文件大小:2.51M) (原文件名:project_led.rar) 先把栈加大些,如果OK再查具体用了多少栈。 栈我从512加到了2048 同样存在这个问题 fish显示栈的话用了90%
但是,这两个小任务实际中占的栈很小。 另外keil下编译后运行完全没有问题 换个版本的IAR试下,这两个线程占用的栈应该用不了512字节。
页:
[1]