добавлено моргание диода каждую секунду

This commit is contained in:
2026-04-12 10:56:43 +03:00
parent 76bbd4a539
commit f0f5f625e9
93 changed files with 417 additions and 7068 deletions

View File

@@ -26,10 +26,15 @@ void ClockManager_Init(void) {
}
}
time_t ClockManager_GetTime(void) {
time_t ClockManager_GetTime(int blink) {
HAL_RTC_GetTime(&hrtc, &rtc_time, RTC_FORMAT_BIN);
currentTime.hour = rtc_time.Hours;
currentTime.min = rtc_time.Minutes;
if(blink)
{
if(currentTime.sec != rtc_time.Seconds)
HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
}
currentTime.sec = rtc_time.Seconds;
return currentTime;
}

View File

@@ -9,7 +9,7 @@
void ClockManager_Init(void);
// Получить текущее время из RTC
time_t ClockManager_GetTime(void);
time_t ClockManager_GetTime(int blink);
// Установить время в RTC
void ClockManager_SetTime(uint8_t hour, uint8_t min, uint8_t sec);

View File

@@ -71,7 +71,7 @@ static void FormatTime(char* buf, const time_t* t) {
static void UpdateDisplay(void) {
switch (menu.state) {
case STATE_CLOCK: {
time_t now = ClockManager_GetTime();
time_t now = ClockManager_GetTime(1);
char buf[7];
FormatTime(buf, &now);
Segment_SetString(buf);
@@ -251,7 +251,7 @@ static void ProcessButton(Button_Type btn, bool longPress) {
switch (menu.selectedMenuItem) {
case MAIN_MENU_SET_TIME:
menu.state = STATE_SET_TIME;
menu.originalTime = ClockManager_GetTime();
menu.originalTime = ClockManager_GetTime(0);
menu.editTime = menu.originalTime;
menu.editStep = 0;
menu.blinkState = true;

View File

@@ -62,6 +62,8 @@ void Error_Handler(void);
/* USER CODE END EFP */
/* Private defines -----------------------------------------------------------*/
#define LED_Pin GPIO_PIN_13
#define LED_GPIO_Port GPIOC
#define DIGIT_HOUR_H_Pin GPIO_PIN_0
#define DIGIT_HOUR_H_GPIO_Port GPIOA
#define DIGIT_HOUR_L_Pin GPIO_PIN_1

View File

@@ -55,6 +55,7 @@ void SVC_Handler(void);
void DebugMon_Handler(void);
void PendSV_Handler(void);
void SysTick_Handler(void);
void RTC_IRQHandler(void);
void TIM2_IRQHandler(void);
/* USER CODE BEGIN EFP */

View File

@@ -50,6 +50,9 @@ void MX_GPIO_Init(void)
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(LED_GPIO_Port, LED_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOA, DIGIT_HOUR_H_Pin|DIGIT_HOUR_L_Pin|DIGIT_MIN_H_Pin|DIGIT_MIN_L_Pin
|DIGIT_SEC_H_Pin|DIGIT_SEC_L_Pin, GPIO_PIN_RESET);
@@ -58,6 +61,13 @@ void MX_GPIO_Init(void)
HAL_GPIO_WritePin(GPIOB, SEGMENT_A_Pin|SEGMENT_C_Pin|SEGMENT_B_Pin|SEGMENT_D_Pin
|SEGMENT_E_Pin|SEGMENT_F_Pin|SEGMENT_G_Pin, GPIO_PIN_RESET);
/*Configure GPIO pin : PtPin */
GPIO_InitStruct.Pin = LED_Pin;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(LED_GPIO_Port, &GPIO_InitStruct);
/*Configure GPIO pins : PAPin PAPin PAPin PAPin
PAPin PAPin */
GPIO_InitStruct.Pin = DIGIT_HOUR_H_Pin|DIGIT_HOUR_L_Pin|DIGIT_MIN_H_Pin|DIGIT_MIN_L_Pin

View File

@@ -42,7 +42,7 @@ void MX_RTC_Init(void)
*/
hrtc.Instance = RTC;
hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND;
hrtc.Init.OutPut = RTC_OUTPUTSOURCE_ALARM;
hrtc.Init.OutPut = RTC_OUTPUTSOURCE_NONE;
if (HAL_RTC_Init(&hrtc) != HAL_OK)
{
Error_Handler();
@@ -66,6 +66,10 @@ void HAL_RTC_MspInit(RTC_HandleTypeDef* rtcHandle)
__HAL_RCC_BKP_CLK_ENABLE();
/* RTC clock enable */
__HAL_RCC_RTC_ENABLE();
/* RTC interrupt Init */
HAL_NVIC_SetPriority(RTC_IRQn, 0, 0);
HAL_NVIC_EnableIRQ(RTC_IRQn);
/* USER CODE BEGIN RTC_MspInit 1 */
/* USER CODE END RTC_MspInit 1 */
@@ -82,6 +86,9 @@ void HAL_RTC_MspDeInit(RTC_HandleTypeDef* rtcHandle)
/* USER CODE END RTC_MspDeInit 0 */
/* Peripheral clock disable */
__HAL_RCC_RTC_DISABLE();
/* RTC interrupt Deinit */
HAL_NVIC_DisableIRQ(RTC_IRQn);
/* USER CODE BEGIN RTC_MspDeInit 1 */
/* USER CODE END RTC_MspDeInit 1 */

View File

@@ -56,6 +56,7 @@
/* USER CODE END 0 */
/* External variables --------------------------------------------------------*/
extern RTC_HandleTypeDef hrtc;
extern TIM_HandleTypeDef htim2;
/* USER CODE BEGIN EV */
@@ -199,6 +200,20 @@ void SysTick_Handler(void)
/* please refer to the startup file (startup_stm32f1xx.s). */
/******************************************************************************/
/**
* @brief This function handles RTC global interrupt.
*/
void RTC_IRQHandler(void)
{
/* USER CODE BEGIN RTC_IRQn 0 */
/* USER CODE END RTC_IRQn 0 */
HAL_RTCEx_RTCIRQHandler(&hrtc);
/* USER CODE BEGIN RTC_IRQn 1 */
/* USER CODE END RTC_IRQn 1 */
}
/**
* @brief This function handles TIM2 global interrupt.
*/