更新RTC时钟
This commit is contained in:
parent
f0d23f8870
commit
587e9158f2
|
@ -78,18 +78,6 @@ void MX_GPIO_Init(void)
|
||||||
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
|
||||||
HAL_GPIO_Init(LED_USER_GPIO_Port, &GPIO_InitStruct);
|
HAL_GPIO_Init(LED_USER_GPIO_Port, &GPIO_InitStruct);
|
||||||
|
|
||||||
/*Configure GPIO pins : PC14 PC15 PC0 PC1
|
|
||||||
PC2 PC3 PC4 PC5
|
|
||||||
PC6 PC7 PC8 PC9
|
|
||||||
PC10 PC11 PC12 */
|
|
||||||
GPIO_InitStruct.Pin = GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_0|GPIO_PIN_1
|
|
||||||
|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5
|
|
||||||
|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9
|
|
||||||
|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;
|
|
||||||
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
|
||||||
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
|
||||||
|
|
||||||
/*Configure GPIO pins : PF0 PF1 PF2 PF3
|
/*Configure GPIO pins : PF0 PF1 PF2 PF3
|
||||||
PF4 PF5 PF6 PF7
|
PF4 PF5 PF6 PF7
|
||||||
PF8 PF9 PF10 PF11
|
PF8 PF9 PF10 PF11
|
||||||
|
@ -102,6 +90,18 @@ void MX_GPIO_Init(void)
|
||||||
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
|
HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);
|
||||||
|
|
||||||
|
/*Configure GPIO pins : PC0 PC1 PC2 PC3
|
||||||
|
PC4 PC5 PC6 PC7
|
||||||
|
PC8 PC9 PC10 PC11
|
||||||
|
PC12 */
|
||||||
|
GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3
|
||||||
|
|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7
|
||||||
|
|GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11
|
||||||
|
|GPIO_PIN_12;
|
||||||
|
GPIO_InitStruct.Mode = GPIO_MODE_ANALOG;
|
||||||
|
GPIO_InitStruct.Pull = GPIO_NOPULL;
|
||||||
|
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
|
||||||
|
|
||||||
/*Configure GPIO pins : PA0 PA1 PA2 PA3
|
/*Configure GPIO pins : PA0 PA1 PA2 PA3
|
||||||
PA4 PA5 PA6 PA7
|
PA4 PA5 PA6 PA7
|
||||||
PA8 PA9 PA10 PA11
|
PA8 PA9 PA10 PA11
|
||||||
|
|
|
@ -91,15 +91,13 @@ int main(void)
|
||||||
MX_GPIO_Init();
|
MX_GPIO_Init();
|
||||||
MX_RTC_Init();
|
MX_RTC_Init();
|
||||||
/* USER CODE BEGIN 2 */
|
/* USER CODE BEGIN 2 */
|
||||||
|
board_init();
|
||||||
|
app_init();
|
||||||
/* USER CODE END 2 */
|
/* USER CODE END 2 */
|
||||||
|
|
||||||
/* Call init function for freertos objects (in freertos.c) */
|
/* Call init function for freertos objects (in freertos.c) */
|
||||||
MX_FREERTOS_Init();
|
MX_FREERTOS_Init();
|
||||||
|
|
||||||
board_init();
|
|
||||||
app_init();
|
|
||||||
|
|
||||||
/* Start scheduler */
|
/* Start scheduler */
|
||||||
osKernelStart();
|
osKernelStart();
|
||||||
|
|
||||||
|
@ -132,8 +130,9 @@ void SystemClock_Config(void)
|
||||||
/** 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 = 4;
|
RCC_OscInitStruct.PLL.PLLM = 4;
|
||||||
|
|
|
@ -1,21 +1,21 @@
|
||||||
/* USER CODE BEGIN Header */
|
/* USER CODE BEGIN Header */
|
||||||
/**
|
/**
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @file rtc.c
|
* @file rtc.c
|
||||||
* @brief This file provides code for the configuration
|
* @brief This file provides code for the configuration
|
||||||
* of the RTC instances.
|
* of the RTC instances.
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
* @attention
|
* @attention
|
||||||
*
|
*
|
||||||
* Copyright (c) 2025 STMicroelectronics.
|
* Copyright (c) 2025 STMicroelectronics.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
*
|
*
|
||||||
* This software is licensed under terms that can be found in the LICENSE file
|
* This software is licensed under terms that can be found in the LICENSE file
|
||||||
* in the root directory of this software component.
|
* in the root directory of this software component.
|
||||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||||
*
|
*
|
||||||
******************************************************************************
|
******************************************************************************
|
||||||
*/
|
*/
|
||||||
/* USER CODE END Header */
|
/* USER CODE END Header */
|
||||||
/* Includes ------------------------------------------------------------------*/
|
/* Includes ------------------------------------------------------------------*/
|
||||||
#include "rtc.h"
|
#include "rtc.h"
|
||||||
|
@ -31,18 +31,18 @@ void MX_RTC_Init(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
/* USER CODE BEGIN RTC_Init 0 */
|
/* USER CODE BEGIN RTC_Init 0 */
|
||||||
|
#if 0
|
||||||
/* USER CODE END RTC_Init 0 */
|
/* USER CODE END RTC_Init 0 */
|
||||||
|
|
||||||
RTC_TimeTypeDef sTime = {0};
|
RTC_TimeTypeDef sTime = {0};
|
||||||
RTC_DateTypeDef sDate = {0};
|
RTC_DateTypeDef sDate = {0};
|
||||||
|
|
||||||
/* USER CODE BEGIN RTC_Init 1 */
|
/* USER CODE BEGIN RTC_Init 1 */
|
||||||
|
#endif
|
||||||
/* USER CODE END RTC_Init 1 */
|
/* USER CODE END RTC_Init 1 */
|
||||||
|
|
||||||
/** Initialize RTC Only
|
/** Initialize RTC Only
|
||||||
*/
|
*/
|
||||||
hrtc.Instance = RTC;
|
hrtc.Instance = RTC;
|
||||||
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
|
hrtc.Init.HourFormat = RTC_HOURFORMAT_24;
|
||||||
hrtc.Init.AsynchPrediv = 127;
|
hrtc.Init.AsynchPrediv = 127;
|
||||||
|
@ -56,11 +56,11 @@ void MX_RTC_Init(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* USER CODE BEGIN Check_RTC_BKUP */
|
/* USER CODE BEGIN Check_RTC_BKUP */
|
||||||
|
#if 0
|
||||||
/* USER CODE END Check_RTC_BKUP */
|
/* USER CODE END Check_RTC_BKUP */
|
||||||
|
|
||||||
/** Initialize RTC and set the Time and Date
|
/** Initialize RTC and set the Time and Date
|
||||||
*/
|
*/
|
||||||
sTime.Hours = 0x0;
|
sTime.Hours = 0x0;
|
||||||
sTime.Minutes = 0x0;
|
sTime.Minutes = 0x0;
|
||||||
sTime.Seconds = 0x0;
|
sTime.Seconds = 0x0;
|
||||||
|
@ -80,25 +80,24 @@ void MX_RTC_Init(void)
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
/* USER CODE BEGIN RTC_Init 2 */
|
/* USER CODE BEGIN RTC_Init 2 */
|
||||||
|
#endif
|
||||||
/* USER CODE END RTC_Init 2 */
|
/* USER CODE END RTC_Init 2 */
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle)
|
void HAL_RTC_MspInit(RTC_HandleTypeDef *rtcHandle)
|
||||||
{
|
{
|
||||||
|
|
||||||
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
|
RCC_PeriphCLKInitTypeDef PeriphClkInitStruct = {0};
|
||||||
if(rtcHandle->Instance==RTC)
|
if (rtcHandle->Instance == RTC)
|
||||||
{
|
{
|
||||||
/* USER CODE BEGIN RTC_MspInit 0 */
|
/* USER CODE BEGIN RTC_MspInit 0 */
|
||||||
|
|
||||||
/* USER CODE END RTC_MspInit 0 */
|
/* USER CODE END RTC_MspInit 0 */
|
||||||
|
|
||||||
/** Initializes the peripherals clock
|
/** Initializes the peripherals clock
|
||||||
*/
|
*/
|
||||||
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
|
PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
|
||||||
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_HSE_DIV8;
|
PeriphClkInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
|
||||||
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
|
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInitStruct) != HAL_OK)
|
||||||
{
|
{
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
|
@ -106,25 +105,25 @@ void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle)
|
||||||
|
|
||||||
/* RTC clock enable */
|
/* RTC clock enable */
|
||||||
__HAL_RCC_RTC_ENABLE();
|
__HAL_RCC_RTC_ENABLE();
|
||||||
/* USER CODE BEGIN RTC_MspInit 1 */
|
/* USER CODE BEGIN RTC_MspInit 1 */
|
||||||
|
|
||||||
/* USER CODE END RTC_MspInit 1 */
|
/* USER CODE END RTC_MspInit 1 */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void HAL_RTC_MspDeInit(RTC_HandleTypeDef* rtcHandle)
|
void HAL_RTC_MspDeInit(RTC_HandleTypeDef *rtcHandle)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(rtcHandle->Instance==RTC)
|
if (rtcHandle->Instance == RTC)
|
||||||
{
|
{
|
||||||
/* USER CODE BEGIN RTC_MspDeInit 0 */
|
/* USER CODE BEGIN RTC_MspDeInit 0 */
|
||||||
|
|
||||||
/* USER CODE END RTC_MspDeInit 0 */
|
/* USER CODE END RTC_MspDeInit 0 */
|
||||||
/* Peripheral clock disable */
|
/* Peripheral clock disable */
|
||||||
__HAL_RCC_RTC_DISABLE();
|
__HAL_RCC_RTC_DISABLE();
|
||||||
/* USER CODE BEGIN RTC_MspDeInit 1 */
|
/* USER CODE BEGIN RTC_MspDeInit 1 */
|
||||||
|
|
||||||
/* USER CODE END RTC_MspDeInit 1 */
|
/* USER CODE END RTC_MspDeInit 1 */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -149,6 +149,31 @@
|
||||||
</SetRegEntry>
|
</SetRegEntry>
|
||||||
</TargetDriverDllRegistry>
|
</TargetDriverDllRegistry>
|
||||||
<Breakpoint/>
|
<Breakpoint/>
|
||||||
|
<WatchWindow1>
|
||||||
|
<Ww>
|
||||||
|
<count>0</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>board,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>1</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>board,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
|
<Ww>
|
||||||
|
<count>2</count>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<ItemText>hrtc,0x0A</ItemText>
|
||||||
|
</Ww>
|
||||||
|
</WatchWindow1>
|
||||||
|
<MemoryWindow1>
|
||||||
|
<Mm>
|
||||||
|
<WinNumber>1</WinNumber>
|
||||||
|
<SubType>0</SubType>
|
||||||
|
<ItemText>0x40002850</ItemText>
|
||||||
|
<AccSizeX>0</AccSizeX>
|
||||||
|
</Mm>
|
||||||
|
</MemoryWindow1>
|
||||||
<Tracepoint>
|
<Tracepoint>
|
||||||
<THDelay>0</THDelay>
|
<THDelay>0</THDelay>
|
||||||
</Tracepoint>
|
</Tracepoint>
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -8,7 +8,7 @@ void business_task(void *pvParameters)
|
||||||
for (;;)
|
for (;;)
|
||||||
{
|
{
|
||||||
led_toggle(LED_USER);
|
led_toggle(LED_USER);
|
||||||
// rtc_update();
|
rtc_update();
|
||||||
vTaskDelay(1000);
|
vTaskDelay(1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
#include "board.h"
|
#include "board.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
#include "rtc.h"
|
||||||
board_t board;
|
board_t board;
|
||||||
|
|
||||||
void led_open(led_e led)
|
void led_open(led_e led)
|
||||||
|
@ -38,52 +39,97 @@ void led_toggle(led_e led)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void rtc_set_default(void)
|
/**
|
||||||
|
* @brief RTC写入后备区域SRAM
|
||||||
|
* @param bkrx : 后备区寄存器编号,范围:0~31
|
||||||
|
* @param data : 要写入的数据,32位长度
|
||||||
|
* @retval 无
|
||||||
|
*/
|
||||||
|
void rtc_write_bkr(uint32_t bkrx, uint32_t data)
|
||||||
{
|
{
|
||||||
rtc_date_t date;
|
HAL_PWR_EnableBkUpAccess(); /* 取消备份区写保护 */
|
||||||
rtc_time_t time;
|
HAL_RTCEx_BKUPWrite(&hrtc, bkrx, data);
|
||||||
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)
|
/**
|
||||||
|
* @brief RTC读取后备区域SRAM
|
||||||
|
* @param bkrx : 后备区寄存器编号,范围:0~31
|
||||||
|
* @retval 读取到的值
|
||||||
|
*/
|
||||||
|
static uint32_t rtc_read_bkr(uint32_t bkrx)
|
||||||
{
|
{
|
||||||
// // Enable access to RTC
|
uint32_t temp = 0;
|
||||||
// LL_PWR_EnableBkUpAccess();
|
temp = RTC_BASE + 0x50 + bkrx * 4;
|
||||||
// LL_RCC_EnableRTC();
|
return (*(uint32_t *)temp); /* 返回读取到的值 */
|
||||||
// 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;
|
BOOL rtc_set_time(rtc_time_t time, uint8_t ampm)
|
||||||
// rtc_date.Day = date.day;
|
{
|
||||||
// rtc_date.Month = date.month;
|
RTC_TimeTypeDef rtc_time;
|
||||||
// rtc_date.Year = date.year;
|
rtc_time.Hours = time.hour;
|
||||||
|
rtc_time.Minutes = time.minute;
|
||||||
|
rtc_time.Seconds = time.second;
|
||||||
|
rtc_time.TimeFormat = ampm;
|
||||||
|
rtc_time.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
|
||||||
|
rtc_time.StoreOperation = RTC_STOREOPERATION_RESET;
|
||||||
|
return HAL_RTC_SetTime(&hrtc, &rtc_time, RTC_FORMAT_BIN) == HAL_OK;
|
||||||
|
}
|
||||||
|
|
||||||
// LL_RTC_TIME_Init(RTC, LL_RTC_FORMAT_BIN, &rtc_time);
|
BOOL rtc_set_date(rtc_date_t date)
|
||||||
// LL_RTC_DATE_Init(RTC, LL_RTC_FORMAT_BIN, &rtc_date);
|
{
|
||||||
|
RTC_DateTypeDef rtc_date;
|
||||||
|
rtc_date.Month = date.month;
|
||||||
|
rtc_date.Date = date.day;
|
||||||
|
rtc_date.Year = date.year;
|
||||||
|
rtc_date.WeekDay = date.weekday;
|
||||||
|
|
||||||
// // Disable access to RTC
|
return HAL_RTC_SetDate(&hrtc, &rtc_date, RTC_FORMAT_BIN) == HAL_OK;
|
||||||
// LL_PWR_DisableBkUpAccess();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void rtc_update(void)
|
void rtc_update(void)
|
||||||
{
|
{
|
||||||
// board.rtc_time.Hours = LL_RTC_TIME_GetHour(RTC);
|
RTC_DateTypeDef rtc_date;
|
||||||
// board.rtc_time.Minutes = LL_RTC_TIME_GetMinute(RTC);
|
RTC_TimeTypeDef rtc_time;
|
||||||
// board.rtc_time.Seconds = LL_RTC_TIME_GetSecond(RTC);
|
|
||||||
|
|
||||||
// board.rtc_date.WeekDay = LL_RTC_DATE_GetWeekDay(RTC);
|
HAL_RTC_GetTime(&hrtc, &rtc_time, RTC_FORMAT_BIN);
|
||||||
// board.rtc_date.Day = LL_RTC_DATE_GetDay(RTC);
|
HAL_RTC_GetDate(&hrtc, &rtc_date, RTC_FORMAT_BIN);
|
||||||
// board.rtc_date.Month = LL_RTC_DATE_GetMonth(RTC);
|
|
||||||
// board.rtc_date.Year = LL_RTC_DATE_GetYear(RTC);
|
board.rtc_time.Hours = rtc_time.Hours;
|
||||||
|
board.rtc_time.Minutes = rtc_time.Minutes;
|
||||||
|
board.rtc_time.Seconds = rtc_time.Seconds;
|
||||||
|
|
||||||
|
board.rtc_date.WeekDay = rtc_date.WeekDay;
|
||||||
|
board.rtc_date.Month = rtc_date.Month;
|
||||||
|
board.rtc_date.Date = rtc_date.Date;
|
||||||
|
board.rtc_date.Year = rtc_date.Year;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL rtc_init(void)
|
||||||
|
{
|
||||||
|
uint16_t bkpflag = 0;
|
||||||
|
|
||||||
|
/* 检查是不是第一次配置时钟 */
|
||||||
|
bkpflag = rtc_read_bkr(RTC_BKP_DR0); /* 读取BKP0的值 */
|
||||||
|
|
||||||
|
if ((bkpflag != 0x5050) && (bkpflag != 0x5051)) /* 之前未初始化过, 重新配置 */
|
||||||
|
{
|
||||||
|
rtc_date_t date;
|
||||||
|
rtc_time_t time;
|
||||||
|
date.year = 25;
|
||||||
|
date.month = 1;
|
||||||
|
date.day = 1;
|
||||||
|
date.weekday = get_weekday(date.year, date.month, date.day);
|
||||||
|
time.hour = 0;
|
||||||
|
time.minute = 0;
|
||||||
|
time.second = 0;
|
||||||
|
|
||||||
|
rtc_set_time(time, RTC_HOURFORMAT12_AM); /* 设置时间, 根据实际时间修改 */
|
||||||
|
rtc_set_date(date); /* 设置日期 */
|
||||||
|
|
||||||
|
rtc_write_bkr(RTC_BKP_DR0, 0x5051); /* 写入标记位 */
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -92,10 +138,6 @@ void rtc_update(void)
|
||||||
*/
|
*/
|
||||||
void board_init(void)
|
void board_init(void)
|
||||||
{
|
{
|
||||||
rtc_update();
|
rtc_init();
|
||||||
// if (board.rtc_date.Year == 0)
|
|
||||||
// {
|
|
||||||
// rtc_set_default();
|
|
||||||
// }
|
|
||||||
// sd_test();
|
// sd_test();
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,8 +25,8 @@ typedef enum
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint16_t adc_raw[ADC1_MAX];
|
uint16_t adc_raw[ADC1_MAX];
|
||||||
// LL_RTC_DateTypeDef rtc_date;
|
RTC_DateTypeDef rtc_date;
|
||||||
// LL_RTC_TimeTypeDef rtc_time;
|
RTC_TimeTypeDef rtc_time;
|
||||||
} board_t;
|
} board_t;
|
||||||
|
|
||||||
extern board_t board;
|
extern board_t board;
|
||||||
|
@ -37,8 +37,8 @@ void led_open(led_e led);
|
||||||
void led_close(led_e led);
|
void led_close(led_e led);
|
||||||
void led_toggle(led_e led);
|
void led_toggle(led_e led);
|
||||||
void rtc_update(void);
|
void rtc_update(void);
|
||||||
void rtc_set(rtc_date_t date, rtc_time_t time, uint8_t weekday);
|
BOOL rtc_set_time(rtc_time_t time, uint8_t ampm);
|
||||||
|
BOOL rtc_set_date(rtc_date_t date);
|
||||||
// float32 get_cpu_temperature(void);
|
// float32 get_cpu_temperature(void);
|
||||||
// float32 get_cpu_voltage(void);
|
// float32 get_cpu_voltage(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -67,6 +67,7 @@ typedef struct
|
||||||
uint16_t year;
|
uint16_t year;
|
||||||
uint8_t month;
|
uint8_t month;
|
||||||
uint8_t day;
|
uint8_t day;
|
||||||
|
uint8_t weekday;
|
||||||
} rtc_date_t;
|
} rtc_date_t;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
|
|
|
@ -75,6 +75,8 @@ void sys_msr_msp(uint32_t addr)
|
||||||
*/
|
*/
|
||||||
void sys_standby(void)
|
void sys_standby(void)
|
||||||
{
|
{
|
||||||
|
__HAL_RCC_PWR_CLK_ENABLE(); /* 使能电源时钟 */
|
||||||
|
SET_BIT(PWR->CR, PWR_CR_PDDS); /* 进入待机模式 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -18,15 +18,17 @@ Mcu.IPNb=5
|
||||||
Mcu.Name=STM32F407Z(E-G)Tx
|
Mcu.Name=STM32F407Z(E-G)Tx
|
||||||
Mcu.Package=LQFP144
|
Mcu.Package=LQFP144
|
||||||
Mcu.Pin0=PC13-ANTI_TAMP
|
Mcu.Pin0=PC13-ANTI_TAMP
|
||||||
Mcu.Pin1=PH0-OSC_IN
|
Mcu.Pin1=PC14-OSC32_IN
|
||||||
Mcu.Pin2=PH1-OSC_OUT
|
Mcu.Pin10=VP_SYS_VS_tim6
|
||||||
Mcu.Pin3=PA13
|
Mcu.Pin2=PC15-OSC32_OUT
|
||||||
Mcu.Pin4=PA14
|
Mcu.Pin3=PH0-OSC_IN
|
||||||
Mcu.Pin5=VP_FREERTOS_VS_CMSIS_V1
|
Mcu.Pin4=PH1-OSC_OUT
|
||||||
Mcu.Pin6=VP_RTC_VS_RTC_Activate
|
Mcu.Pin5=PA13
|
||||||
Mcu.Pin7=VP_RTC_VS_RTC_Calendar
|
Mcu.Pin6=PA14
|
||||||
Mcu.Pin8=VP_SYS_VS_tim6
|
Mcu.Pin7=VP_FREERTOS_VS_CMSIS_V1
|
||||||
Mcu.PinsNb=9
|
Mcu.Pin8=VP_RTC_VS_RTC_Activate
|
||||||
|
Mcu.Pin9=VP_RTC_VS_RTC_Calendar
|
||||||
|
Mcu.PinsNb=11
|
||||||
Mcu.ThirdPartyNb=0
|
Mcu.ThirdPartyNb=0
|
||||||
Mcu.UserConstants=
|
Mcu.UserConstants=
|
||||||
Mcu.UserName=STM32F407ZGTx
|
Mcu.UserName=STM32F407ZGTx
|
||||||
|
@ -56,6 +58,10 @@ PA14.Signal=SYS_JTCK-SWCLK
|
||||||
PC13-ANTI_TAMP.GPIOParameters=GPIO_Label
|
PC13-ANTI_TAMP.GPIOParameters=GPIO_Label
|
||||||
PC13-ANTI_TAMP.GPIO_Label=LED_USER
|
PC13-ANTI_TAMP.GPIO_Label=LED_USER
|
||||||
PC13-ANTI_TAMP.Signal=GPIO_Output
|
PC13-ANTI_TAMP.Signal=GPIO_Output
|
||||||
|
PC14-OSC32_IN.Mode=LSE-External-Oscillator
|
||||||
|
PC14-OSC32_IN.Signal=RCC_OSC32_IN
|
||||||
|
PC15-OSC32_OUT.Mode=LSE-External-Oscillator
|
||||||
|
PC15-OSC32_OUT.Signal=RCC_OSC32_OUT
|
||||||
PH0-OSC_IN.Mode=HSE-External-Oscillator
|
PH0-OSC_IN.Mode=HSE-External-Oscillator
|
||||||
PH0-OSC_IN.Signal=RCC_OSC_IN
|
PH0-OSC_IN.Signal=RCC_OSC_IN
|
||||||
PH1-OSC_OUT.Mode=HSE-External-Oscillator
|
PH1-OSC_OUT.Mode=HSE-External-Oscillator
|
||||||
|
@ -108,7 +114,7 @@ RCC.HCLKFreq_Value=168000000
|
||||||
RCC.HSE_VALUE=8000000
|
RCC.HSE_VALUE=8000000
|
||||||
RCC.HSI_VALUE=16000000
|
RCC.HSI_VALUE=16000000
|
||||||
RCC.I2SClocksFreq_Value=192000000
|
RCC.I2SClocksFreq_Value=192000000
|
||||||
RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLM,PLLN,PLLQ,PLLQCLKFreq_Value,PLLSourceVirtual,RCC_RTC_Clock_Source,RCC_RTC_Clock_SourceVirtual,RCC_RTC_Clock_Source_FROM_HSE,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VcooutputI2S
|
RCC.IPParameters=48MHZClocksFreq_Value,AHBFreq_Value,APB1CLKDivider,APB1Freq_Value,APB1TimFreq_Value,APB2CLKDivider,APB2Freq_Value,APB2TimFreq_Value,CortexFreq_Value,EthernetFreq_Value,FCLKCortexFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI_VALUE,I2SClocksFreq_Value,LSI_VALUE,MCO2PinFreq_Value,PLLCLKFreq_Value,PLLM,PLLN,PLLQ,PLLQCLKFreq_Value,PLLSourceVirtual,RCC_RTC_Clock_SourceVirtual,RCC_RTC_Clock_Source_FROM_HSE,RTCFreq_Value,RTCHSEDivFreq_Value,SYSCLKFreq_VALUE,SYSCLKSource,VCOI2SOutputFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value,VcooutputI2S
|
||||||
RCC.LSI_VALUE=32000
|
RCC.LSI_VALUE=32000
|
||||||
RCC.MCO2PinFreq_Value=168000000
|
RCC.MCO2PinFreq_Value=168000000
|
||||||
RCC.PLLCLKFreq_Value=168000000
|
RCC.PLLCLKFreq_Value=168000000
|
||||||
|
@ -117,10 +123,9 @@ RCC.PLLN=168
|
||||||
RCC.PLLQ=7
|
RCC.PLLQ=7
|
||||||
RCC.PLLQCLKFreq_Value=48000000
|
RCC.PLLQCLKFreq_Value=48000000
|
||||||
RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
|
RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
|
||||||
RCC.RCC_RTC_Clock_Source=RCC_RTCCLKSOURCE_HSE_DIV8
|
|
||||||
RCC.RCC_RTC_Clock_SourceVirtual=RCC_RTCCLKSOURCE_LSE
|
RCC.RCC_RTC_Clock_SourceVirtual=RCC_RTCCLKSOURCE_LSE
|
||||||
RCC.RCC_RTC_Clock_Source_FROM_HSE=RCC_RTCCLKSOURCE_HSE_DIV8
|
RCC.RCC_RTC_Clock_Source_FROM_HSE=RCC_RTCCLKSOURCE_HSE_DIV8
|
||||||
RCC.RTCFreq_Value=1000000
|
RCC.RTCFreq_Value=32768
|
||||||
RCC.RTCHSEDivFreq_Value=1000000
|
RCC.RTCHSEDivFreq_Value=1000000
|
||||||
RCC.SYSCLKFreq_VALUE=168000000
|
RCC.SYSCLKFreq_VALUE=168000000
|
||||||
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
|
RCC.SYSCLKSource=RCC_SYSCLKSOURCE_PLLCLK
|
||||||
|
|
Loading…
Reference in New Issue