добавлено моргание диода каждую секунду
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 */
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user