Files
@ 0a0719c60fff
Branch filter:
Location: FeatherHAB/wsprhab/src/rtc.c - annotation
0a0719c60fff
2.2 KiB
text/plain
I'm totally a good C programmer... Add semicolons. Reduce drive strength.
bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 af6b7df096c5 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 ddbcfaffc98a bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 ddbcfaffc98a ddbcfaffc98a bb703e19f242 bb703e19f242 bb703e19f242 ddbcfaffc98a 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 ddbcfaffc98a bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 ddbcfaffc98a ddbcfaffc98a ddbcfaffc98a bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 bb703e19f242 ddbcfaffc98a ddbcfaffc98a bb703e19f242 ddbcfaffc98a ddbcfaffc98a ddbcfaffc98a ddbcfaffc98a ddbcfaffc98a ddbcfaffc98a ddbcfaffc98a ddbcfaffc98a ddbcfaffc98a ddbcfaffc98a ddbcfaffc98a ddbcfaffc98a | //
// RTC: configure real-time clock
//
#include "stm32f0xx_hal.h"
#include "rtc.h"
RTC_HandleTypeDef hrtc;
static void Error_Handler(void)
{
volatile uint8_t 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 = 124;
hrtc.Init.SynchPrediv = 322; // if this has enough bits should be 1.0018Hz based on 40kHz LSI
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;
// Alarm will trigger on the Xth second of every minute
sAlarm.AlarmMask = RTC_ALARMMASK_DATEWEEKDAY | RTC_ALARMMASK_HOURS | RTC_ALARMMASK_MINUTES;
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();
}
HAL_NVIC_SetPriority(RTC_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(RTC_IRQn);
}
void rtc_cal(void)
{
// Do something with hrtc.Instance->CALR; // this has a plus and minus component, see refman
}
RTC_HandleTypeDef* rtc_gethandle(void)
{
return &hrtc;
}
|