#include "board.h" #include "main.h" board_t board; void led_open(led_e led) { switch (led) { case LED_USER: GPIO_SET(LED_USER_GPIO_Port, LED_USER_Pin); break; default: break; } } void led_close(led_e led) { switch (led) { case LED_USER: GPIO_RESET(LED_USER_GPIO_Port, LED_USER_Pin); break; default: break; } } void rtc_set_default(void) { rtc_date_t date; rtc_time_t time; date.year = 25; date.month = 1; date.day = 1; time.hour = 0; time.minute = 0; time.second = 0; rtc_set(date, time, LL_RTC_WEEKDAY_WEDNESDAY); } void rtc_set(rtc_date_t date, rtc_time_t time, uint8_t weekday) { // Enable access to RTC LL_PWR_EnableBkUpAccess(); LL_RCC_EnableRTC(); LL_RTC_DateTypeDef rtc_date; LL_RTC_TimeTypeDef rtc_time; rtc_time.Hours = time.hour; rtc_time.Minutes = time.minute; rtc_time.Seconds = time.second; rtc_date.WeekDay = weekday; rtc_date.Day = date.day; rtc_date.Month = date.month; rtc_date.Year = date.year; LL_RTC_TIME_Init(RTC, LL_RTC_FORMAT_BIN, &rtc_time); LL_RTC_DATE_Init(RTC, LL_RTC_FORMAT_BIN, &rtc_date); // Disable access to RTC LL_PWR_DisableBkUpAccess(); } void rtc_update(void) { board.rtc_time.Hours = LL_RTC_TIME_GetHour(RTC); board.rtc_time.Minutes = LL_RTC_TIME_GetMinute(RTC); board.rtc_time.Seconds = LL_RTC_TIME_GetSecond(RTC); board.rtc_date.WeekDay = LL_RTC_DATE_GetWeekDay(RTC); board.rtc_date.Day = LL_RTC_DATE_GetDay(RTC); board.rtc_date.Month = LL_RTC_DATE_GetMonth(RTC); board.rtc_date.Year = LL_RTC_DATE_GetYear(RTC); } void led_toggle(led_e led) { switch (led) { case LED_USER: GPIO_TOGGLE(LED_USER_GPIO_Port, LED_USER_Pin); break; default: break; } } /** * @brief 初始化显示板 * */ void board_init(void) { rtc_set_default(); }