Hi everyone,
I want to turn on a LED on my STM32F4-discovery board
Here is the code :
int main() {
// Enable the GPIO Clock
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
// GPIO Configuration
GPIO_InitTypeDef GPIO_InitStruct;
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_14; // Led 6 Blue selected
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT; // Mod out !
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; // 50 MHZ clock frequency
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; // Push pull mod
GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; // Pull up
GPIO_Init(GPIOD, &GPIO_InitStruct);
// Turn on the LED
GPIO_SetBits(GPIOD, GPIO_Pin_14);
return 0; }
I'm using uvision 5.13.0.0
It compiles and flash succesfully but nothing happen after. I don't know what is wrong with this. I also tried with this :
STM_EVAL_LEDInit(LED6); STM_EVAL_LEDOn(LED6);
but there is no worked.
Can you help me ? Many thanks :)
When you call __main, lots of things will happen before you reach your normal main() function.
You might get a stack overflow.
Or maybe your memory layout doesn't match your chip, so the startup code tries to initialize non-existing memory.
Maybe your project specifies external memory, and you haven't initialized the memory controller that interfaces with the external memory.
Or it could be that the stack pointer is initialized assuming that the stack resides in memory that is only available once __main is executed. With the execution of __main being a call, that execution occurs, only to fail when it attempts to return to the caller.