amiro-os / components / Debug.c @ 58fe0e0b
History | View | Annotate | Download (1.44 KB)
1 | 58fe0e0b | Thomas Schöpping | #include <ch.h> |
---|---|---|---|
2 | #include <hal.h> |
||
3 | |||
4 | /*
|
||
5 | * System_halt
|
||
6 | * error code
|
||
7 | *
|
||
8 | * - SV#1, misplaced @p chSysDisable().
|
||
9 | * - SV#2, misplaced @p chSysSuspend()
|
||
10 | * - SV#3, misplaced @p chSysEnable().
|
||
11 | * - SV#4, misplaced @p chSysLock().
|
||
12 | * - SV#5, misplaced @p chSysUnlock().
|
||
13 | * - SV#6, misplaced @p chSysLockFromIsr().
|
||
14 | * - SV#7, misplaced @p chSysUnlockFromIsr().
|
||
15 | * - SV#8, misplaced @p CH_IRQ_PROLOGUE().
|
||
16 | * - SV#9, misplaced @p CH_IRQ_EPILOGUE().
|
||
17 | * - SV#10, misplaced I-class function.
|
||
18 | * - SV#11, misplaced S-class function.
|
||
19 | */
|
||
20 | |||
21 | static inline void serialWaitForEmpty(void) { |
||
22 | while (!((SD1.usart->SR) & USART_SR_TC)) {
|
||
23 | ; |
||
24 | } |
||
25 | } |
||
26 | |||
27 | void haltErrorCode(void) { |
||
28 | #if CH_DBG_SYSTEM_STATE_CHECK
|
||
29 | char errorCode[26]="\nSystem halt! Error Code:\0"; |
||
30 | int i=0; |
||
31 | rccEnableUSART1(FALSE); |
||
32 | nvicEnableVector(USART1_IRQn,CORTEX_PRIORITY_MASK(STM32_SERIAL_USART1_PRIORITY)); |
||
33 | SD1.state = SD_READY; |
||
34 | |||
35 | SD1.usart->CR1 = 0;
|
||
36 | SD1.usart->CR2 = 0;
|
||
37 | SD1.usart->CR3 = 0;
|
||
38 | |||
39 | SD1.usart->CR1 |= USART_CR1_UE | USART_CR1_TE; |
||
40 | SD1.usart->CR2 |= USART_CR2_STOP; |
||
41 | SD1.usart->BRR = STM32_PCLK2 / 115200;
|
||
42 | |||
43 | while(errorCode[i]!='\0') { |
||
44 | SD1.usart->DR = errorCode[i]; |
||
45 | serialWaitForEmpty(); |
||
46 | i++; |
||
47 | } |
||
48 | i=0;
|
||
49 | while(dbg_panic_msg[i]!='\0') { |
||
50 | SD1.usart->DR = dbg_panic_msg[i]; |
||
51 | serialWaitForEmpty(); |
||
52 | i++; |
||
53 | } |
||
54 | |||
55 | SD1.usart->DR = '\n';
|
||
56 | serialWaitForEmpty(); |
||
57 | #endif
|
||
58 | } |