Подключим заголовочный файл ядра в котором у нас определены функции работы с прерываниями и системой управления программный сбросом:
#include "core_cm4.h"
Также в обработчик прерывания функцию вызова программного сброса:
/* exti0 irq handler */
void exti0_irq_handler(void) {
if (EXTI->PR | EXTI_PR_PR0) {
NVIC_SystemReset();
/* clear pending irq */
EXTI->PR |= EXTI_PR_PR0;
/* disable exti0 interrupt */
EXTI->IMR &= ~EXTI_IMR_MR0;
}
}
Ну и в таблицу векторов внесем ссылку на обработчик:
0, /*!%5 RCC */
exti0_irq_handler, /*!%6 EXTI Line0 */
0, /*!%7 EXTI Line1 */