/** * @brief This function configures the system to enter Standby mode with RTC * clocked by LSE or LSI and with Backup SRAM ON for current consumption * measurement purpose. * STANDBY Mode with RTC clocked by LSE/LSI and BKPSRAM * ==================================================== * - RTC Clocked by LSE or LSI * - Backup SRAM ON * - IWDG OFF * - Automatic Wakeup using RTC clocked by LSE/LSI (after ~20s) * @param None * @retval None */ void StandbyRTCBKPSRAMMode_Measure(void) { /* Configure RTC prescaler and RTC data registers as follow: - Hour Format = Format 24 - Asynch Prediv = Value according to source clock - Synch Prediv = Value according to source clock - OutPut = Output Disable - OutPutPolarity = High Polarity - OutPutType = Open Drain */ RTCHandle.Instance = RTC; RTCHandle.Init.HourFormat = RTC_HOURFORMAT_24; RTCHandle.Init.AsynchPrediv = RTC_ASYNCH_PREDIV; RTCHandle.Init.SynchPrediv = RTC_SYNCH_PREDIV; RTCHandle.Init.OutPut = RTC_OUTPUT_DISABLE; RTCHandle.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; RTCHandle.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN; if(HAL_RTC_Init(&RTCHandle) != HAL_OK) { /* Initialization Error */ Error_Handler(); } /*## Configure the Wake up timer ###########################################*/ /* RTC Wakeup Interrupt Generation: Wakeup Time Base = (RTC_WAKEUPCLOCK_RTCCLK_DIV /(LSE or LSI)) Wakeup Time = Wakeup Time Base * WakeUpCounter = (RTC_WAKEUPCLOCK_RTCCLK_DIV /(LSE or LSI)) * WakeUpCounter ==> WakeUpCounter = Wakeup Time / Wakeup Time Base To configure the wake up timer to 20s the WakeUpCounter is set to 0xA017: RTC_WAKEUPCLOCK_RTCCLK_DIV = RTCCLK_Div16 = 16 Wakeup Time Base = 16 /(~32.768KHz) = ~0,488 ms Wakeup Time = ~20s = 0,488ms * WakeUpCounter ==> WakeUpCounter = ~20s/0,488ms = 40983 = 0xA017 */ /* Disable Wake-up timer */ HAL_RTCEx_DeactivateWakeUpTimer(&RTCHandle); /*## Clear all related wakeup flags ########################################*/ /* Clear PWR wake up Flag */ __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); /* Clear RTC Wake Up timer Flag */ __HAL_RTC_WAKEUPTIMER_CLEAR_FLAG(&RTCHandle, RTC_FLAG_WUTF); /*## Setting the Wake up time ##############################################*/ HAL_RTCEx_SetWakeUpTimer_IT(&RTCHandle, 0xA017, RTC_WAKEUPCLOCK_RTCCLK_DIV16); /* Enable BKPRAM Clock */ __HAL_RCC_BKPSRAM_CLK_ENABLE(); /* Enable the Backup SRAM low power Regulator */ HAL_PWREx_EnableBkUpReg(); /*## Enter the Standby mode ################################################*/ /* Request to enter STANDBY mode */ HAL_PWR_EnterSTANDBYMode(); }
/** * @brief This function configures the system to enter Standby mode with RTC * clocked by LSE or LSI and with Backup SRAM ON for current consumption * measurement purpose. * STANDBY Mode with RTC clocked by LSE/LSI and BKPSRAM * ==================================================== * - RTC Clocked by LSE or LSI * - Backup SRAM ON * - IWDG OFF * - Automatic Wakeup using RTC clocked by LSE/LSI (after ~20s) * @param None * @retval None */ void StandbyRTCBKPSRAMMode_Measure(void) { // /*rtc_init */ // rtc_init(); // /*wake up timer*/ // rtc_wake_up_timer_config(0x5000); /* Enable BKPRAM Clock */ __HAL_RCC_BKPSRAM_CLK_ENABLE(); /* Enable the Backup SRAM low power Regulator */ HAL_PWREx_EnableBkUpReg(); /*## Enter Standby Mode ####################################################*/ /* Request to enter STANDBY mode */ HAL_PWR_EnterSTANDBYMode(); }
/** * @brief Initializes LEDs, SDRAM, touch screen, CRC and SRAM. * @param None * @retval None */ void k_BspInit(void) { /* Initialize the NOR */ // BSP_QSPI_Init(); // BSP_QSPI_MemoryMappedMode(); /* Initialize the SDRAM */ // BSP_SDRAM_Init(); /* Initialize the Touch screen */ BSP_TS_Init(420, 272); /* Enable CRC to Unlock GUI */ __HAL_RCC_CRC_CLK_ENABLE(); /* Enable Back up SRAM */ __HAL_RCC_BKPSRAM_CLK_ENABLE(); }
/** * @brief Initializes LEDs, SDRAM, touch screen, CRC and SRAM. * @param None * @retval None */ void k_BspInit(void) { BSP_IO_Init(); /* Initialize the NOR */ BSP_NOR_Init(); /* Initialize the SDRAM */ BSP_SDRAM_Init(); /* Initialize the Touch screen */ BSP_TS_Init(640, 480); /* Enable CRC to Unlock GUI */ __HAL_RCC_CRC_CLK_ENABLE(); /* Enable Back up SRAM */ __HAL_RCC_BKPSRAM_CLK_ENABLE(); }
/** * @brief Initializes LEDs, SDRAM, touch screen, CRC and SRAM. * @param None * @retval None */ void k_BspInit(void) { /* Configure LED1, LED2, LED3 and LED4 */ BSP_LED_Init(LED1); BSP_LED_Init(LED2); BSP_LED_Init(LED3); BSP_LED_Init(LED4); /* Initialize the SDRAM */ BSP_SDRAM_Init(); /* Initialize the Touch screen */ BSP_TS_Init(640, 480); /* Enable CRC to Unlock GUI */ __HAL_RCC_CRC_CLK_ENABLE(); /* Enable Back up SRAM */ __HAL_RCC_BKPSRAM_CLK_ENABLE(); }
/** * @brief Main program * @param None * @retval int */ int main(void) { /* STM32F4xx HAL library initialization: - Configure the Flash ART accelerator on ITCM interface - Configure the Systick to generate an interrupt each 1 msec - Set NVIC Group Priority to 4 - Global MSP (MCU Support Package) initialization */ #ifdef INCLUDE_THIRD_PARTY_MODULE /* Code Need to handle third party module */ __HAL_RCC_RTC_ENABLE(); __HAL_RCC_PWR_CLK_ENABLE(); __HAL_RCC_BKPSRAM_CLK_ENABLE(); HAL_PWR_EnableBkUpAccess(); if(*(__IO uint32_t *)(0x40024000) == GFX_DEMO_SIGNATURE_A) { *(__IO uint32_t *)(0x40024000) = 0; /* Reinitialize the Stack pointer*/ __set_MSP(*(__IO uint32_t*) GFX_DEMO_ADDRESS); /* jump to application address */ ((pFunc) (*(__IO uint32_t*) (GFX_DEMO_ADDRESS + 4)))(); } #endif HAL_Init(); /* Configure the system clock @ 180 Mhz */ SystemClock_Config(); k_BspInit(); /* Initialize RTC */ k_CalendarBkupInit(); /* Create GUI task */ osThreadDef(GUI_Thread, GUIThread, osPriorityNormal, 0, 2048); osThreadCreate (osThread(GUI_Thread), NULL); /* Add Modules*/ k_ModuleInit(); /* Link modules */ k_ModuleAdd(&audio_player_board); k_ModuleAdd(&video_player_board); k_ModuleAdd(&games_board); k_ModuleAdd(&audio_recorder_board); #ifdef INCLUDE_THIRD_PARTY_MODULE k_ModuleAdd(&third_party_board); #else k_ModuleAdd(&gardening_control_board); #endif k_ModuleAdd(&home_alarm_board); k_ModuleAdd(&settings_board); /* Initialize GUI */ GUI_Init(); WM_MULTIBUF_Enable(1); GUI_SetLayerVisEx (1, 0); GUI_SelectLayer(0); GUI_SetBkColor(GUI_WHITE); GUI_Clear(); /* Start scheduler */ osKernelStart (); /* We should never get here as control is now taken by the scheduler */ for( ;; ); }
void enableGPIOPowerUsageAndNoiseReductions(void) { // AHB1 __HAL_RCC_BKPSRAM_CLK_ENABLE(); __HAL_RCC_DTCMRAMEN_CLK_ENABLE(); __HAL_RCC_DMA2_CLK_ENABLE(); __HAL_RCC_USB_OTG_HS_CLK_ENABLE(); __HAL_RCC_USB_OTG_HS_ULPI_CLK_ENABLE(); __HAL_RCC_GPIOA_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOE_CLK_ENABLE(); __HAL_RCC_GPIOF_CLK_ENABLE(); __HAL_RCC_GPIOG_CLK_ENABLE(); __HAL_RCC_GPIOH_CLK_ENABLE(); __HAL_RCC_GPIOI_CLK_ENABLE(); #ifndef STM32F722xx __HAL_RCC_DMA2D_CLK_ENABLE(); __HAL_RCC_GPIOJ_CLK_ENABLE(); __HAL_RCC_GPIOK_CLK_ENABLE(); #endif //APB1 __HAL_RCC_TIM2_CLK_ENABLE(); __HAL_RCC_TIM3_CLK_ENABLE(); __HAL_RCC_TIM4_CLK_ENABLE(); __HAL_RCC_TIM5_CLK_ENABLE(); __HAL_RCC_TIM6_CLK_ENABLE(); __HAL_RCC_TIM7_CLK_ENABLE(); __HAL_RCC_TIM12_CLK_ENABLE(); __HAL_RCC_TIM13_CLK_ENABLE(); __HAL_RCC_TIM14_CLK_ENABLE(); __HAL_RCC_LPTIM1_CLK_ENABLE(); __HAL_RCC_SPI2_CLK_ENABLE(); __HAL_RCC_SPI3_CLK_ENABLE(); __HAL_RCC_USART2_CLK_ENABLE(); __HAL_RCC_USART3_CLK_ENABLE(); __HAL_RCC_UART4_CLK_ENABLE(); __HAL_RCC_UART5_CLK_ENABLE(); __HAL_RCC_I2C1_CLK_ENABLE(); __HAL_RCC_I2C2_CLK_ENABLE(); __HAL_RCC_I2C3_CLK_ENABLE(); __HAL_RCC_CAN1_CLK_ENABLE(); __HAL_RCC_DAC_CLK_ENABLE(); __HAL_RCC_UART7_CLK_ENABLE(); __HAL_RCC_UART8_CLK_ENABLE(); #ifndef STM32F722xx __HAL_RCC_I2C4_CLK_ENABLE(); __HAL_RCC_CAN2_CLK_ENABLE(); __HAL_RCC_CEC_CLK_ENABLE(); #endif //APB2 __HAL_RCC_TIM1_CLK_ENABLE(); __HAL_RCC_TIM8_CLK_ENABLE(); __HAL_RCC_USART1_CLK_ENABLE(); __HAL_RCC_USART6_CLK_ENABLE(); __HAL_RCC_ADC1_CLK_ENABLE(); __HAL_RCC_ADC2_CLK_ENABLE(); __HAL_RCC_ADC3_CLK_ENABLE(); __HAL_RCC_SDMMC1_CLK_ENABLE(); __HAL_RCC_SPI1_CLK_ENABLE(); __HAL_RCC_SPI4_CLK_ENABLE(); __HAL_RCC_TIM9_CLK_ENABLE(); __HAL_RCC_TIM10_CLK_ENABLE(); __HAL_RCC_TIM11_CLK_ENABLE(); __HAL_RCC_SPI5_CLK_ENABLE(); __HAL_RCC_SAI1_CLK_ENABLE(); __HAL_RCC_SAI2_CLK_ENABLE(); #ifndef STM32F722xx __HAL_RCC_SPI6_CLK_ENABLE(); #endif // // GPIO_InitTypeDef GPIO_InitStructure; // GPIO_StructInit(&GPIO_InitStructure); // GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; // default is un-pulled input // // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; // GPIO_InitStructure.GPIO_Pin &= ~(GPIO_Pin_11 | GPIO_Pin_12); // leave USB D+/D- alone // // GPIO_InitStructure.GPIO_Pin &= ~(GPIO_Pin_13 | GPIO_Pin_14); // leave JTAG pins alone // GPIO_Init(GPIOA, &GPIO_InitStructure); // // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; // GPIO_Init(GPIOB, &GPIO_InitStructure); // // GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; // GPIO_Init(GPIOC, &GPIO_InitStructure); // GPIO_Init(GPIOD, &GPIO_InitStructure); // GPIO_Init(GPIOE, &GPIO_InitStructure); }