По-моему IAR сам вычисляет максимальный размер стека IAR 4.20
->Sub-tree of type: Interrupt function tree that does not make
: indirect calls
CSTACK RSTACK
| Stack used (prev) : 00000026 0000000A
02 Int_timer0_comp::Execute(Timers *)
| Stack used (prev) : 00000026 0000000A
| + function block : 00000004 00000002
02 Int_timer0_comp::Execute(Timers *)
| Stack used (prev) : 00000026 0000000A
| + function block : 00000004 00000002
| Already listed
01 Int_timer0_comp::timer0_handler()
| Stack used (prev) : 0000002A 0000000C
| + function block : 00000011 00000002
<-Sub-tree of type: Interrupt function tree that does not make
: indirect calls
| Stack used : 0000003B 0000000E
Считается, что до этого прерывания стек использован на 0х26 (это еще 2 прерывания) - общее использование: 0х3В.
Дальше идут расчеты для функций и начинаются они с 0х3В:
->Sub-tree of type: Indirectly called function tree that does not make
: indirect calls (Is not an interrupt and is not flagged
: as not overlayable)
CSTACK RSTACK
| Stack used (prev) : 0000003B 0000000E
01 Reducers::EndStart()
| Stack used (prev) : 0000003B 0000000E
| + function block : 00000000 00000002
<-Sub-tree of type: Indirectly called function tree that does not make
: indirect calls (Is not an interrupt and is not flagged
: as not overlayable)
| Stack used : 0000003B 00000010