过路人1024 发表于 2019-1-26 14:17

求教UCOSIII的一个问题

本帖最后由 过路人1024 于 2019-1-26 14:49 编辑

我UCOS中创建了两个任务,任务A,和任务B,任务B中满足特定条件会调用函数C。然后总是在第一次调用完任务C的时候系统就进入HardFault_Handler中断,最后发现是个for循环的问题。我在函数C中一开始进行了个for循环,循环15360次,本意是复制一个数组,把一个大小为15360的u8数组的值赋值给同样是15360大小的u8数组.
u8 array0;
u8 array1;
void functionC(void)

{
u32 i;
for(i=0;i<15360;i++)
{
    array0[ i ] = array1[ i ];
}

...........
}
代码大概就是这样,两个数组是全局变量。把这个for循环注释后,就一切正常。另外,把循环次数改为200或500几百次的话就不会,另外把array0 = array1改为array0 = array1 等固定值也不会发生了。。。好奇怪。。完全没头绪。。请问各位大神这哪里出了问题吗?

ayb_ice 发表于 2019-2-2 10:53


这个会执行较长时间,可能导致任务被强制切换出去,,应该是其它任务出问题了

hzyumail 发表于 2019-2-9 10:47

我感觉是内存不够用,你是在什么硬件上跑的。

john_lee 发表于 2019-2-10 15:53

检查一下栈是否越界了。

千岁寒 发表于 2019-2-14 09:36

john_lee 发表于 2019-2-10 15:53
检查一下栈是否越界了。

附议。可能是栈溢出!

liuxiang5119 发表于 2019-2-19 16:42

全局两个15360大的数组没做初始化是不是不会分配固定的内存你给加个初始化试试   进去HardFault_Handler一般是数据指针越界
页: [1]
查看完整版本: 求教UCOSIII的一个问题