Hi,
It's about the STM32F103. Due to my previous post my application first fills all (at that moment) free stack memory locations with a value of 0x55555555. This all works fine so does the application. I can monitor the stack behaviour in the Memory1 debug window.
But what I see is that at a certain moment data is placed in the stack at some location leaving some gaps of 2 to 10 times (32-bits) dwords containing 0x55555555.
The stack grows downwards in memory addresses. For example I see: (highest memory on top)
Address Data 0xnnnnnnnn-0 data start of stack 0xnnnnnnnn-1 data 0xnnnnnnnn-2 data 0xnnnnnnnn-3 0x55555555 0xnnnnnnnn-4 0x55555555 0xnnnnnnnn-5 data 0xnnnnnnnn-6 data 0xnnnnnnnn-7 0x55555555 0xnnnnnnnn-8 data 0xnnnnnnnn-9 data 0xnnnnnnnn-10 0x55555555 0xnnnnnnnn-12 0x55555555 until 0xnnnnnnnn-nn 0x55555555 end of stack
I do use many interrupt handlers. Is there an explanation for this or is my application buggy?
Thanks
Henk
If a (non-static) structure is declared in some first function A and data is put into this structure, then calling a second function B with the address of this structure as an argument, then I would suspect that the compiler needs to reserve somewhere some memory to store this structure content to be available for function B.
That suspicion would be incorrect. The only storage the compiler needs for that operation is the storage the data object already occupies. That's one of the advantages of passing the thing by address. And BTW, that mechanism works the same way for static and non-static objects.
What all this tells me is that you may have some more learning about the basics of C programming to do yet, before you worry about intricacies like the detailed contents of the stack at some particular moment of program execution.