写了一个线程,发现会卡死,卡的地方在两个for循环之间
for (i = 0;i < 15;i++)
{
for (j = 0;j < 60;j++)
{
data_float[i][j] = 10.0 * data[i][j] / (w[i][j] * 65536.0 * 22.0);
}
}
其中data_floati和datai都是全局变量。调试会进入cmd.c文件在list get next 函数中卡死。
串口报的错误如下
msh />[D/drv.sdram] sdram init success, mapped at 0xC0000000, size is 33554432 bytes, data width is 16
psr: 0x20000000
r00: 0x200225cc
r01: 0x080123ca
r02: 0x00000000
r03: 0x0000c000
r04: 0x00000000
r05: 0x00000000
r06: 0x00000000
r07: 0x20021c28
r08: 0x00000000
r09: 0x00000000
r10: 0x00000000
r11: 0x00000000
r12: 0x00000000
r11: 0x00000000
r12: 0x00000000
lr: 0x08003745
pc: 0x0000c000
hard fault on handler
bus fault:
SCB_CFSR_BFSR:0x01 IBUSERR
FATAL ERROR: Error reading from serial device
在将任务栈改很大后不再报错程序能够执行但是执行完这个线程后别的线程就不会执行了。想问一下出现这个报错是什么问题,是任务栈太小的问题吗?因为我设置的是全局变量我感觉和任务栈没什么关系。
(使用的板子是 stm32f767,换成art-pi(stm32h750之后未出现此问题))
你好现在发现奔溃位置固定了就是在这两个for循环之间
@tasd 肯定不在这里,你的代码里还有使用不当的地方,还有隐患。
排除法,删代码。这种问题及早解决。至于怎么排查,前两天有了类似的问题,翻翻我的回答。
好的我去看看
大佬回答的问题太多了没找到,能发个网址吗谢谢
@tasd https://club.rt-thread.org/ask/question/432699.html