Enable RTC for all platforms and add cli date command (#252)
* F2: enable RTC. Cli: add date command.
This commit is contained in:
		
							parent
							
								
									e348990fc6
								
							
						
					
					
						commit
						758e37e294
					
				| @ -1,5 +1,6 @@ | ||||
| #include "cli_commands.h" | ||||
| #include <api-hal.h> | ||||
| #include <rtc.h> | ||||
| 
 | ||||
| void cli_command_help(string_t args, void* context) { | ||||
|     (void)args; | ||||
| @ -45,10 +46,31 @@ void cli_command_uuid(string_t args, void* context) { | ||||
|     cli_print(string_get_cstr(byte_str)); | ||||
| } | ||||
| 
 | ||||
| void cli_command_date(string_t args, void* context) { | ||||
|     RTC_DateTypeDef date; | ||||
|     RTC_TimeTypeDef time; | ||||
| 
 | ||||
|     // TODO add get_datetime to core, not use HAL here
 | ||||
|     // READ ORDER MATTERS! Time then date.
 | ||||
|     HAL_RTC_GetTime(&hrtc, &time, RTC_FORMAT_BIN); | ||||
|     HAL_RTC_GetDate(&hrtc, &date, RTC_FORMAT_BIN); | ||||
| 
 | ||||
|     string_t datetime_str; | ||||
|     string_init(datetime_str); | ||||
| 
 | ||||
|     string_cat_printf(datetime_str, "%.2d:%.2d:%.2d ", time.Hours, time.Minutes, time.Seconds); | ||||
|     string_cat_printf(datetime_str, "%.2d-%.2d-%.2d", date.Month, date.Date, 2000 + date.Year); | ||||
| 
 | ||||
|     cli_print(string_get_cstr(datetime_str)); | ||||
| 
 | ||||
|     string_clear(datetime_str); | ||||
| } | ||||
| 
 | ||||
| void cli_commands_init(Cli* cli) { | ||||
|     cli_add_command(cli, "help", cli_command_help, cli); | ||||
|     cli_add_command(cli, "?", cli_command_help, cli); | ||||
|     cli_add_command(cli, "version", cli_command_version, cli); | ||||
|     cli_add_command(cli, "!", cli_command_version, cli); | ||||
|     cli_add_command(cli, "uid", cli_command_uuid, cli); | ||||
|     cli_add_command(cli, "date", cli_command_date, cli); | ||||
| } | ||||
							
								
								
									
										58
									
								
								firmware/targets/f2/Inc/rtc.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								firmware/targets/f2/Inc/rtc.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,58 @@ | ||||
| /**
 | ||||
|   ****************************************************************************** | ||||
|   * File Name          : RTC.h | ||||
|   * Description        : This file provides code for the configuration | ||||
|   *                      of the RTC instances. | ||||
|   ****************************************************************************** | ||||
|   * @attention | ||||
|   * | ||||
|   * <h2><center>© Copyright (c) 2020 STMicroelectronics. | ||||
|   * All rights reserved.</center></h2> | ||||
|   * | ||||
|   * This software component is licensed by ST under Ultimate Liberty license | ||||
|   * SLA0044, the "License"; You may not use this file except in compliance with | ||||
|   * the License. You may obtain a copy of the License at: | ||||
|   *                             www.st.com/SLA0044 | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   */ | ||||
| /* Define to prevent recursive inclusion -------------------------------------*/ | ||||
| #ifndef __rtc_H | ||||
| #define __rtc_H | ||||
| #ifdef __cplusplus | ||||
|  extern "C" { | ||||
| #endif | ||||
| 
 | ||||
| /* Includes ------------------------------------------------------------------*/ | ||||
| #include "main.h" | ||||
| 
 | ||||
| /* USER CODE BEGIN Includes */ | ||||
| 
 | ||||
| /* USER CODE END Includes */ | ||||
| 
 | ||||
| extern RTC_HandleTypeDef hrtc; | ||||
| 
 | ||||
| /* USER CODE BEGIN Private defines */ | ||||
| 
 | ||||
| /* USER CODE END Private defines */ | ||||
| 
 | ||||
| void MX_RTC_Init(void); | ||||
| 
 | ||||
| /* USER CODE BEGIN Prototypes */ | ||||
| 
 | ||||
| /* USER CODE END Prototypes */ | ||||
| 
 | ||||
| #ifdef __cplusplus | ||||
| } | ||||
| #endif | ||||
| #endif /*__ rtc_H */ | ||||
| 
 | ||||
| /**
 | ||||
|   * @} | ||||
|   */ | ||||
| 
 | ||||
| /**
 | ||||
|   * @} | ||||
|   */ | ||||
| 
 | ||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||||
| @ -67,7 +67,7 @@ | ||||
| /*#define HAL_QSPI_MODULE_ENABLED   */ | ||||
| /*#define HAL_QSPI_MODULE_ENABLED   */ | ||||
| /*#define HAL_RNG_MODULE_ENABLED   */ | ||||
| /*#define HAL_RTC_MODULE_ENABLED   */ | ||||
| #define HAL_RTC_MODULE_ENABLED | ||||
| /*#define HAL_SAI_MODULE_ENABLED   */ | ||||
| /*#define HAL_SD_MODULE_ENABLED   */ | ||||
| /*#define HAL_SMBUS_MODULE_ENABLED   */ | ||||
|  | ||||
| @ -22,6 +22,7 @@ | ||||
| #include "cmsis_os.h" | ||||
| #include "adc.h" | ||||
| #include "comp.h" | ||||
| #include "rtc.h" | ||||
| #include "spi.h" | ||||
| #include "tim.h" | ||||
| #include "usart.h" | ||||
| @ -101,6 +102,7 @@ int main(void) | ||||
|   MX_USART1_UART_Init(); | ||||
|   MX_TIM8_Init(); | ||||
|   MX_TIM2_Init(); | ||||
|   MX_RTC_Init(); | ||||
|   /* USER CODE BEGIN 2 */ | ||||
|   MX_FATFS_Init(); | ||||
|   delay_us_init_DWT(); | ||||
| @ -135,11 +137,16 @@ void SystemClock_Config(void) | ||||
|   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; | ||||
|   RCC_PeriphCLKInitTypeDef PeriphClkInit = {0}; | ||||
| 
 | ||||
|   /** Configure LSE Drive Capability
 | ||||
|   */ | ||||
|   HAL_PWR_EnableBkUpAccess(); | ||||
|   __HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_LOW); | ||||
|   /** Initializes the RCC Oscillators according to the specified parameters
 | ||||
|   * in the RCC_OscInitTypeDef structure. | ||||
|   */ | ||||
|   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; | ||||
|   RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE; | ||||
|   RCC_OscInitStruct.HSEState = RCC_HSE_ON; | ||||
|   RCC_OscInitStruct.LSEState = RCC_LSE_ON; | ||||
|   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; | ||||
|   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; | ||||
|   RCC_OscInitStruct.PLL.PLLM = 2; | ||||
| @ -164,10 +171,11 @@ void SystemClock_Config(void) | ||||
|   { | ||||
|     Error_Handler(); | ||||
|   } | ||||
|   PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1|RCC_PERIPHCLK_USB | ||||
|                               |RCC_PERIPHCLK_ADC; | ||||
|   PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_USART1 | ||||
|                               |RCC_PERIPHCLK_USB|RCC_PERIPHCLK_ADC; | ||||
|   PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2; | ||||
|   PeriphClkInit.AdcClockSelection = RCC_ADCCLKSOURCE_SYSCLK; | ||||
|   PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE; | ||||
|   PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLLSAI1; | ||||
|   PeriphClkInit.PLLSAI1.PLLSAI1Source = RCC_PLLSOURCE_HSE; | ||||
|   PeriphClkInit.PLLSAI1.PLLSAI1M = 2; | ||||
|  | ||||
							
								
								
									
										113
									
								
								firmware/targets/f2/Src/rtc.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								firmware/targets/f2/Src/rtc.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,113 @@ | ||||
| /**
 | ||||
|   ****************************************************************************** | ||||
|   * File Name          : RTC.c | ||||
|   * Description        : This file provides code for the configuration | ||||
|   *                      of the RTC instances. | ||||
|   ****************************************************************************** | ||||
|   * @attention | ||||
|   * | ||||
|   * <h2><center>© Copyright (c) 2020 STMicroelectronics. | ||||
|   * All rights reserved.</center></h2> | ||||
|   * | ||||
|   * This software component is licensed by ST under Ultimate Liberty license | ||||
|   * SLA0044, the "License"; You may not use this file except in compliance with | ||||
|   * the License. You may obtain a copy of the License at: | ||||
|   *                             www.st.com/SLA0044 | ||||
|   * | ||||
|   ****************************************************************************** | ||||
|   */ | ||||
| 
 | ||||
| /* Includes ------------------------------------------------------------------*/ | ||||
| #include "rtc.h" | ||||
| 
 | ||||
| /* USER CODE BEGIN 0 */ | ||||
| 
 | ||||
| /* USER CODE END 0 */ | ||||
| 
 | ||||
| RTC_HandleTypeDef hrtc; | ||||
| 
 | ||||
| /* RTC init function */ | ||||
| void MX_RTC_Init(void) | ||||
| { | ||||
|   RTC_TimeTypeDef sTime = {0}; | ||||
|   RTC_DateTypeDef sDate = {0}; | ||||
| 
 | ||||
|   /** Initialize RTC Only
 | ||||
|   */ | ||||
|   hrtc.Instance = RTC; | ||||
|   hrtc.Init.HourFormat = RTC_HOURFORMAT_24; | ||||
|   hrtc.Init.AsynchPrediv = 127; | ||||
|   hrtc.Init.SynchPrediv = 255; | ||||
|   hrtc.Init.OutPut = RTC_OUTPUT_DISABLE; | ||||
|   hrtc.Init.OutPutRemap = RTC_OUTPUT_REMAP_NONE; | ||||
|   hrtc.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH; | ||||
|   hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN; | ||||
|   if (HAL_RTC_Init(&hrtc) != HAL_OK) | ||||
|   { | ||||
|     Error_Handler(); | ||||
|   } | ||||
| 
 | ||||
|   /* USER CODE BEGIN Check_RTC_BKUP */ | ||||
| 
 | ||||
|   /* USER CODE END Check_RTC_BKUP */ | ||||
| 
 | ||||
|   /** Initialize RTC and set the Time and Date
 | ||||
|   */ | ||||
|   sTime.Hours = 0x0; | ||||
|   sTime.Minutes = 0x0; | ||||
|   sTime.Seconds = 0x0; | ||||
|   sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE; | ||||
|   sTime.StoreOperation = RTC_STOREOPERATION_RESET; | ||||
|   if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BCD) != HAL_OK) | ||||
|   { | ||||
|     Error_Handler(); | ||||
|   } | ||||
|   sDate.WeekDay = RTC_WEEKDAY_MONDAY; | ||||
|   sDate.Month = RTC_MONTH_NOVEMBER; | ||||
|   sDate.Date = 0x20; | ||||
|   sDate.Year = 0x20; | ||||
| 
 | ||||
