Laridium_v49/Core/Inc/main.h
2024-10-09 23:15:27 +05:30

227 lines
5.3 KiB
C

/* USER CODE BEGIN Header */
/**
******************************************************************************
* @file : main.h
* @brief : Header for main.c file.
* This file contains the common defines of the application.
******************************************************************************
* @attention
*
* Copyright (c) 2023 STMicroelectronics.
* All rights reserved.
*
* This software is licensed under terms that can be found in the LICENSE file
* in the root directory of this software component.
* If no LICENSE file comes with this software, it is provided AS-IS.
*
******************************************************************************
*/
/* USER CODE END Header */
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __MAIN_H
#define __MAIN_H
#ifdef __cplusplus
extern "C" {
#endif
/* Includes ------------------------------------------------------------------*/
#include "stm32f4xx_hal.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include <stdbool.h>
/* USER CODE END Includes */
/* Exported types ------------------------------------------------------------*/
/* USER CODE BEGIN ET */
/* USER CODE END ET */
/* Exported constants --------------------------------------------------------*/
/* USER CODE BEGIN EC */
/* USER CODE END EC */
/* Exported macro ------------------------------------------------------------*/
/* USER CODE BEGIN EM */
/* USER CODE END EM */
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
/* Exported functions prototypes ---------------------------------------------*/
void Error_Handler(void);
/* USER CODE BEGIN EFP */
/* USER CODE END EFP */
/* Private defines -----------------------------------------------------------*/
#define TEMP_Pin GPIO_PIN_1
#define TEMP_GPIO_Port GPIOC
#define DC_Pin GPIO_PIN_2
#define DC_GPIO_Port GPIOA
#define RESET_Pin GPIO_PIN_3
#define RESET_GPIO_Port GPIOA
#define SPI1_NSS_Pin GPIO_PIN_4
#define SPI1_NSS_GPIO_Port GPIOA
#define T_CS_Pin GPIO_PIN_5
#define T_CS_GPIO_Port GPIOC
#define T_IRQ_Pin GPIO_PIN_0
#define T_IRQ_GPIO_Port GPIOB
#define T_IRQ_EXTI_IRQn EXTI0_IRQn
#define TFT_BRIHTNESS_Pin GPIO_PIN_9
#define TFT_BRIHTNESS_GPIO_Port GPIOE
#define BUZZER_Pin GPIO_PIN_11
#define BUZZER_GPIO_Port GPIOE
#define BTN_Pin GPIO_PIN_8
#define BTN_GPIO_Port GPIOC
#define BTN_EXTI_IRQn EXTI9_5_IRQn
#define MOTOR_PWM2_Pin GPIO_PIN_6
#define MOTOR_PWM2_GPIO_Port GPIOB
#define MOTOR_PWM1_Pin GPIO_PIN_7
#define MOTOR_PWM1_GPIO_Port GPIOB
#define TOGGLE_LED_Pin GPIO_PIN_8
#define TOGGLE_LED_GPIO_Port GPIOB
/* USER CODE BEGIN Private defines */
#define ON 1
#define OFF 0
#define CLOCKWISE 1
#define COUNTERCLOCKWISE 0
#define PAUSE 2
#define RPM_MAX 10
#define LED_BRIGHTNESS_MAX 10
#define DISP_BRIGHTNESS_MAX 10
#define VOLUME_MAX 1
#define MODE_MAX 3
#define SLEEP_TIME (300000) // unit: ms
#define VOLTIMELINE 50
#define LONG_PRESS_TIME_X_150MS 10
#define PAUSE_TIME_S 1
#define TIME_TO_UPD_FLASH_AFTER_CHANGE_MS 10000
#define CLR_ACTIVE 128, 128, 128
#define CLR_UNSELECTED 253, 253, 253//0, 0, 0
#define CLR_SELECTED 6, 124, 62
typedef enum {
BTN_RELASED,
BTN_PRESS,
BTN_LONG_PRESS
} btn_status_t;
typedef enum
{
HOME = 0,
HOME_START,
HOME_SETTING,
HOME_BUZ,
HOME_LED,
HOME_RPM,
HOME_RPM_SET,
SETTING_PAGE,
SETTING_BACK,
SETTING_RUNTIME,
SETTING_RUNTIME_MIN_SET,
SETTING_RUNTIME_SEC_SET,
SETTING_UNIT,
SETTING_UNIT_SET,
SETTING_RPM,
SETTING_RPM_SET,
SETTING_PATTERN,
SETTING_PATTERN_SET,
SETTING_LIGHT_BRIGHTNESS,
SETTING_LIGHT_BRIGHTNESS_SET,
SETTING_DISP_BRIGHTNESS,
SETTING_DISP_BRIGHTNESS_SET,
SETTING_DISP_TIMEOUT,
SETTING_DISP_TIMEOUT_SET,
SETTING_BUZ_VOLUME,
SETTING_BUZ_VOLUME_SET,
}SCREEN_STATE;
typedef enum
{
FLASH_STATUS = 0,
LED_STATUS,
BUZ_STATUS,
RUN_MIN,
RUN_SEC,
TEMP_UNIT,
RPM_VAL,
MODE_NUM,
LIGHT_BRIGHT,
SCREEN_BRIGHT,
SLEEP_STATUS,
BUZ_VOLUME,
}FLASH_DATA;
typedef enum {
MOTOR_STOP,
MOTOR_RUN,
MOTOR_PAUSE
} motor_status_t;
typedef struct
{
SCREEN_STATE disp_status;
bool led_status;
bool buz_status;
motor_status_t motor_status;
uint8_t runtime_min;
uint8_t runtime_sec;
char uint_type;
uint16_t rpm;
uint8_t pattern;
uint8_t light_brightness;
uint8_t screen_brightness;
uint8_t screen_timeout;
uint8_t buzzer_volume;
uint8_t disp_runtime_min;
uint8_t disp_runtime_sec;
float temp_val;
uint32_t none;
}SCREEN_Buf;
typedef struct{
uint8_t dir;
uint8_t timeline;
}M_Node;
typedef struct{
uint8_t node_len;
M_Node node[10];
}MOTOR_Hash_Map;
void Init_DISP_Para(void);
void Init_Pattern(void);
void Motor_Set_Func(uint8_t dir, uint16_t speed_val);
void RunMotorCycle(uint8_t pattern, uint16_t speed);
void Sound_Set_Func(bool status, uint8_t volume, uint16_t timeline);
void LED_Set_Func(bool status, uint8_t light_val);
void TFT_Set_Func(uint8_t brightness);
void SleepMode_Func(bool sleep, uint8_t brightness);
//void TFT_Brightness_Setting(uint8_t value);
//void SleepMode_Func(void);
void Temp_Correction_Func(void);
void FLASH_Update(void);
/* USER CODE END Private defines */
#ifdef __cplusplus
}
#endif
#endif /* __MAIN_H */