cancel
Showing results for 
Search instead for 
Did you mean: 

STM32F4 Discovery hangs when toggling GPIO after a time

16841
Associate
Posted on December 29, 2014 at 22:34

Hi,

I'm new to STM32F4 MCUs, but I have a problem with my program. It should blink a LED, but all what it does, it just turn OFF the LED for a short time and turn it ON, if I change the value in for loop (make the delay shorter), I can see some fast pulses on the oscilloscope for a while, but then it sets LED OFF and hangs. When I'm trying to debug it and go step by step, everything works. Please help me with it.

Here is my code:

<code>

&sharpinclude ''stm32f4xx.h''

&sharpinclude ''stm32f4xx_hal.h''

/**

  * @brief  System Clock Configuration

  *         The system Clock is configured as follow :

  *            System Clock source            = PLL (HSE)

  *            SYSCLK(Hz)                     = 168000000

  *            HCLK(Hz)                       = 168000000

  *            AHB Prescaler                  = 1

  *            APB1 Prescaler                 = 4

  *            APB2 Prescaler                 = 2

  *            HSE Frequency(Hz)              = 8000000

  *            PLL_M                          = 8

  *            PLL_N                          = 336

  *            PLL_P                          = 2

  *            PLL_Q                          = 7

  *            VDD(V)                         = 3.3

  *            Main regulator output voltage  = Scale1 mode

  *            Flash Latency(WS)              = 5

  * @param  None

  * @retval None

  */

static void SystemClock_Config(void)

{

  RCC_ClkInitTypeDef RCC_ClkInitStruct;

  RCC_OscInitTypeDef RCC_OscInitStruct;

  /* Enable Power Control clock */

  __PWR_CLK_ENABLE();

 

  /* The voltage scaling allows optimizing the power consumption when the device is

     clocked below the maximum system frequency, to update the voltage scaling value

     regarding system frequency refer to product datasheet.  */

  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1);

 

  /* Enable HSE Oscillator and activate PLL with HSE as source */

  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;

  RCC_OscInitStruct.HSEState = RCC_HSE_ON;

  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;

  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;

  RCC_OscInitStruct.PLL.PLLM = 8;

  RCC_OscInitStruct.PLL.PLLN = 336;

  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;

  RCC_OscInitStruct.PLL.PLLQ = 7;

  if(HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)

  {

    while(1);

  }

  /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2

     clocks dividers */

  RCC_ClkInitStruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);

  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;

  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;

  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;  

  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV2;  

  if(HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5) != HAL_OK)

  {

    while(1);

  }

}

int main(){

 int i;

 GPIO_InitTypeDef GPIO_InitStruct;

 HAL_Init();

 SystemClock_Config();

 __GPIOD_CLK_ENABLE();

 __GPIOA_CLK_ENABLE();

  GPIO_InitStruct.Pin   = GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15;

  GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;

  GPIO_InitStruct.Pull  = GPIO_PULLDOWN;

  GPIO_InitStruct.Speed = GPIO_SPEED_HIGH;

  HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);

 

while(1){

   

     for(i=0;i<1500;i++);

   HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_RESET);

   //GPIOD->BSRRL=GPIO_PIN_12;

     for(i=0;i<1500;i++);

   HAL_GPIO_WritePin(GPIOD, GPIO_PIN_12, GPIO_PIN_SET);

   //GPIOD->BSRRH=GPIO_PIN_12;

 }

}

</code>

Thanks, Jirka

#gpio #stm32f4-discovery
3 REPLIES 3
16841
Associate
Posted on December 30, 2014 at 16:47

I found that when I don't call HAL_Init() and SystemClock_Config() it works fine. Can someone help me to set STM32F4 discovery to its max clock frequency, please?

Thanks, Jiri

Posted on January 21, 2017 at 00:08

Somehow I don't expect that this is still an issue, considering it has been 2 years.

If it is, my condolences, and give CubeMX a try. It will give you a setup that just works.

Posted on January 21, 2017 at 00:11

Sorry, I got suckered by the forum software calling this 'Recommended Content'. Whaaaaaat? 

If anyone else has this issue, take a look at my posts at embedded.fm/blog . Look for a series called Discovery.

(plus, by replying to this RNG generated Recommended Content, I get points. Woot)