cancel
Showing results for 
Search instead for 
Did you mean: 

Backup sram. Does the RTC have to also running

brett23
Associate II
Posted on April 04, 2015 at 05:07

Hi 

I want to save a Flag during a reboot on STM32F429I

At Main()

I have 

 uint32_t bt;

HAL_Init();

 /* Configure the system clock to 180 Mhz */

   SystemClock_Config();

    __PWR_CLK_ENABLE();

   HAL_PWR_EnableBkUpAccess();  

   (*(__IO uint32_t *) (BKPSRAM_BASE + 4)) =  0xCAFEFEED;

//read it back

    bt = (*(__IO uint32_t *) (BKPSRAM_BASE + 4)) ;

But  bt reads back 0x00    

Do I have to also setup RTC in order to use the  Backup Sram

My clock config below

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 = 360;

  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;

  RCC_OscInitStruct.PLL.PLLQ = 7;

  HAL_RCC_OscConfig(&RCC_OscInitStruct);

  /* Activate the Over-Drive mode */

  HAL_PWREx_ActivateOverDrive();

    

  /* 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;  

  HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_5);

}

Thanks
1 REPLY 1
brett23
Associate II
Posted on April 04, 2015 at 18:35

FIXED

had to also enable BKPSRAM_CLK

  __PWR_CLK_ENABLE();

  __BKPSRAM_CLK_ENABLE();

  HAL_PWR_EnableBkUpAccess();

(*(__IO uint32_t *) (BKPSRAM_BASE + 4)) =  0xCAFEFEED;  // write

Thanks