forked from achamaikin/CCSModuleSW30Web
latest version
This commit is contained in:
BIN
Core/Inc/.DS_Store
vendored
BIN
Core/Inc/.DS_Store
vendored
Binary file not shown.
@@ -11,10 +11,16 @@
|
||||
void GBT_Lock(uint8_t state);
|
||||
|
||||
typedef enum{
|
||||
RELAY_AUX,
|
||||
RELAY_AUX0 = 0,
|
||||
RELAY_AUX1,
|
||||
RELAY3,
|
||||
RELAY_DC,
|
||||
RELAY_AC,
|
||||
RELAY_CC,
|
||||
|
||||
}relay_t;
|
||||
RELAY_DC1,
|
||||
//
|
||||
RELAY_COUNT
|
||||
} relay_t;
|
||||
|
||||
void RELAY_Write(relay_t num, uint8_t state);
|
||||
void Init_Peripheral();
|
||||
@@ -24,5 +30,30 @@ uint8_t SW_GetAddr();
|
||||
void ADC_Select_Channel(uint32_t ch);
|
||||
int16_t GBT_ReadTemp(uint8_t ch);
|
||||
|
||||
typedef enum{
|
||||
IN_SW0 = 0,
|
||||
IN_SW1,
|
||||
IN0,
|
||||
IN_ESTOP,
|
||||
IN_FB1,
|
||||
IN_CONT_FB_DC,
|
||||
ISO_IN,
|
||||
} inputNum_t;
|
||||
|
||||
uint8_t IN_ReadInput(inputNum_t input_n);
|
||||
|
||||
// Версия устройства
|
||||
#define VERSION_OFFSET (0x1E4)
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint32_t serialNumber; // Байты 0-3: серийный номер станции (little-endian)
|
||||
uint8_t stationType; // Байт 4: тип станции
|
||||
uint8_t boardVersion; // Байт 5: версия платы
|
||||
uint8_t addrEdcan; // Байт 6: адрес EDCAN
|
||||
uint8_t reserved[57]; // Байты 7-63: зарезервированы
|
||||
} InfoBlock_t;
|
||||
|
||||
extern InfoBlock_t *InfoBlock;
|
||||
|
||||
|
||||
#endif /* SRC_BOARD_H_ */
|
||||
|
||||
13
Core/Inc/charger_config.h
Executable file
13
Core/Inc/charger_config.h
Executable file
@@ -0,0 +1,13 @@
|
||||
#pragma once
|
||||
#include "main.h"
|
||||
|
||||
#define PSU_MAX_VOLTAGE 1000 //1V/bit
|
||||
#define PSU_MIN_VOLTAGE 150 //1V/bit
|
||||
#define PSU_MAX_CURRENT 100 //1A/bit
|
||||
#define PSU_MIN_CURRENT 1 //1A/bit
|
||||
#define PSU_MAX_POWER 30000 //1W/bit
|
||||
|
||||
#define PSU_NUM 1
|
||||
|
||||
#define GBT_CH_VER_MAJOR 1
|
||||
#define GBT_CH_VER_MINOR 0
|
||||
98
Core/Inc/charger_control.h
Executable file
98
Core/Inc/charger_control.h
Executable file
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
* charger_control.h
|
||||
*
|
||||
* Created on: Jul 29, 2024
|
||||
* Author: colorbass
|
||||
*/
|
||||
|
||||
#ifndef INC_CHARGER_CONTROL_H_
|
||||
#define INC_CHARGER_CONTROL_H_
|
||||
|
||||
#include "main.h"
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
// Статус
|
||||
// статус подключения к автомобилю
|
||||
|
||||
typedef enum __attribute__((packed)) {
|
||||
Unknown,
|
||||
Unplugged,
|
||||
Disabled,
|
||||
Preparing,
|
||||
AuthRequired,
|
||||
WaitingForEnergy,
|
||||
ChargingPausedEV,
|
||||
ChargingPausedEVSE,
|
||||
Charging,
|
||||
AuthTimeout,
|
||||
Finished,
|
||||
FinishedEVSE,
|
||||
FinishedEV,
|
||||
Replugging
|
||||
} CONN_State_t;
|
||||
|
||||
// Управление
|
||||
// Разрешение на зарядку
|
||||
|
||||
typedef enum __attribute__((packed)){
|
||||
CMD_NONE = 0,
|
||||
CMD_STOP = 1,
|
||||
CMD_START = 2,
|
||||
CMD_FORCE_UNLOCK = 3,
|
||||
CMD_REPLUG = 4,
|
||||
} CONN_Control_t;
|
||||
|
||||
typedef enum __attribute__((packed)){
|
||||
CONN_NO_ERROR = 0,
|
||||
CONN_ERR_INSULATION = 1, // Утечка тока
|
||||
CONN_ERR_EMERGENCY = 2, // Нажата кнопка аварийной остановки
|
||||
CONN_ERR_DOOR_OPEN = 3, // Открыта дверь
|
||||
CONN_ERR_LOCK = 4, // Ошибка замка
|
||||
CONN_ERR_CONN_TEMP = 5, // Перегрев коннектора
|
||||
CONN_ERR_AC_FAULT = 6, // Нет напряжения сети
|
||||
CONN_ERR_CONTACTOR = 7, // Контактор неисправен
|
||||
CONN_ERR_HOTPLUG = 8, // Коннектор неожиданно отключился
|
||||
CONN_ERR_EV_COMM = 9, // Ошибка протокола связи с электромобилем
|
||||
CONN_ERR_PSU_FAULT = 10, // Ошибка PSU
|
||||
|
||||
}CONN_Error_t;
|
||||
|
||||
typedef struct{
|
||||
CONN_Control_t connControl; //0
|
||||
CONN_State_t connState; //1
|
||||
uint8_t SOC; // State of charge [%] //2
|
||||
uint32_t Power; // Power [W] //3..6
|
||||
uint32_t Energy; // Energy [Wh] //7..10
|
||||
uint32_t RequestedPower; //1W/bit
|
||||
uint16_t RequestedVoltage; //1V/bit
|
||||
uint16_t RequestedCurrent; //0.1A/bit
|
||||
uint16_t MeasuredVoltage; //1V/bit
|
||||
uint16_t MeasuredCurrent; //0.1A/bit
|
||||
uint8_t EnableOutput;
|
||||
uint8_t outputEnabled;
|
||||
int16_t UnmetDemand;
|
||||
uint16_t WantedCurrent; //0.1A/bit
|
||||
CONN_Error_t chargingError; // 0 if okay
|
||||
uint8_t EvConnected;
|
||||
|
||||
} ChargingConnector_t;
|
||||
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
extern ChargingConnector_t CONN;
|
||||
|
||||
//информация о зарядке
|
||||
|
||||
//база данных с хранением инфы
|
||||
//главный блок хранит в себе инфу о конфиге возможно во флеше
|
||||
//либо в charger_config.h
|
||||
//OCPP - универсальный блок типа
|
||||
|
||||
void CONN_Init();
|
||||
void CONN_Loop();
|
||||
|
||||
void CONN_PrintChargingTotal();
|
||||
|
||||
#endif /* INC_CHARGER_CONTROL_H_ */
|
||||
@@ -7,8 +7,11 @@
|
||||
|
||||
#ifndef INC_CHARGER_GBT_H_
|
||||
#define INC_CHARGER_GBT_H_
|
||||
|
||||
#include "main.h"
|
||||
#include "connector.h"
|
||||
#include "charger_control.h"
|
||||
|
||||
|
||||
#define GBT_CST_NO_REASON 0x0000F0F0 // Без причины
|
||||
#define GBT_CST_CONDITION_REACHED 0x0100F0F0 // Заряд завершен
|
||||
@@ -23,6 +26,13 @@
|
||||
#define GBT_CST_CURRENT_MISMATCH 0x0000F0F1 // Неправильный ток
|
||||
#define GBT_CST_ABNORMALVOLTAGEERROR 0x0000F0F4 // Ненормальное напряжение
|
||||
|
||||
typedef enum {
|
||||
GBT_STOP_EVSE = 0,
|
||||
GBT_STOP_EV = 1,
|
||||
GBT_STOP_OCPP = 2,
|
||||
|
||||
}GBT_StopSource_t;
|
||||
|
||||
|
||||
typedef enum{
|
||||
GBT_CC_UNKNOWN,
|
||||
@@ -40,26 +50,23 @@ typedef enum{
|
||||
// GBT_S2_LOCKED = 0x12, //
|
||||
GBT_S3_STARTED = 0x13, // 12V AUX
|
||||
GBT_S31_WAIT_BHM = 0x14, // testing isolation, send CHM receive BHM
|
||||
GBT_S4_ISOTEST = 0x15, // testing isolation, send CHM receive BHM
|
||||
GBT_S5_BAT_INFO = 0x16, // identifying BMS, send CRM receive BRM (long)
|
||||
GBT_S6_BAT_STAT = 0x17, // send CRM(AA), receive BCP (long)
|
||||
GBT_S7_BMS_WAIT = 0x18, // wait for BMS, send CTS+CML receive BRO(00), next BRO(AA)
|
||||
GBT_S8_INIT_CHARGER = 0x19,// starting power modules, send CRO(00)
|
||||
GBT_S9_WAIT_BCL = 0x20, // waiting for BCL (requested voltage), send CRO(00)
|
||||
GBT_S10_CHARGING = 0x21, // charging, contactor ON, send CCS, receiving BCL+BCS+BSM
|
||||
GBT_STOP = 0x22, // normal stop
|
||||
GBT_STOP_CSD = 0x23, // normal stop
|
||||
GBT_ERROR = 0x24, // Error
|
||||
GBT_COMPLETE = 0x25,
|
||||
GBT_S4_WAIT_PSU_READY = 0x15, // wait for PSU to be ready
|
||||
GBT_S4_WAIT_PSU_ON = 0x16, // PSU is on, wait for isolation test
|
||||
GBT_S4_ISOTEST = 0x17, // testing isolation, send CHM receive BHM
|
||||
GBT_S4_WAIT_PSU_OFF = 0x18, // PSU is off, wait for battery info
|
||||
GBT_S5_BAT_INFO = 0x19, // identifying BMS, send CRM receive BRM (long)
|
||||
GBT_S6_BAT_STAT = 0x1A, // send CRM(AA), receive BCP (long)
|
||||
GBT_S7_BMS_WAIT = 0x1B, // wait for BMS, send CTS+CML receive BRO(00), next BRO(AA)
|
||||
GBT_S8_INIT_CHARGER = 0x1C,// starting power modules, send CRO(00)
|
||||
GBT_S9_WAIT_BCL = 0x1D, // waiting for BCL (requested voltage), send CRO(00)
|
||||
GBT_S10_CHARGING = 0x1E, // charging, contactor ON, send CCS, receiving BCL+BCS+BSM
|
||||
GBT_STOP = 0x1F, // normal stop
|
||||
GBT_STOP_CSD = 0x20, // normal stop
|
||||
GBT_ERROR = 0x21, // Error
|
||||
GBT_COMPLETE = 0x22,
|
||||
|
||||
}gbtState_t;
|
||||
|
||||
typedef enum __attribute__((packed)){
|
||||
GBT_ERR_OKAY = 0,
|
||||
GBT_ERR_INSULATION = 1,
|
||||
|
||||
}GBT_Error_t;
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
typedef struct {
|
||||
@@ -154,32 +161,6 @@ typedef struct {
|
||||
}GBT_CSD_t;
|
||||
|
||||
|
||||
typedef struct {
|
||||
uint8_t enablePSU;
|
||||
uint16_t requestedVoltage; // 0.1V/bit
|
||||
uint16_t requestedCurrent; // 0.1A/bit
|
||||
uint8_t chargingMode; // 0x01 - CV, 0x02 - CC
|
||||
uint8_t chargingPercentage; //
|
||||
uint16_t chargingRemainingTimeMin; //
|
||||
uint16_t chargingElapsedTimeMin; //
|
||||
uint8_t chargingElapsedTimeSec; //
|
||||
|
||||
CONN_State_t connectorState;
|
||||
|
||||
|
||||
}GBT_EDCAN_Output_t;
|
||||
|
||||
typedef struct {
|
||||
uint8_t PSU_Status;
|
||||
uint16_t measuredVoltage; // 0.1V/bit
|
||||
uint16_t measuredCurrent; // 0.1A/bit
|
||||
|
||||
CONN_Control_t chargeControl;
|
||||
GBT_Error_t chargingError; // 0 if okay
|
||||
|
||||
}GBT_EDCAN_Input_t;
|
||||
|
||||
|
||||
/* 500 - Power Supply
|
||||
TX
|
||||
* PSU_ENABLE
|
||||
@@ -223,10 +204,15 @@ extern uint8_t GBT_BRO;
|
||||
|
||||
extern uint8_t GBT_Charger_Enable;
|
||||
|
||||
extern GBT_StopSource_t GBT_StopSource;
|
||||
|
||||
void GBT_Init();
|
||||
void GBT_Start();
|
||||
void GBT_Reset();
|
||||
void GBT_Stop(uint32_t causecode);
|
||||
//void GBT_Stop(uint32_t causecode);
|
||||
void GBT_StopEV(uint32_t causecode);
|
||||
void GBT_StopEVSE(uint32_t causecode);
|
||||
void GBT_StopOCPP(uint32_t causecode);
|
||||
void GBT_ForceStop();
|
||||
void GBT_ChargerTask();
|
||||
void GBT_Error(uint32_t errorcode);
|
||||
@@ -249,6 +235,4 @@ void GBT_SendCHM();
|
||||
void GBT_SendCRM(uint8_t state);
|
||||
void GBT_SendCSD();
|
||||
void GBT_SendCEM(uint32_t ErrorCode);
|
||||
|
||||
|
||||
#endif /* INC_CHARGER_GBT_H_ */
|
||||
|
||||
@@ -10,33 +10,8 @@
|
||||
|
||||
#include "main.h"
|
||||
|
||||
|
||||
|
||||
// Статус
|
||||
// статус подключения к автомобилю
|
||||
|
||||
typedef enum __attribute__((packed)) {
|
||||
CONN_Initializing = 1,
|
||||
CONN_Faulted = 2,
|
||||
CONN_Available = 3,
|
||||
CONN_Preparing = 4,// to charge
|
||||
CONN_Charging = 5,
|
||||
CONN_Finishing = 6,//, waiting to disconnect
|
||||
CONN_Suspended_EV = 7,
|
||||
CONN_Suspended_EVSE = 8,
|
||||
//Reserved
|
||||
} CONN_State_t;
|
||||
|
||||
// Управление
|
||||
// Разрешение на зарядку
|
||||
|
||||
typedef enum __attribute__((packed)) {
|
||||
CHARGING_NOT_ALLOWED = 1,
|
||||
CHARGING_ALLOWED = 2,
|
||||
FORCE_UNLOCK = 3,
|
||||
|
||||
} CONN_Control_t;
|
||||
#include "charger_gbt.h"
|
||||
#include "charger_control.h"
|
||||
|
||||
|
||||
extern CONN_State_t connectorState;
|
||||
|
||||
52
Core/Inc/crc.h
Normal file
52
Core/Inc/crc.h
Normal file
@@ -0,0 +1,52 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file crc.h
|
||||
* @brief This file contains all the function prototypes for
|
||||
* the crc.c file
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2025 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 __CRC_H__
|
||||
#define __CRC_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "main.h"
|
||||
|
||||
/* USER CODE BEGIN Includes */
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
extern CRC_HandleTypeDef hcrc;
|
||||
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
/* USER CODE END Private defines */
|
||||
|
||||
void MX_CRC_Init(void);
|
||||
|
||||
/* USER CODE BEGIN Prototypes */
|
||||
|
||||
/* USER CODE END Prototypes */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __CRC_H__ */
|
||||
|
||||
@@ -8,9 +8,27 @@
|
||||
#ifndef SRC_DEBUG_H_
|
||||
#define SRC_DEBUG_H_
|
||||
|
||||
void debug_task();
|
||||
void debug_init();
|
||||
void debug_rx_interrupt(UART_HandleTypeDef *huart, uint16_t Size);
|
||||
#include <stdint.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
typedef enum {
|
||||
LOG_EMERG = 1,
|
||||
LOG_ALERT = 2,
|
||||
LOG_CRIT = 3,
|
||||
LOG_ERR = 4,
|
||||
LOG_WARN = 5,
|
||||
LOG_NOTICE = 6,
|
||||
LOG_INFO = 7,
|
||||
LOG_DEBUG = 8,
|
||||
} LogLevel_t;
|
||||
|
||||
|
||||
// Функции для работы с кольцевым буфером отладочных сообщений
|
||||
void debug_buffer_add(const uint8_t* data, uint16_t len);
|
||||
uint16_t debug_buffer_available(void);
|
||||
void debug_buffer_send(void);
|
||||
|
||||
// Кастомный printf с приоритетом лога
|
||||
int log_printf(LogLevel_t level, const char *format, ...);
|
||||
|
||||
#endif /* SRC_DEBUG_H_ */
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
#ifndef EDCAN_CONFIG_H
|
||||
#define EDCAN_CONFIG_H
|
||||
|
||||
#define DEVICE_ID 0x20
|
||||
#define FWVER 1
|
||||
|
||||
//если используется STM32 с одним каном
|
||||
//#define ED_CANx
|
||||
//extern CAN_HandleTypeDef hcan;
|
||||
//#define ED_CAN_INSTANCE hcan
|
||||
|
||||
//если используется CAN1 на STM32 с двумя канами
|
||||
//#define ED_CAN1
|
||||
//extern CAN_HandleTypeDef hcan1;
|
||||
//#define ED_CAN_INSTANCE hcan1
|
||||
|
||||
//если используется CAN2 на STM32 с двумя канами
|
||||
#define ED_CAN2
|
||||
extern CAN_HandleTypeDef hcan2;
|
||||
#define ED_CAN_INSTANCE hcan2
|
||||
|
||||
//можно уменьшать для уменьшения объема потребляемой памяти
|
||||
#define BUFFER_SIZE 256
|
||||
|
||||
#endif //EDCAN_CONFIG_H
|
||||
@@ -13,14 +13,21 @@
|
||||
|
||||
|
||||
void GBT_Lock(uint8_t state);
|
||||
void GBT_ManageLock();
|
||||
void GBT_ManageLockSolenoid();
|
||||
void GBT_ManageLockMotor();
|
||||
uint8_t GBT_LockGetState();
|
||||
void GBT_ForceLock(uint8_t state);
|
||||
void GBT_ResetErrorTimeout();
|
||||
|
||||
typedef struct {
|
||||
// uint8_t state;
|
||||
uint8_t demand;
|
||||
uint8_t error;
|
||||
uint8_t action_requested; // 0 = unlock, 1 = lock, 255 = no action
|
||||
uint8_t motor_state; // 0 = idle, 1 = motor_on, 2 = waiting_off
|
||||
uint32_t last_action_time; // время последнего изменения состояния мотора
|
||||
uint8_t retry_count; // счетчик попыток
|
||||
uint32_t error_tick; // время установки ошибки (для таймаута сброса)
|
||||
} GBT_LockState_t;
|
||||
|
||||
extern GBT_LockState_t GBT_LockState;
|
||||
|
||||
46
Core/Inc/main.h
Executable file → Normal file
46
Core/Inc/main.h
Executable file → Normal file
@@ -41,7 +41,9 @@ extern "C" {
|
||||
|
||||
/* Exported constants --------------------------------------------------------*/
|
||||
/* USER CODE BEGIN EC */
|
||||
|
||||
#define FW_VERSION_MAJOR 0x01
|
||||
#define FW_VERSION_MINOR 0x00
|
||||
#define FW_VERSION_PATCH 0x01
|
||||
/* USER CODE END EC */
|
||||
|
||||
/* Exported macro ------------------------------------------------------------*/
|
||||
@@ -57,8 +59,10 @@ void Error_Handler(void);
|
||||
/* USER CODE END EFP */
|
||||
|
||||
/* Private defines -----------------------------------------------------------*/
|
||||
#define ADC_CC1_Pin GPIO_PIN_6
|
||||
#define ADC_CC1_GPIO_Port GPIOA
|
||||
#define IN_SW0_Pin GPIO_PIN_1
|
||||
#define IN_SW0_GPIO_Port GPIOA
|
||||
#define IN_SW1_Pin GPIO_PIN_2
|
||||
#define IN_SW1_GPIO_Port GPIOA
|
||||
#define LOCK_A_Pin GPIO_PIN_4
|
||||
#define LOCK_A_GPIO_Port GPIOC
|
||||
#define LOCK_B_Pin GPIO_PIN_5
|
||||
@@ -67,18 +71,36 @@ void Error_Handler(void);
|
||||
#define ADC_NTC1_GPIO_Port GPIOB
|
||||
#define ADC_NTC2_Pin GPIO_PIN_1
|
||||
#define ADC_NTC2_GPIO_Port GPIOB
|
||||
#define LOCK_FB_Pin GPIO_PIN_9
|
||||
#define LOCK_FB_GPIO_Port GPIOE
|
||||
#define ADDR_0_Pin GPIO_PIN_10
|
||||
#define ADDR_0_GPIO_Port GPIOE
|
||||
#define ADDR_1_Pin GPIO_PIN_11
|
||||
#define ADDR_1_GPIO_Port GPIOE
|
||||
#define IN0_Pin GPIO_PIN_7
|
||||
#define IN0_GPIO_Port GPIOE
|
||||
#define RELAY1_Pin GPIO_PIN_8
|
||||
#define RELAY1_GPIO_Port GPIOE
|
||||
#define RELAY2_Pin GPIO_PIN_9
|
||||
#define RELAY2_GPIO_Port GPIOE
|
||||
#define RELAY3_Pin GPIO_PIN_10
|
||||
#define RELAY3_GPIO_Port GPIOE
|
||||
#define RELAY4_Pin GPIO_PIN_11
|
||||
#define RELAY4_GPIO_Port GPIOE
|
||||
#define RELAY5_Pin GPIO_PIN_12
|
||||
#define RELAY5_GPIO_Port GPIOE
|
||||
#define AC_OK_Pin GPIO_PIN_14
|
||||
#define AC_OK_GPIO_Port GPIOE
|
||||
#define RELAY_CC_Pin GPIO_PIN_15
|
||||
#define RELAY_CC_GPIO_Port GPIOE
|
||||
#define RELAY_CC_GPIO_Port GPIOA
|
||||
#define RELAY_DC_Pin GPIO_PIN_3
|
||||
#define RELAY_DC_GPIO_Port GPIOD
|
||||
#define USART2_DIR_Pin GPIO_PIN_4
|
||||
#define USART2_DIR_GPIO_Port GPIOD
|
||||
#define RELAY_AUX_Pin GPIO_PIN_4
|
||||
#define RELAY_AUX_GPIO_Port GPIOB
|
||||
#define IN_ESTOP_Pin GPIO_PIN_7
|
||||
#define IN_ESTOP_GPIO_Port GPIOD
|
||||
#define IN_FB2_Pin GPIO_PIN_3
|
||||
#define IN_FB2_GPIO_Port GPIOB
|
||||
#define IN_FB1_Pin GPIO_PIN_4
|
||||
#define IN_FB1_GPIO_Port GPIOB
|
||||
#define EE_WP_Pin GPIO_PIN_7
|
||||
#define EE_WP_GPIO_Port GPIOB
|
||||
#define ISO_IN_Pin GPIO_PIN_1
|
||||
#define ISO_IN_GPIO_Port GPIOE
|
||||
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
|
||||
31
Core/Inc/meter.h
Executable file
31
Core/Inc/meter.h
Executable file
@@ -0,0 +1,31 @@
|
||||
/*
|
||||
* psu_struct.h
|
||||
*
|
||||
* Created on: Jul 24, 2024
|
||||
* Author: colorbass
|
||||
*/
|
||||
|
||||
#ifndef INC_METER_H_
|
||||
#define INC_METER_H_
|
||||
|
||||
#include "main.h"
|
||||
#include "charger_config.h"
|
||||
|
||||
|
||||
typedef struct {
|
||||
uint32_t meterLastTick; // Время последнего пакета Alive
|
||||
uint8_t online;
|
||||
uint32_t lastTick; // Время последнего вызова для каждого коннектора
|
||||
uint64_t EnergyPSU_Ws; // Энергия для каждого коннектора (расчет по силовым модулям)
|
||||
uint32_t AbsoluteEnergy; // Абсолютная энергия каждого счетчика (ватт*час)
|
||||
uint32_t EnergyOffset; // смещение энергии по счетчикам (если 0, значит не успели захватить Offset) (ватт*час)
|
||||
uint32_t EnergyOffset1; // смещение энергии по счетчикам относительно PSU
|
||||
|
||||
uint8_t enable; //если 0, то счетчик обнуляется
|
||||
}METER_t;
|
||||
|
||||
extern METER_t METER;
|
||||
|
||||
void METER_CalculateEnergy();
|
||||
|
||||
#endif /* INC_METER_H_ */
|
||||
196
Core/Inc/psu_control.h
Executable file
196
Core/Inc/psu_control.h
Executable file
@@ -0,0 +1,196 @@
|
||||
/*
|
||||
* ccs_control.h
|
||||
*
|
||||
* Created on: 19 авг. 2024 г.
|
||||
* Author: colorbass
|
||||
*/
|
||||
|
||||
#ifndef INC_PSU_CONTROL_H_
|
||||
#define INC_PSU_CONTROL_H_
|
||||
|
||||
#include "main.h"
|
||||
#include "charger_config.h"
|
||||
|
||||
void PSU_Init();
|
||||
void PSU_Enable(uint8_t addr, uint8_t enable);
|
||||
void PSU_Loop();
|
||||
void CONT_Loop();
|
||||
|
||||
// --- Состояние силового модуля (DC30, один PSU) ---
|
||||
|
||||
typedef enum{
|
||||
PSU_UNREADY, // отключен, не готов к использованию
|
||||
PSU_INITIALIZING, // инициализация модуля
|
||||
PSU_READY, // отключен, готов к использованию
|
||||
PSU_WAIT_ACK_ON, // ждём подтверждение включения модуля (напряжение выше порога)
|
||||
PSU_CONT_WAIT_ACK_ON, // включаем DC-контактор и ждём подтверждение
|
||||
PSU_CONNECTED, // модуль включён, DC-контактор замкнут
|
||||
PSU_CURRENT_DROP, // снижение тока перед отключением
|
||||
PSU_WAIT_ACK_OFF, // ждём подтверждение выключения модуля (напряжение ниже порога)
|
||||
PSU_CONT_WAIT_ACK_OFF, // выключаем DC-контактор и ждём подтверждение
|
||||
PSU_OFF_PAUSE, // пауза после выключения модуля
|
||||
} PSU_State_t;
|
||||
|
||||
/* Status0 (состояние модуля N, таблица 0 — modularForm0) */
|
||||
typedef struct{
|
||||
/* Bit0 */ uint8_t shortCircuitFault:1; /* 1: короткое замыкание на выходе */
|
||||
/* Bit1 */ uint8_t unevenFlowAlarm:1; /* 1: перекос/неравномерность распределения тока между модулями */
|
||||
/* Bit2 */ uint8_t internalCommunicationFault:1; /* 1: внутренняя ошибка связи модуля */
|
||||
/* Bit3 */ uint8_t inputBusLineFault:1; /* 1: авария по входу или по шине постоянного тока */
|
||||
/* Bit4 */ uint8_t lockProtection:1; /* 1: защита с защёлкой (латч, блокировка до сброса) */
|
||||
/* Bit5 */ uint8_t dischargeFault:1; /* 1: неисправность цепи разряда (bleeder/разрядный резистор) */
|
||||
/* Bit6 */ uint8_t eepromFault:1; /* 1: ошибка/неисправность EEPROM */
|
||||
/* Bit7 */ uint8_t rsvd_s0:1; /* зарезервировано */
|
||||
} PSU_Status0_t;
|
||||
|
||||
/* Status1 (состояние модуля N, таблица 1 — modularForm1) */
|
||||
typedef struct{
|
||||
/* Bit0 */ uint8_t dcSideOffStatus:1; /* 1: отключена сторона постоянного тока (DC-выход) */
|
||||
/* Bit1 */ uint8_t moduleFaultAlarm:1; /* 1: общая авария модуля */
|
||||
/* Bit2 */ uint8_t moduleProtectionAlarm:1; /* 1: сработала защита модуля */
|
||||
/* Bit3 */ uint8_t fanFaultAlarm:1; /* 1: авария вентилятора */
|
||||
/* Bit4 */ uint8_t overTempAlarm:1; /* 1: перегрев модуля */
|
||||
/* Bit5 */ uint8_t outputOverVoltageAlarm:1; /* 1: перенапряжение на выходе */
|
||||
/* Bit6 */ uint8_t outputOverCurrentAlarm:1; /* 1: сверхток на выходе */
|
||||
/* Bit7 */ uint8_t canCommunicationInterruptAlarm:1; /* 1: нарушение связи по CAN */
|
||||
} PSU_Status1_t;
|
||||
|
||||
/* Status2 (состояние модуля N, таблица 2 — modularForm2) */
|
||||
typedef struct{
|
||||
/* Bit0 */ uint8_t powerLimitStatus:1; /* 1: активен режим ограничения мощности */
|
||||
/* Bit1 */ uint8_t moduleAddressDuplicate:1; /* 1: дублирование адреса модуля */
|
||||
/* Bit2 */ uint8_t severeUnevenFlowFault:1; /* 1: сильный перекос токораспределения между модулями */
|
||||
/* Bit3 */ uint8_t threePhaseInputPhaseLossAlarm:1; /* 1: авария по пропаданию фазы трёхфазного входа */
|
||||
/* Bit4 */ uint8_t threePhaseInputUnbalanceAlarm:1; /* 1: авария по разбалансу трёхфазного входа */
|
||||
/* Bit5 */ uint8_t inputUnderVoltageAlarm:1; /* 1: пониженное напряжение на входе */
|
||||
/* Bit6 */ uint8_t inputOverVoltageAlarm:1; /* 1: повышенное напряжение на входе */
|
||||
/* Bit7 */ uint8_t pfcSideOffStatus:1; /* 1: отключена сторона PFC */
|
||||
} PSU_Status2_t;
|
||||
|
||||
typedef struct {
|
||||
uint8_t enableAC; // состояние AC-контактора (желание)
|
||||
uint8_t enableOutput; // разрешение выхода модуля (желание)
|
||||
uint16_t outputVoltage; // измеренное выходное напряжение [В]
|
||||
int16_t outputCurrent; // измеренный выходной ток [0.1 А]
|
||||
uint8_t temperature; // температура модуля
|
||||
|
||||
PSU_State_t state; // состояние силового модуля и контакторов
|
||||
|
||||
uint8_t online; // модуль в сети (есть телеметрия)
|
||||
uint8_t ready; // модуль готов к работе (online && нет ошибок)
|
||||
uint8_t PSU_enabled; // на выходе есть напряжение (> порога)
|
||||
uint8_t CONT_enabled; // DC-контактор замкнут (по обратной связи)
|
||||
uint8_t cont_fault; // внутренняя ошибка контакторов
|
||||
uint8_t psu_fault; // внутренняя ошибка силового модуля
|
||||
|
||||
uint32_t statetick; // время входа в состояние
|
||||
|
||||
// Дополнительные параметры для одного модуля DC30
|
||||
uint32_t power_limit; // лимит мощности [кВт]
|
||||
uint8_t hv_mode; // HV-режим (ограничение напряжения)
|
||||
|
||||
uint32_t tempAmbient; // температура окружающего воздуха (из PSU_04)
|
||||
union { uint8_t raw; PSU_Status0_t bits; } status0; // modularForm0
|
||||
union { uint8_t raw; PSU_Status1_t bits; } status1; // modularForm1
|
||||
union { uint8_t raw; PSU_Status2_t bits; } status2; // modularForm2
|
||||
} PSU_t;
|
||||
|
||||
extern PSU_t PSU0;
|
||||
|
||||
void PSU_Task(void);
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
typedef struct{
|
||||
uint8_t source:8;
|
||||
uint8_t destination:8;
|
||||
uint8_t command:6;
|
||||
uint8_t device:4;
|
||||
uint8_t error:3;
|
||||
|
||||
}CanId_t;
|
||||
|
||||
typedef struct{
|
||||
uint8_t rsvd0[2];
|
||||
uint16_t moduleNumber;
|
||||
uint8_t rsvd1[5];
|
||||
}PSU_02_t;
|
||||
|
||||
typedef struct{
|
||||
uint8_t rsvd0[2];
|
||||
uint16_t moduleGroupNumber;
|
||||
uint8_t moduleTemperature;
|
||||
uint8_t rsvd1;
|
||||
uint8_t modularForm2;
|
||||
uint8_t modularForm1;
|
||||
uint8_t modularForm0;
|
||||
}PSU_04_t;
|
||||
|
||||
typedef struct{
|
||||
uint8_t VABHi;
|
||||
uint8_t VABLo;
|
||||
uint8_t VBCHi;
|
||||
uint8_t VBCLo;
|
||||
uint8_t VCAHi;
|
||||
uint8_t VCALo;
|
||||
uint8_t rsvd1[2];
|
||||
|
||||
uint32_t VAB;
|
||||
uint32_t VBC;
|
||||
uint32_t VCA;
|
||||
}PSU_06_t;
|
||||
|
||||
typedef struct{
|
||||
uint32_t totalSystemVoltage;
|
||||
uint32_t totalSystemCurrent;
|
||||
}PSU_08_t;
|
||||
|
||||
typedef struct{
|
||||
uint8_t moduleNVoltage_[4];
|
||||
uint8_t moduleNCurrent_[4];
|
||||
uint32_t moduleNVoltage;
|
||||
uint32_t moduleNCurrent;
|
||||
}PSU_09_t;
|
||||
|
||||
// setup
|
||||
|
||||
typedef struct{
|
||||
uint8_t enable;
|
||||
uint8_t rsvd1[7];
|
||||
}PSU_1A_t;
|
||||
|
||||
typedef struct{
|
||||
uint8_t moduleVoltage[4];
|
||||
uint8_t moduleCurrentTotal[4];
|
||||
}PSU_1B_t;
|
||||
|
||||
//typedef struct{
|
||||
// uint32_t moduleVoltage;
|
||||
// uint32_t moduleCurrentTotal;
|
||||
//}PSU_1B_t;
|
||||
|
||||
typedef struct{
|
||||
uint8_t moduleVoltage[4];
|
||||
uint8_t moduleCurrentTotal[4];
|
||||
}PSU_1C_t;
|
||||
|
||||
typedef struct{
|
||||
uint8_t enable;
|
||||
uint8_t rsvd1[7];
|
||||
}PSU_1D_t;
|
||||
|
||||
extern PSU_02_t PSU_02;
|
||||
extern PSU_04_t PSU_04;
|
||||
extern PSU_06_t PSU_06;
|
||||
extern PSU_08_t PSU_08;
|
||||
extern PSU_09_t PSU_09;
|
||||
|
||||
extern PSU_1A_t PSU_1A;
|
||||
extern PSU_1B_t PSU_1B;
|
||||
extern PSU_1C_t PSU_1C;
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
|
||||
|
||||
#endif /* INC_PSU_CONTROL_H_ */
|
||||
53
Core/Inc/rgb_controller.h
Executable file
53
Core/Inc/rgb_controller.h
Executable file
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* rgb_handler.h
|
||||
*
|
||||
* Created on: Jul 25, 2024
|
||||
* Author: colorbass
|
||||
*/
|
||||
|
||||
#ifndef INC_RGB_CONTROLLER_H_
|
||||
#define INC_RGB_CONTROLLER_H_
|
||||
|
||||
#include "main.h"
|
||||
|
||||
#pragma pack(push, 1)
|
||||
|
||||
typedef struct{
|
||||
uint8_t R;
|
||||
uint8_t G;
|
||||
uint8_t B;
|
||||
|
||||
}RGB_t;
|
||||
|
||||
typedef struct{
|
||||
RGB_t Color1;
|
||||
uint8_t Tr; //20ms/step, 5.1s max
|
||||
uint8_t Th; //20ms/step, 5.1s max
|
||||
uint8_t Tf; //20ms/step, 5.1s max
|
||||
uint8_t Tl; //20ms/step, 5.1s max
|
||||
RGB_t Color2;
|
||||
//uint8_t rsvd[6]; // 6 bytes reserved
|
||||
}RGB_Cycle_t;
|
||||
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef enum{
|
||||
LED_RISING,
|
||||
LED_HIGH,
|
||||
LED_FALLING,
|
||||
LED_LOW,
|
||||
}RGB_Phase_t;
|
||||
|
||||
typedef struct{
|
||||
uint8_t state; // 0 1 2 3
|
||||
uint16_t tick;
|
||||
RGB_t color;
|
||||
uint8_t phasesync;
|
||||
}RGB_State_t;
|
||||
|
||||
void LED_Task();
|
||||
void LED_Write();
|
||||
void LED_Init();
|
||||
|
||||
|
||||
#endif /* INC_RGB_CONTROLLER_H_ */
|
||||
164
Core/Inc/serial_control.h
Normal file
164
Core/Inc/serial_control.h
Normal file
@@ -0,0 +1,164 @@
|
||||
#ifndef SERIALCONTROL_H
|
||||
#define SERIALCONTROL_H
|
||||
|
||||
#include "main.h"
|
||||
#include <string.h>
|
||||
#include "charger_control.h"
|
||||
|
||||
#define USE_WEB_INTERFACE
|
||||
|
||||
// Команды от ПК к устройству
|
||||
#define CMD_GET_STATUS 0x40
|
||||
|
||||
#define CMD_GET_LOG 0x50
|
||||
#define CMD_GET_LOG_CONTINUE 0x51
|
||||
#define CMD_GET_INFO 0x60
|
||||
|
||||
// Команды с аргументами
|
||||
#define CMD_SET_POWER_LIMIT 0xC0
|
||||
#define CMD_TEST_PSU 0xC1
|
||||
#define CMD_CHARGE_PERMIT 0xC2
|
||||
|
||||
// Сервисные команды
|
||||
#define CMD_SET_CONFIG 0xB0
|
||||
|
||||
// Перезагрузка для входа в бутлоадер
|
||||
#define CMD_DEVICE_RESET 0xB5
|
||||
|
||||
// Коды ответов
|
||||
#define RESP_SUCCESS 0x12
|
||||
#define RESP_FAILED 0x13
|
||||
#define RESP_INVALID 0x14
|
||||
|
||||
// Максимальный размер буфера полезной нагрузки (включая 4 байта CRC)
|
||||
#define MAX_TX_BUFFER_SIZE 256
|
||||
// Максимальный размер буфера для принятого экранированного пакета без START/END
|
||||
#define MAX_RX_BUFFER_SIZE 256
|
||||
|
||||
// Макросы для CRC
|
||||
#define SERIAL_PROTOCOL_CRC_CLK_ENABLE() do { \
|
||||
__IO uint32_t tmpreg; \
|
||||
SET_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN);\
|
||||
tmpreg = READ_BIT(RCC->AHBENR, RCC_AHBENR_CRCEN);\
|
||||
UNUSED(tmpreg); \
|
||||
} while(0)
|
||||
|
||||
#define SERIAL_PROTOCOL_CRC_CLK_DISABLE() (RCC->AHBENR &= ~(RCC_AHBENR_CRCEN))
|
||||
|
||||
#define CRC32_POLYNOMIAL ((uint32_t)0xEDB88320)
|
||||
|
||||
void ReadVersion();
|
||||
|
||||
// Структура для хранения принятой команды с аргументом
|
||||
typedef struct {
|
||||
uint8_t command;
|
||||
uint8_t argument_length;
|
||||
void* argument;
|
||||
} ReceivedCommand_t;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
|
||||
CONN_State_t connState;
|
||||
CONN_Error_t chargingError; // Причина остановки зарядки
|
||||
uint8_t SOC; // State of charge [%]
|
||||
uint32_t Energy; // Energy [Wh]
|
||||
uint16_t RequestedVoltage; //1V/bit
|
||||
uint16_t RequestedCurrent; //0.1A/bit
|
||||
uint16_t MeasuredVoltage; //1V/bit
|
||||
uint16_t MeasuredCurrent; //0.1A/bit
|
||||
uint8_t outputEnabled;
|
||||
uint16_t chargingElapsedTimeMin;
|
||||
uint8_t chargingElapsedTimeSec;
|
||||
uint16_t estimatedRemainingChargingTime;
|
||||
|
||||
// Flags (32 bit)
|
||||
uint8_t relayAC:1;
|
||||
uint8_t relayDC:1;
|
||||
uint8_t relayAUX:1;
|
||||
uint8_t lockState:1;
|
||||
uint8_t stopButton:1;
|
||||
uint8_t logAvailable:1;
|
||||
uint8_t evInfoAvailable:1;
|
||||
uint8_t psuOnline:1;
|
||||
uint8_t rsvd1[3];
|
||||
|
||||
int8_t tempConnector0;
|
||||
int8_t tempConnector1;
|
||||
int8_t tempAmbient;
|
||||
int8_t tempBatteryMax;
|
||||
int8_t tempBatteryMin;
|
||||
|
||||
uint16_t highestVoltageOfBatteryCell;
|
||||
uint8_t batteryStatus;
|
||||
|
||||
uint16_t phaseVoltageAB;
|
||||
uint16_t phaseVoltageBC;
|
||||
uint16_t phaseVoltageCA;
|
||||
|
||||
char VIN[17];
|
||||
|
||||
uint8_t batteryType; //battery type
|
||||
uint16_t batteryCapacity; // 0.1Ah/bit
|
||||
uint16_t batteryVoltage; // 0.1V/bit
|
||||
uint8_t batteryVendor[4]; // Battery vendor (ASCII string)
|
||||
uint32_t batterySN; // int
|
||||
uint8_t batteryManuY; // year (offset 1985)
|
||||
uint8_t batteryManuM; // month
|
||||
uint8_t batteryManuD; // day
|
||||
uint16_t batteryCycleCount;
|
||||
uint8_t ownAuto; // 0 = lizing, 1 = own auto
|
||||
uint8_t EV_SW_VER[8];
|
||||
|
||||
uint8_t testMode;
|
||||
uint16_t testVoltage;
|
||||
uint16_t testCurrent;
|
||||
|
||||
} StatusPacket_t;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
uint16_t serialNumber;
|
||||
uint8_t boardVersion;
|
||||
uint8_t stationType;
|
||||
uint16_t fw_version_major;
|
||||
uint16_t fw_version_minor;
|
||||
uint16_t fw_version_patch;
|
||||
} InfoPacket_t;
|
||||
|
||||
typedef struct __attribute__((packed)) {
|
||||
char location[3];
|
||||
uint32_t chargerNumber;
|
||||
uint32_t unixTime;
|
||||
|
||||
} ConfigBlock_t;
|
||||
|
||||
// Предварительное объявление структуры протокола
|
||||
typedef struct SerialControl_t SerialControl_t;
|
||||
|
||||
// Структура протокола
|
||||
struct SerialControl_t {
|
||||
// Буферы для UART
|
||||
uint8_t tx_buffer[MAX_TX_BUFFER_SIZE];
|
||||
uint8_t rx_buffer[MAX_RX_BUFFER_SIZE];
|
||||
|
||||
// Переменные для передачи команды
|
||||
volatile ReceivedCommand_t received_command;
|
||||
volatile uint8_t command_ready;
|
||||
|
||||
// Время отправки последнего пакета
|
||||
volatile uint32_t tx_tick;
|
||||
|
||||
};
|
||||
|
||||
// Публичные методы
|
||||
void SC_Init();
|
||||
void SC_Task();
|
||||
void SC_SendPacket(const uint8_t* payload, uint16_t payload_len, uint8_t response_code);
|
||||
|
||||
// Внешняя функция обработки команд (определена в serial_handler.c)
|
||||
extern void SC_CommandHandler(ReceivedCommand_t* cmd);
|
||||
|
||||
extern SerialControl_t serial_control;
|
||||
extern StatusPacket_t statusPacket;
|
||||
extern InfoPacket_t infoPacket;
|
||||
|
||||
#endif // SERIALCONTROL_H
|
||||
4
Core/Inc/stm32f1xx_hal_conf.h
Executable file → Normal file
4
Core/Inc/stm32f1xx_hal_conf.h
Executable file → Normal file
@@ -40,7 +40,7 @@
|
||||
/*#define HAL_CAN_LEGACY_MODULE_ENABLED */
|
||||
/*#define HAL_CEC_MODULE_ENABLED */
|
||||
/*#define HAL_CORTEX_MODULE_ENABLED */
|
||||
/*#define HAL_CRC_MODULE_ENABLED */
|
||||
#define HAL_CRC_MODULE_ENABLED
|
||||
/*#define HAL_DAC_MODULE_ENABLED */
|
||||
/*#define HAL_DMA_MODULE_ENABLED */
|
||||
/*#define HAL_ETH_MODULE_ENABLED */
|
||||
@@ -64,7 +64,7 @@
|
||||
/*#define HAL_SMARTCARD_MODULE_ENABLED */
|
||||
/*#define HAL_SPI_MODULE_ENABLED */
|
||||
/*#define HAL_SRAM_MODULE_ENABLED */
|
||||
/*#define HAL_TIM_MODULE_ENABLED */
|
||||
#define HAL_TIM_MODULE_ENABLED
|
||||
#define HAL_UART_MODULE_ENABLED
|
||||
/*#define HAL_USART_MODULE_ENABLED */
|
||||
/*#define HAL_WWDG_MODULE_ENABLED */
|
||||
|
||||
4
Core/Inc/stm32f1xx_it.h
Executable file → Normal file
4
Core/Inc/stm32f1xx_it.h
Executable file → Normal file
@@ -22,7 +22,7 @@
|
||||
#define __STM32F1xx_IT_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Private includes ----------------------------------------------------------*/
|
||||
@@ -56,7 +56,9 @@ void DebugMon_Handler(void);
|
||||
void PendSV_Handler(void);
|
||||
void SysTick_Handler(void);
|
||||
void CAN1_RX0_IRQHandler(void);
|
||||
void USART1_IRQHandler(void);
|
||||
void USART2_IRQHandler(void);
|
||||
void USART3_IRQHandler(void);
|
||||
void CAN2_TX_IRQHandler(void);
|
||||
void CAN2_RX1_IRQHandler(void);
|
||||
/* USER CODE BEGIN EFP */
|
||||
|
||||
54
Core/Inc/tim.h
Normal file
54
Core/Inc/tim.h
Normal file
@@ -0,0 +1,54 @@
|
||||
/* USER CODE BEGIN Header */
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file tim.h
|
||||
* @brief This file contains all the function prototypes for
|
||||
* the tim.c file
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2025 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 __TIM_H__
|
||||
#define __TIM_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "main.h"
|
||||
|
||||
/* USER CODE BEGIN Includes */
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
extern TIM_HandleTypeDef htim4;
|
||||
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
/* USER CODE END Private defines */
|
||||
|
||||
void MX_TIM4_Init(void);
|
||||
|
||||
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
|
||||
|
||||
/* USER CODE BEGIN Prototypes */
|
||||
|
||||
/* USER CODE END Prototypes */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __TIM_H__ */
|
||||
|
||||
11
Core/Inc/usart.h
Executable file → Normal file
11
Core/Inc/usart.h
Executable file → Normal file
@@ -7,7 +7,7 @@
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2024 STMicroelectronics.
|
||||
* Copyright (c) 2025 STMicroelectronics.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
@@ -32,13 +32,22 @@ extern "C" {
|
||||
|
||||
/* USER CODE END Includes */
|
||||
|
||||
extern UART_HandleTypeDef huart5;
|
||||
|
||||
extern UART_HandleTypeDef huart1;
|
||||
|
||||
extern UART_HandleTypeDef huart2;
|
||||
|
||||
extern UART_HandleTypeDef huart3;
|
||||
|
||||
/* USER CODE BEGIN Private defines */
|
||||
|
||||
/* USER CODE END Private defines */
|
||||
|
||||
void MX_UART5_Init(void);
|
||||
void MX_USART1_UART_Init(void);
|
||||
void MX_USART2_UART_Init(void);
|
||||
void MX_USART3_UART_Init(void);
|
||||
|
||||
/* USER CODE BEGIN Prototypes */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user