STM32运行RTX程序跑飞

使用STM32F407,在Keil环境下运行RTX,定义函数传入的参数是整个结构体的话,程序会跑飞,但是编译不会报错,并且调试的时候并不会运行到那一个传入结构体的函数,即使不运行到他,但是运行完一轮这个线程就会跑飞,屏蔽了就正常,请教一下这个是什么原因?有什么办法以后避免吗

程序示例:

typedef strucu{
    uint8_t data[1024];
    uint8_t cnt;
}test_s;

test_s test;

__task void Test_Handler(void)
{
   uint8_t a=0;

  while(1)
  {
     //调试的时候并不会运行到这里面的程序
     if(a>2)
    {
      test_fun1(test);  //会跑飞,并且没有什么提示警告
      test_fun2(&test);  //不会跑飞
    }
    os_dly_wait(10);
  }
  
}

void test_fun1(test_s  s)
{
    //没有内容,会跑飞
}

void test_fun2(test_s  *s)
{
    //没有内容,不会跑飞
}

栈溢出,参数也是在栈里的,你那个结构体太大了1025字节,对栈来说是个庞然大物,简单的解决办法就是改一下参数,改为传结构体指针,你自己也验证了的。