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…
Reference in New Issue
Block a user