Files
VivaMyo-firmware-test/project/ble_peripheral/ble_app_vivaMayo/hardfault_handler.c
2026-04-08 16:59:20 +09:00

32 lines
1.0 KiB
C

/*******************************************************************************
* @file hardfault_handler.c
* @brief HardFault Handler for debugging system crashes
******************************************************************************/
#include <stdint.h>
#include "debug_print.h"
void HardFault_Handler(void)
{
volatile uint32_t *stack;
__asm volatile ("mrs %0, msp" : "=r" (stack));
DBG_PRINTF("\r\n!!! HARDFAULT !!!\r\n");
DBG_PRINTF("R0 = %08lX\r\n", stack[0]);
DBG_PRINTF("R1 = %08lX\r\n", stack[1]);
DBG_PRINTF("R2 = %08lX\r\n", stack[2]);
DBG_PRINTF("R3 = %08lX\r\n", stack[3]);
DBG_PRINTF("R12 = %08lX\r\n", stack[4]);
DBG_PRINTF("LR = %08lX\r\n", stack[5]);
DBG_PRINTF("PC = %08lX\r\n", stack[6]);
DBG_PRINTF("PSR = %08lX\r\n", stack[7]);
while (1) {
/* Blink LED to indicate fault */
for (volatile uint32_t i = 0; i < 500000; i++);
NRF_P0->OUTSET = (1 << 12);
for (volatile uint32_t i = 0; i < 500000; i++);
NRF_P0->OUTCLR = (1 << 12);
}
}