Hard_fault 在 STM32 上第二次写入字节数组 - 为什么?
Hard_fault on STM32 on second write to byte array - why?
我在这里遗漏了一些明显的东西。尝试将工作代码放入函数中时,我在 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;
但是当我尝试将它放入函数中时(在另一个文件中,如下所示)我在第二次写入帧缓冲区时遇到了 HardFault。
必须对什么是错误的进行合乎逻辑的解释......
这个不行:
DrawPoint (ii,jj,framebuffer[0], 255, 255,255);
然后是函数的定义
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;
}
提前致谢,
问候,
R.
调用 DrawPoint()
时,请使用 framebuffer
或 &framebuffer[0]
而不是 framebuffer[0]
。该函数需要一个指针,而不是一个值。
此外,在 DrawPoint()
的定义中,您没有使用 temp
,这会加快您的代码速度。
我在这里遗漏了一些明显的东西。尝试将工作代码放入函数中时,我在 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;
但是当我尝试将它放入函数中时(在另一个文件中,如下所示)我在第二次写入帧缓冲区时遇到了 HardFault。 必须对什么是错误的进行合乎逻辑的解释...... 这个不行:
DrawPoint (ii,jj,framebuffer[0], 255, 255,255);
然后是函数的定义
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;
}
提前致谢, 问候, R.
调用 DrawPoint()
时,请使用 framebuffer
或 &framebuffer[0]
而不是 framebuffer[0]
。该函数需要一个指针,而不是一个值。
此外,在 DrawPoint()
的定义中,您没有使用 temp
,这会加快您的代码速度。