We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello Look at this code if i replace 1024 in array with more than 2048 compiler work fine but micro hang !! program work fine with 1024 or less. i use at91sam7x256 this have 64KB Ram. if i replace char with int then more than 256 have the same problem.
#include <at91sam7x256.h>
int main (void){
char buf[1024]="Hello World";
*AT91C_PMC_PCER = (1<<AT91C_ID_PIOB); *AT91C_PIOB_PER = (1 << 0) | (1 << 1); *AT91C_PIOB_OER = (1 << 0) | (1 << 1); *AT91C_PIOB_SODR = (1 << 1); *AT91C_PIOB_CODR = (1 << 0);
return 0;
}
hello to every one you right thats my bug not keil i found where can i change stack and after that my program work fine. excuse me for this mistake but can you told me how much stack that i can define without problem? if i increase this stack which problems occurs?
Thank you
You can consume almost all your memory as stack. But for embedded, you normall try to keep down the stack needs.
The stack is for varibles you only need a limited time. Local variables that can be thrown away when a function ends. Variables that you need for the full lifetime of the application, you would make global, i.e. place outside of your functions.
What happens when the program ends? Simple - your program should not end. You should create an infinite loop inside main(). The only time you would want a program to end, is if you want to force a reboot (often done by requesting a watchdog reset), or if the device is running on batteries, in which case you often design your equipment so that the microcontroller can request the battery to be disconnected (which would require the user to press a button to reconnect the battery again)