Files
@ fb8415e8edb9
Branch filter:
Location: FeatherHAB/wsprhab/src/rtc.c - annotation
fb8415e8edb9
1.8 KiB
text/plain
Add sleep to most functional modes; decrease clock speed to 2MHz from 8Mhz to save power
bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 | //
// RTC: configure real-time clock
//
#include "stm32f0xx_hal.h"
#include "rtc.h"
RTC_HandleTypeDef hrtc;
static void Error_Handler(void)
{
volatile crap = 1;
}
// Initialize RTC
void rtc_init(void)
{
__HAL_RCC_RTC_ENABLE();
RTC_TimeTypeDef sTime;
RTC_DateTypeDef sDate;
RTC_AlarmTypeDef sAlarm;
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.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
hrtc.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
}
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_JANUARY;
sDate.Date = 0x1;
sDate.Year = 0x0;
if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BCD) != HAL_OK)
{
Error_Handler();
}
/**Enable the Alarm A
*/
sAlarm.AlarmTime.Hours = 0x0;
sAlarm.AlarmTime.Minutes = 0x0;
sAlarm.AlarmTime.Seconds = 0x0;
sAlarm.AlarmTime.SubSeconds = 0x0;
sAlarm.AlarmTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
sAlarm.AlarmTime.StoreOperation = RTC_STOREOPERATION_RESET;
sAlarm.AlarmMask = RTC_ALARMMASK_NONE;
sAlarm.AlarmSubSecondMask = RTC_ALARMSUBSECONDMASK_ALL;
sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;
sAlarm.AlarmDateWeekDay = 0x1;
sAlarm.Alarm = RTC_ALARM_A;
if (HAL_RTC_SetAlarm(&hrtc, &sAlarm, RTC_FORMAT_BCD) != HAL_OK)
{
Error_Handler();
}
}
|