Skip to content

Commit 8ea34bf

Browse files
authored
Merge pull request #3850 from SimpleInit/master
修复"response+1"导致STM32 HAL库SPI内存非对齐访问的hard fault
2 parents 6ebab25 + 4a65441 commit 8ea34bf

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

components/drivers/spi/spi_msd.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -233,6 +233,17 @@ static rt_err_t _send_cmd(
233233
}
234234
else if (type == response_r2)
235235
{
236+
#if defined(__CORTEX_M) && __CORTEX_M == 0
237+
/* initial message */
238+
message.send_buf = RT_NULL;
239+
message.recv_buf = recv_buffer;
240+
message.length = 1;
241+
message.cs_take = message.cs_release = 0;
242+
243+
/* transfer message */
244+
device->bus->ops->xfer(device, &message);
245+
response[1] = recv_buffer[0];
246+
#else
236247
/* initial message */
237248
message.send_buf = RT_NULL;
238249
message.recv_buf = response + 1;
@@ -241,9 +252,24 @@ static rt_err_t _send_cmd(
241252

242253
/* transfer message */
243254
device->bus->ops->xfer(device, &message);
255+
#endif
244256
}
245257
else if ((type == response_r3) || (type == response_r7))
246258
{
259+
#if defined(__CORTEX_M) && __CORTEX_M == 0
260+
/* initial message */
261+
message.send_buf = RT_NULL;
262+
message.recv_buf = recv_buffer;
263+
message.length = 4;
264+
message.cs_take = message.cs_release = 0;
265+
266+
/* transfer message */
267+
device->bus->ops->xfer(device, &message);
268+
response[1] = recv_buffer[0];
269+
response[2] = recv_buffer[1];
270+
response[3] = recv_buffer[2];
271+
response[4] = recv_buffer[3];
272+
#else
247273
/* initial message */
248274
message.send_buf = RT_NULL;
249275
message.recv_buf = response + 1;
@@ -252,6 +278,7 @@ static rt_err_t _send_cmd(
252278

253279
/* transfer message */
254280
device->bus->ops->xfer(device, &message);
281+
#endif
255282
}
256283
else
257284
{

0 commit comments

Comments
 (0)