aboutsummaryrefslogtreecommitdiff
path: root/examples/stm32/f1/stm32-h103/usb_iap/usbiap.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/stm32/f1/stm32-h103/usb_iap/usbiap.c')
-rw-r--r--examples/stm32/f1/stm32-h103/usb_iap/usbiap.c16
1 files changed, 12 insertions, 4 deletions
diff --git a/examples/stm32/f1/stm32-h103/usb_iap/usbiap.c b/examples/stm32/f1/stm32-h103/usb_iap/usbiap.c
index 4db224c..fb3bdb9 100644
--- a/examples/stm32/f1/stm32-h103/usb_iap/usbiap.c
+++ b/examples/stm32/f1/stm32-h103/usb_iap/usbiap.c
@@ -143,16 +143,24 @@ static void usbdfu_getstatus_complete(usbd_device *usbd_dev, struct usb_setup_da
if (prog.blocknum == 0) {
switch (prog.buf[0]) {
case CMD_ERASE:
- flash_erase_page(*(u32 *)(prog.buf + 1));
+ {
+ u32 *dat = (u32 *)(prog.buf + 1);
+ flash_erase_page(*dat);
+ }
case CMD_SETADDR:
- prog.addr = *(u32 *)(prog.buf + 1);
+ {
+ u32 *dat = (u32 *)(prog.buf + 1);
+ prog.addr = *dat;
+ }
}
} else {
u32 baseaddr = prog.addr + ((prog.blocknum - 2) *
dfu_function.wTransferSize);
- for (i = 0; i < prog.len; i += 2)
+ for (i = 0; i < prog.len; i += 2) {
+ u16 *dat = (u16 *)(prog.buf + i);
flash_program_half_word(baseaddr + i,
- *(u16 *)(prog.buf + i));
+ *dat);
+ }
}
flash_lock();