[英]Hard_fault on STM32 on second write to byte array - why?
I'm missing something obvious here.我在这里遗漏了一些明显的东西。 I get hardfault error on STM32 (CubeIDE) when trying to put working code in function... This one works:尝试将工作代码放入 function 时,我在 STM32 (CubeIDE) 上遇到硬故障错误...这个有效:
uint8_t framebuffer[SUBFBUF_XYMAX*SUBFBUF_XYMAX*BPP]; //24 bpp framebuffer
...
ii = rand() % SUBFBUF_XYMAX;
jj = rand() % SUBFBUF_XYMAX;
DrawPoint (ii,jj,framebuffer[0], 255, 255,255);
framebuffer[ii*BPP+jj*SUBFBUF_XYMAX*BPP] = 255;
framebuffer[ii*BPP+jj*SUBFBUF_XYMAX*BPP+1] = 255;
framebuffer[ii*BPP+jj*SUBFBUF_XYMAX*BPP+2] = 255;
but when I try to put this into function (in another file, shown below) I get HardFault on second write to framebuffer.但是当我尝试将它放入 function (在另一个文件中,如下所示)时,我在第二次写入帧缓冲区时得到了 HardFault。 There must be logical explanation on what is wrong... This one doesn't work:必须有什么是错的合乎逻辑的解释......这个不起作用:
DrawPoint (ii,jj,framebuffer[0], 255, 255,255);
and then function's definition然后是函数的定义
void DrawPoint(int x0, int y0, uint8_t framebuf[], uint8_t red, uint8_t green,uint8_t blue) {
int temp=x0*BPP+y0*SUBFBUF_XYMAX*BPP;
framebuf[x0*BPP+y0*SUBFBUF_XYMAX*BPP] = (uint8_t)blue;
framebuf[x0*BPP+y0*SUBFBUF_XYMAX*BPP+1] = (uint8_t)green;
framebuf[x0*BPP+y0*SUBFBUF_XYMAX*BPP+2] = (uint8_t)red;
}
Thanks in advance, regards, R.在此先感谢,问候,R。
When calling DrawPoint()
, use framebuffer
or &framebuffer[0]
instead of framebuffer[0]
.调用DrawPoint()
时,请使用framebuffer
或&framebuffer[0]
而不是framebuffer[0]
。 The function expects a pointer, not a value. function 需要一个指针,而不是一个值。
Also, inside the definition of DrawPoint()
you did not use temp
, which would speed up your code.此外,在DrawPoint()
的定义中,您没有使用temp
,这会加快您的代码速度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.