Понадобилось мне в приложении иметь возможность в определенной ситуации перезагрузить контроллер(lpc2132). Решил осуществлять это при помощи watchdog'a. Добавил следующую функцию:
Код
__disable_interrupt();
WDTC = (u32)(F_PCLK/1000); // установка задержки перед сбросом (размер не важен)
WDMOD_bit.WDRESET = 1; WDMOD_bit.WDEN = 1; // разрешен ресет и прерывание
WDFEED = 0xAA; WDFEED = 0x55; // запуск
__enable_interrupt();
for(;;);
WDTC = (u32)(F_PCLK/1000); // установка задержки перед сбросом (размер не важен)
WDMOD_bit.WDRESET = 1; WDMOD_bit.WDEN = 1; // разрешен ресет и прерывание
WDFEED = 0xAA; WDFEED = 0x55; // запуск
__enable_interrupt();
for(;;);
Поставил просто в мэйне в пустой рабочий цикл, вся инициализация проведена нормально, взята из рабочего приложения, после загрузки этого приложения контроллер нельзя ни стереть, ни перешить (использую JLink). То идентификатор ядра не определяется, то не в JTAG режиме контроллер, то клоков нет, то еще какие то сообщения.
Подскажите, пожалуйста, что такого криминального я написал???