[uCOS/RTOS]

求教UCOSIII的一个问题

[复制链接]
975|5
手机看帖
扫描二维码
随时随地手机跟帖
过路人1024|  楼主 | 2019-1-26 14:17 | 显示全部楼层 |阅读模式
本帖最后由 过路人1024 于 2019-1-26 14:49 编辑

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

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

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

相关帖子

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一般是数据指针越界

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

21

主题

39

帖子

0

粉丝