|   if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BCD) != HAL_OK) | ||||
|   { | ||||
|     Error_Handler(); | ||||
|   } | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle) | ||||
| { | ||||
| 
 | ||||
|   if(rtcHandle->Instance==RTC) | ||||
|   { | ||||
|   /* USER CODE BEGIN RTC_MspInit 0 */ | ||||
| 
 | ||||
|   /* USER CODE END RTC_MspInit 0 */ | ||||
|     /* RTC clock enable */ | ||||
|     __HAL_RCC_RTC_ENABLE(); | ||||
|   /* USER CODE BEGIN RTC_MspInit 1 */ | ||||
| 
 | ||||
|   /* USER CODE END RTC_MspInit 1 */ | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| void HAL_RTC_MspDeInit(RTC_HandleTypeDef* rtcHandle) | ||||
| { | ||||
| 
 | ||||
|   if(rtcHandle->Instance==RTC) | ||||
|   { | ||||
|   /* USER CODE BEGIN RTC_MspDeInit 0 */ | ||||
| 
 | ||||
|   /* USER CODE END RTC_MspDeInit 0 */ | ||||
|     /* Peripheral clock disable */ | ||||
|     __HAL_RCC_RTC_DISABLE(); | ||||
|   /* USER CODE BEGIN RTC_MspDeInit 1 */ | ||||
| 
 | ||||
|   /* USER CODE END RTC_MspDeInit 1 */ | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| /* USER CODE BEGIN 1 */ | ||||
| 
 | ||||
| /* USER CODE END 1 */ | ||||
| 
 | ||||
| /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ | ||||
| @ -239,8 +239,9 @@ void EXTI9_5_IRQHandler(void) | ||||
| void TIM1_TRG_COM_TIM17_IRQHandler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN TIM1_TRG_COM_TIM17_IRQn 0 */ | ||||
|   HAL_TIM_IRQHandler(&htim17); | ||||
| 
 | ||||
|   /* USER CODE END TIM1_TRG_COM_TIM17_IRQn 0 */ | ||||
|   HAL_TIM_IRQHandler(&htim17); | ||||
|   /* USER CODE BEGIN TIM1_TRG_COM_TIM17_IRQn 1 */ | ||||
| 
 | ||||
|   /* USER CODE END TIM1_TRG_COM_TIM17_IRQn 1 */ | ||||
| @ -281,8 +282,9 @@ void TIM8_CC_IRQHandler(void) | ||||
| void OTG_FS_IRQHandler(void) | ||||
| { | ||||
|   /* USER CODE BEGIN OTG_FS_IRQn 0 */ | ||||
|   HAL_PCD_IRQHandler(&hpcd_USB_OTG_FS); | ||||
| 
 | ||||
|   /* USER CODE END OTG_FS_IRQn 0 */ | ||||
|   HAL_PCD_IRQHandler(&hpcd_USB_OTG_FS); | ||||
|   /* USER CODE BEGIN OTG_FS_IRQn 1 */ | ||||
| 
 | ||||
|   /* USER CODE END OTG_FS_IRQn 1 */ | ||||
|  | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -39,6 +39,7 @@ C_SOURCES		+= \ | ||||
| 	$(CUBE_DIR)/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ex.c \
 | ||||
| 	$(CUBE_DIR)/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.c \
 | ||||
| 	$(CUBE_DIR)/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_gpio.c \
 | ||||
| 	$(CUBE_DIR)/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_rtc.c \
 | ||||
| 	$(CUBE_DIR)/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma.c \
 | ||||
| 	$(CUBE_DIR)/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.c \
 | ||||
| 	$(CUBE_DIR)/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.c \
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 あく
						あく