Exception Handling; Default Weak Handlers - STMicroelectronics STM32 Application Note

Microcontroller debug toolbox
Hide thumbs Also See for STM32:
Table of Contents

Advertisement

AN4989
6

Exception handling

It is usually helpful, or even mandatory in complex project, to properly trap and find root
cause of software exception like HardFault and NMI. This chapter intends to make the user
aware of a few techniques used to help investigating such issue.
In order to get deeper into the subject, the user can usefully refer to Joseh Yiu's work and
book collection The Definitive Guide to Arm-Cortex-M, and to Carmelo Noviello's recent on-
line guide Mastering STM32.
6.1

Default weak Handlers

By default Handlers are implemented as __weak functions which perform endless loops:
__vector_table
Nothing is trigged on debugger side and application looks hanged / stuck.
In that case, code break is needed and the PC must be at the address of the Handler.
Some IDEs provide the faulty calling code through Call stack window. (Keil
µVision, STM32CubeIDE).
If it is not the case, display registers and find the faulty code address in SP + 0x18
In STM32CubeIDE all weak default handlers point to the same DefaultHandler which can be
confusing.
A more efficient approach is to trap the exception by instrumenting Handlers.
DCD
sfe(CSTACK)
DCD
Reset_Handler
DCD
NMI_Handler
DCD
HardFault_Handler
DCD
0
DCD
0
DCD
0
DCD
0
DCD
0
DCD
0
DCD
0
DCD
SVC_Handler
DCD
0
DCD
0
DCD
PendSV_Handler
DCD
SysTick_Handler
AN4989 Rev 3
Exception handling
; Reset Handler
; NMI Handler
; Hard Fault Handler
; Reserved
; Reserved
; Reserved
; Reserved
; Reserved
; Reserved
; Reserved
; SVCall Handler
; Reserved
; Reserved
; PendSV Handler
; SysTick Handler
®
MDK-Arm
57/118
117

Hide quick links:

Advertisement

Table of Contents
loading
Need help?

Need help?

Do you have a question about the STM32 and is the answer not in the manual?

Table of Contents

Save PDF