Hi @GXY,
The WDOG supports an 8-bit refresh sequence, but it is highly timing-sensitive. Even if standard C code generates STRB instructions, the sequence can fail due to additional stack accesses or address reloads inserted between the byte writes. Using a compact GCC inline assembly block helps ensure the 8-bit refresh executes reliably.
static inline void WDOG_Refresh8_AsmInline(void)
{
__asm volatile(
// "mrs r2, PRIMASK \n"
// "cpsid i \n"
// "dsb \n"
"ldr r0, =0x40052004 \n"
"movs r1, #0xA6 \n"
"strb r1, [r0, #1] \n"
"movs r1, #0x02 \n"
"strb r1, [r0, #0] \n"
"movs r1, #0xB4 \n"
"strb r1, [r0, #1] \n"
"movs r1, #0x80 \n"
"strb r1, [r0, #0] \n"
// "dsb \n"
// "isb \n"
// "msr PRIMASK, r2 \n"
);
}
Regards,
Daniel