Exception handling
AN4989
60/118
AN4989 Rev 3
Figure 39. Keil
®
Access to Show Caller Code in Contextual menu
6.3 Trapping
div/0
exception
Most often, code execution causing a division by zero are difficult to investigate:
•
Nothing is neither triggered nor trapped.
•
Erroneous returned value generates an unexpected and unpredictable behavior that is
very difficult to analyze.
This chapter gives several tips in order to properly trap div/0 exceptions.
6.3.1 Cortex
®
-M0/M0+ case
For targets that do not support hardware division instructions (SDIV/UDIV), integer division-
by-zero errors can be trapped and identified by means of the appropriate C library helper
functions:
__aeabi_idiv0()
When integer division by zero is detected, a branch to
__aeabi_idiv0()
is made. A
breakpoint placed on __aeabi_idiv0() allow to trap the division by zero.
To ease the breakpoint application, override the default function:
void __aeabi_idiv0()
{
#ifdef DEBUG
__BKPT(0);
#endif
}
This way, and depending on IDE, the call stack or registers can be examined and the
offending line in the source code can be rapidly found.
To go further refer to section 7.7 of
Arm
®
Compiler Software Development Guide
.
Содержание STM32 Series
Страница 46: ...Connecting to the board AN4989 46 118 AN4989 Rev 3 Figure 30 Keil hotplug step2 ...
Страница 91: ...AN4989 Rev 3 91 118 AN4989 Debug through hardware exploration 117 Figure 69 STM32F4 F7 dual MCO capabilities ...
Страница 103: ...AN4989 Rev 3 103 118 AN4989 Managing DBGMCU registers 117 Figure 78 Generator Options debug MCU in STM32CubeIDE ...