580BM80 (24.10.2011 17:36, просмотров: 1108)
Нужно знать адрес срабатывания вочдога в lpc1768. Для МДК сделал так:
//--------------------------------
void WDT_IRQHandler(void) __irq
{
// NVIC_DisableIRQ(WDT_IRQn);
SaveToRtcMem(GetBreakAdr());
ResMySelf();
}
//--------------------------------
__asm unsigned GetBreakAdr(void)
{
ldr r0, [sp,#32]
bx lr
}
//--------------------------------
Работает, но вызывает сомнение надёжность кода. Смещение в 32 байта от указателя стека нашёл ковыряясь в памяти. Предполагаю, что оно может случиться иным при разных вариантах оптимизации или на разных версиях компилятора. Как сделать правильно?