freertos_f407/User/board/board.c

97 lines
1.9 KiB
C

#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();
}