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 "cli_commands.h" | ||||||
| #include <api-hal.h> | #include <api-hal.h> | ||||||
|  | #include <rtc.h> | ||||||
| 
 | 
 | ||||||
| void cli_command_help(string_t args, void* context) { | void cli_command_help(string_t args, void* context) { | ||||||
|     (void)args; |     (void)args; | ||||||
| @ -45,10 +46,31 @@ void cli_command_uuid(string_t args, void* context) { | |||||||
|     cli_print(string_get_cstr(byte_str)); |     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) { | void cli_commands_init(Cli* cli) { | ||||||
|     cli_add_command(cli, "help", cli_command_help, cli); |     cli_add_command(cli, "help", cli_command_help, cli); | ||||||
|     cli_add_command(cli, "?", 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, "version", cli_command_version, cli); | ||||||
|     cli_add_command(cli, "!", 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, "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_QSPI_MODULE_ENABLED   */ | /*#define HAL_QSPI_MODULE_ENABLED   */ | ||||||
| /*#define HAL_RNG_MODULE_ENABLED   */ | /*#define HAL_RNG_MODULE_ENABLED   */ | ||||||
| /*#define HAL_RTC_MODULE_ENABLED   */ | #define HAL_RTC_MODULE_ENABLED | ||||||
| /*#define HAL_SAI_MODULE_ENABLED   */ | /*#define HAL_SAI_MODULE_ENABLED   */ | ||||||
| /*#define HAL_SD_MODULE_ENABLED   */ | /*#define HAL_SD_MODULE_ENABLED   */ | ||||||
| /*#define HAL_SMBUS_MODULE_ENABLED   */ | /*#define HAL_SMBUS_MODULE_ENABLED   */ | ||||||
|  | |||||||
| @ -22,6 +22,7 @@ | |||||||
| #include "cmsis_os.h" | #include "cmsis_os.h" | ||||||
| #include "adc.h" | #include "adc.h" | ||||||
| #include "comp.h" | #include "comp.h" | ||||||
|  | #include "rtc.h" | ||||||
| #include "spi.h" | #include "spi.h" | ||||||
| #include "tim.h" | #include "tim.h" | ||||||
| #include "usart.h" | #include "usart.h" | ||||||
| @ -101,6 +102,7 @@ int main(void) | |||||||
|   MX_USART1_UART_Init(); |   MX_USART1_UART_Init(); | ||||||
|   MX_TIM8_Init(); |   MX_TIM8_Init(); | ||||||
|   MX_TIM2_Init(); |   MX_TIM2_Init(); | ||||||
|  |   MX_RTC_Init(); | ||||||
|   /* USER CODE BEGIN 2 */ |   /* USER CODE BEGIN 2 */ | ||||||
|   MX_FATFS_Init(); |   MX_FATFS_Init(); | ||||||
|   delay_us_init_DWT(); |   delay_us_init_DWT(); | ||||||
| @ -135,11 +137,16 @@ void SystemClock_Config(void) | |||||||
|   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; |   RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; | ||||||
|   RCC_PeriphCLKInitTypeDef PeriphClkInit = {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
 |   /** Initializes the RCC Oscillators according to the specified parameters
 | ||||||
|   * in the RCC_OscInitTypeDef structure. |   * 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.HSEState = RCC_HSE_ON; | ||||||
|  |   RCC_OscInitStruct.LSEState = RCC_LSE_ON; | ||||||
|   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; |   RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; | ||||||
|   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; |   RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; | ||||||
|   RCC_OscInitStruct.PLL.PLLM = 2; |   RCC_OscInitStruct.PLL.PLLM = 2; | ||||||
| @ -164,10 +171,11 @@ void SystemClock_Config(void) | |||||||
|   { |   { | ||||||
|     Error_Handler(); |     Error_Handler(); | ||||||
|   } |   } | ||||||
|   PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1|RCC_PERIPHCLK_USB |   PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_RTC|RCC_PERIPHCLK_USART1 | ||||||
|                               |RCC_PERIPHCLK_ADC; |                               |RCC_PERIPHCLK_USB|RCC_PERIPHCLK_ADC; | ||||||
|   PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2; |   PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK2; | ||||||
|   PeriphClkInit.AdcClockSelection = RCC_ADCCLKSOURCE_SYSCLK; |   PeriphClkInit.AdcClockSelection = RCC_ADCCLKSOURCE_SYSCLK; | ||||||
|  |   PeriphClkInit.RTCClockSelection = RCC_RTCCLKSOURCE_LSE; | ||||||
|   PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLLSAI1; |   PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_PLLSAI1; | ||||||
|   PeriphClkInit.PLLSAI1.PLLSAI1Source = RCC_PLLSOURCE_HSE; |   PeriphClkInit.PLLSAI1.PLLSAI1Source = RCC_PLLSOURCE_HSE; | ||||||
|   PeriphClkInit.PLLSAI1.PLLSAI1M = 2; |   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) | void TIM1_TRG_COM_TIM17_IRQHandler(void) | ||||||
| { | { | ||||||
|   /* USER CODE BEGIN TIM1_TRG_COM_TIM17_IRQn 0 */ |   /* USER CODE BEGIN TIM1_TRG_COM_TIM17_IRQn 0 */ | ||||||
|   HAL_TIM_IRQHandler(&htim17); | 
 | ||||||
|   /* USER CODE END TIM1_TRG_COM_TIM17_IRQn 0 */ |   /* USER CODE END TIM1_TRG_COM_TIM17_IRQn 0 */ | ||||||
|  |   HAL_TIM_IRQHandler(&htim17); | ||||||
|   /* USER CODE BEGIN TIM1_TRG_COM_TIM17_IRQn 1 */ |   /* USER CODE BEGIN TIM1_TRG_COM_TIM17_IRQn 1 */ | ||||||
| 
 | 
 | ||||||
|   /* USER CODE END 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) | void OTG_FS_IRQHandler(void) | ||||||
| { | { | ||||||
|   /* USER CODE BEGIN OTG_FS_IRQn 0 */ |   /* USER CODE BEGIN OTG_FS_IRQn 0 */ | ||||||
|   HAL_PCD_IRQHandler(&hpcd_USB_OTG_FS); | 
 | ||||||
|   /* USER CODE END OTG_FS_IRQn 0 */ |   /* USER CODE END OTG_FS_IRQn 0 */ | ||||||
|  |   HAL_PCD_IRQHandler(&hpcd_USB_OTG_FS); | ||||||
|   /* USER CODE BEGIN OTG_FS_IRQn 1 */ |   /* USER CODE BEGIN OTG_FS_IRQn 1 */ | ||||||
| 
 | 
 | ||||||
|   /* USER CODE END 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_ex.c \
 | ||||||
| 	$(CUBE_DIR)/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_flash_ramfunc.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_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.c \
 | ||||||
| 	$(CUBE_DIR)/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.c \
 | 	$(CUBE_DIR)/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_dma_ex.c \
 | ||||||
| 	$(CUBE_DIR)/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.c \
 | 	$(CUBE_DIR)/Drivers/STM32L4xx_HAL_Driver/Src/stm32l4xx_hal_pwr.c \
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 あく
						あく