aboutsummaryrefslogtreecommitdiffstats
path: root/src/glutt-o-logique
diff options
context:
space:
mode:
Diffstat (limited to 'src/glutt-o-logique')
-rw-r--r--src/glutt-o-logique/common.c40
1 files changed, 38 insertions, 2 deletions
diff --git a/src/glutt-o-logique/common.c b/src/glutt-o-logique/common.c
index ba6bba8..d089091 100644
--- a/src/glutt-o-logique/common.c
+++ b/src/glutt-o-logique/common.c
@@ -23,9 +23,45 @@
*/
#include <stm32f4xx.h>
+#include "GPIO/usart.h"
-#include "../common/src/Core/common.c"
+void hard_fault_handler_c(uint32_t *hardfault_args)
+{
+ uint32_t stacked_r0;
+ uint32_t stacked_r1;
+ uint32_t stacked_r2;
+ uint32_t stacked_r3;
+ uint32_t stacked_r12;
+ uint32_t stacked_lr;
+ uint32_t stacked_pc;
+ uint32_t stacked_psr;
-void hard_fault_handler_extra() {
+ stacked_r0 = hardfault_args[0];
+ stacked_r1 = hardfault_args[1];
+ stacked_r2 = hardfault_args[2];
+ stacked_r3 = hardfault_args[3];
+
+ stacked_r12 = hardfault_args[4];
+ stacked_lr = hardfault_args[5];
+ stacked_pc = hardfault_args[6];
+ stacked_psr = hardfault_args[7];
+
+ usart_debug_puts("\n\n[Hard fault handler - all numbers in hex]\n");
+ usart_debug("R0 = %x\n", stacked_r0);
+ usart_debug("R1 = %x\n", stacked_r1);
+ usart_debug("R2 = %x\n", stacked_r2);
+ usart_debug("R3 = %x\n", stacked_r3);
+ usart_debug("R12 = %x\n", stacked_r12);
+ usart_debug("LR [R14] = %x subroutine call return address\n", stacked_lr);
+ usart_debug("PC [R15] = %x program counter\n", stacked_pc);
+ usart_debug("PSR = %x\n", stacked_psr);
+ usart_debug("BFAR = %x\n", (*((volatile unsigned long *)(0xE000ED38))));
+ usart_debug("CFSR = %x\n", (*((volatile unsigned long *)(0xE000ED28))));
+ usart_debug("HFSR = %x\n", (*((volatile unsigned long *)(0xE000ED2C))));
+ usart_debug("DFSR = %x\n", (*((volatile unsigned long *)(0xE000ED30))));
+ usart_debug("AFSR = %x\n", (*((volatile unsigned long *)(0xE000ED3C))));
usart_debug("SCB_SHCSR = %x\n", SCB->SHCSR);
+
+ while (1);
}
+