#if 1
#include "mbed.h"
#include "rtos.h"
DigitalOut led1(LED1),led2(LED2);
const uint32_t MAGIC_WORD = 0xE25A2EA5;
uint8_t stack_area[2048] __attribute((section("AHBSRAM0"),aligned));
int count = 0;
void led2_thread(void const *argument) {
while(true) {
Thread::wait(2000);
led2 != led2;
printf("%d\n", count++);
}
}
int main() {
for(int i = 0; i < sizeof(stack_area); i += 4) {
memcpy(stack_area+i, &MAGIC_WORD, 4);
}
printf("stack_area: %p size: %d\n", stack_area, sizeof(stack_area));
Thread thread(led2_thread, NULL, osPriorityNormal, sizeof(stack_area), (uint8_t*)stack_area);
for(int i = 0; i < 20; i++) {
uint32_t* p = (uint32_t*)stack_area;
while(*p == MAGIC_WORD) {
p++;
}
printf("stack: %p\n", p);
led1 = !led1;
Thread::wait(500);
}
thread.terminate();
exit(1);
}
#endif