完善通信部分和soe
This commit is contained in:
parent
eaecfce9ad
commit
ade6e13f20
|
@ -12,6 +12,8 @@ void eventsOrderRecordStartInit(void);
|
||||||
void setEventsOrderRecord(void);
|
void setEventsOrderRecord(void);
|
||||||
void readEventsOrderRecord(uint16_t offset, uint8_t *data);
|
void readEventsOrderRecord(uint16_t offset, uint8_t *data);
|
||||||
void insertEventsOrderRecord(eventsOrderRecordMode mode);
|
void insertEventsOrderRecord(eventsOrderRecordMode mode);
|
||||||
|
void cleanEventsOrderRecord(void);
|
||||||
|
|
||||||
|
|
||||||
uint16_t getSoeDataInfoSize(void);
|
uint16_t getSoeDataInfoSize(void);
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
|
|
||||||
|
|
||||||
/* SL协议读取寄存器最大地址 */
|
/* SL协议读取寄存器最大地址 */
|
||||||
#define maxReadRegAddrMacro 0x0120
|
#define maxReadRegAddrMacro 0x0150
|
||||||
/* SL协议读取寄存器最小地址 */
|
/* SL协议读取寄存器最小地址 */
|
||||||
#define minReadRegAddrMacro 0x0100
|
#define minReadRegAddrMacro 0x0100
|
||||||
/* SL协议读取寄存器最大长度 */
|
/* SL协议读取寄存器最大长度 */
|
||||||
|
@ -18,7 +18,7 @@
|
||||||
|
|
||||||
|
|
||||||
/* SL协议写入寄存器最大地址 */
|
/* SL协议写入寄存器最大地址 */
|
||||||
#define maxWriteRegAddrMacro 0x0120
|
#define maxWriteRegAddrMacro 0x0150
|
||||||
/* SL协议写入寄存器最小地址 */
|
/* SL协议写入寄存器最小地址 */
|
||||||
#define minWriteRegAddrMacro 0x0100
|
#define minWriteRegAddrMacro 0x0100
|
||||||
/* SL协议写入寄存器最大长度 */
|
/* SL协议写入寄存器最大长度 */
|
||||||
|
|
|
@ -171,14 +171,23 @@ void setEventsOrderRecord(void)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
write_Flash((uint8_t *)(&soeInfo.outData), soeParameters.pos, soeDataInfoSize);
|
write_Flash((uint8_t *)(soeInfo.outData), soeParameters.pos, soeDataInfoSize);
|
||||||
|
// read_Flash((uint8_t *)(soeInfo.outData), eventsOrderRecordStartAddr, sizeof(soeStorageParameters));
|
||||||
|
|
||||||
|
// debug_printf("mode = %d \n", soeInfo.outData->mode);
|
||||||
|
// debug_printf("year = %d \n", soeInfo.outData->time.year);
|
||||||
|
// debug_printf("month = %d \n", soeInfo.outData->time.month);
|
||||||
|
// debug_printf("day = %d \n", soeInfo.outData->time.day);
|
||||||
|
// debug_printf("hour = %d \n", soeInfo.outData->time.hour);
|
||||||
|
// debug_printf("minute = %d \n", soeInfo.outData->time.minute);
|
||||||
|
// debug_printf("second = %d \n", soeInfo.outData->time.second);
|
||||||
|
|
||||||
soeParameters.len++;
|
soeParameters.len++;
|
||||||
if (soeParameters.len >= 100) {
|
if (soeParameters.len >= 100) {
|
||||||
soeParameters.len = 0;
|
soeParameters.len = 0;
|
||||||
}
|
}
|
||||||
soeParameters.pos += soeDataInfoSize;
|
soeParameters.pos += soeDataInfoSize;
|
||||||
write_Flash((uint8_t *)(&soeParameters), eventsOrderRecordStartAddr, sizeof(soeStorageParameters));
|
write_Flash((uint8_t *)(&soeParameters), eventsOrderRecordStartAddr, sizeof(soeStorageParameters));
|
||||||
|
|
||||||
soeInfo.outPos++;
|
soeInfo.outPos++;
|
||||||
if (soeInfo.outPos >= 5) {
|
if (soeInfo.outPos >= 5) {
|
||||||
|
@ -207,15 +216,26 @@ void readEventsOrderRecord(uint16_t offset, uint8_t *data)
|
||||||
{
|
{
|
||||||
uint16_t addr;
|
uint16_t addr;
|
||||||
|
|
||||||
if (soeParameters.len + 1 - offset < 0) {
|
if (soeParameters.len - offset < 0) {
|
||||||
addr = eventsOrderRecordStartAddr + sizeof(soeStorageParameters)
|
addr = eventsOrderRecordStartAddr + sizeof(soeStorageParameters)
|
||||||
+ (100 + soeParameters.len + 1 - offset) * soeDataInfoSize;
|
+ (100 + soeParameters.len - offset) * soeDataInfoSize;
|
||||||
} else {
|
} else {
|
||||||
addr = eventsOrderRecordStartAddr + sizeof(soeStorageParameters)
|
addr = eventsOrderRecordStartAddr + sizeof(soeStorageParameters)
|
||||||
+ (soeParameters.len + 1 - offset) * soeDataInfoSize;
|
+ (soeParameters.len - offset) * soeDataInfoSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
read_Flash(data, addr, soeDataInfoSize);
|
read_Flash(data, addr, soeDataInfoSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 清除SOE所有事件
|
||||||
|
* @param
|
||||||
|
*/
|
||||||
|
void cleanEventsOrderRecord(void)
|
||||||
|
{
|
||||||
|
erase_Sector_Flash((eventsOrderRecordStartAddr / 4096));
|
||||||
|
soeParameters.len = 0;
|
||||||
|
soeParameters.pos = eventsOrderRecordStartAddr + sizeof(soeParameters);
|
||||||
|
write_Flash((uint8_t *)(&soeParameters), eventsOrderRecordStartAddr, sizeof(soeParameters));
|
||||||
|
}
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
#include "interruptSend.h"
|
#include "interruptSend.h"
|
||||||
#include "inFlash.h"
|
#include "inFlash.h"
|
||||||
#include "SOE.h"
|
#include "SOE.h"
|
||||||
|
#include "FM_RTC.h"
|
||||||
|
#include "SOE.h"
|
||||||
|
|
||||||
/* 状态机 */
|
/* 状态机 */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -53,7 +55,7 @@ typedef enum
|
||||||
|
|
||||||
SL_Register_Solar_Open_Circuit_Voltage = 0x0100, /* 太阳能开路电压 */
|
SL_Register_Solar_Open_Circuit_Voltage = 0x0100, /* 太阳能开路电压 */
|
||||||
SL_Register_Solar_Input_Voltage = 0x0101, /* 太阳能输入电压 */
|
SL_Register_Solar_Input_Voltage = 0x0101, /* 太阳能输入电压 */
|
||||||
SL_Register_Output_Voltage = 0x0102, /* 电池电压 */
|
SL_Register_Output_Voltage = 0x0102, /* 输出电压 */
|
||||||
SL_Register_Battery_Voltage = 0x0103, /* 电池电压 */
|
SL_Register_Battery_Voltage = 0x0103, /* 电池电压 */
|
||||||
SL_Register_Charg_Current = 0x0104, /* 充电电流(流向电池+负载) */
|
SL_Register_Charg_Current = 0x0104, /* 充电电流(流向电池+负载) */
|
||||||
SL_Register_Discharg_Current = 0x0105, /* 放电电流(流向负载) */
|
SL_Register_Discharg_Current = 0x0105, /* 放电电流(流向负载) */
|
||||||
|
@ -63,8 +65,12 @@ typedef enum
|
||||||
SL_Register_totalChargCapacity = 0x0109, /* 总充电量 */
|
SL_Register_totalChargCapacity = 0x0109, /* 总充电量 */
|
||||||
SL_Register_totalElectricityConsumption = 0x010A, /* 总放电量 */
|
SL_Register_totalElectricityConsumption = 0x010A, /* 总放电量 */
|
||||||
SL_Register_MPPT_Mode = 0x010B, /* 工作模式 */
|
SL_Register_MPPT_Mode = 0x010B, /* 工作模式 */
|
||||||
SL_Register_eliminateStatistical = 0x010C, /* 消除统计 */
|
SL_Register_eliminateStatistical = 0x0120, /* 消除统计 */
|
||||||
SL_Register_Charg_Control = 0x010D, /* 充电控制 */
|
SL_Register_Charg_Control = 0x0121, /* 充电控制 */
|
||||||
|
SL_Register_Clean_SOE = 0x0122, /* 清除SOE */
|
||||||
|
SL_Register_YearMonth = 0x0130, /* rtc时钟校准-年月 */
|
||||||
|
SL_Register_DayHour = 0x0131, /* rtc时钟校准-日时 */
|
||||||
|
SL_Register_MinuteSecond = 0x0132, /* rtc时钟校准-分秒 */
|
||||||
}SL_Mppt_MsgRegister;
|
}SL_Mppt_MsgRegister;
|
||||||
|
|
||||||
/* 配置文件数据类型表 */
|
/* 配置文件数据类型表 */
|
||||||
|
@ -155,9 +161,16 @@ static uint16_t SL_ReadRegisterChargState(void *pMsg);
|
||||||
static uint16_t SL_ReadRegisterTotalChargCapacity(void *pMsg);
|
static uint16_t SL_ReadRegisterTotalChargCapacity(void *pMsg);
|
||||||
static uint16_t SL_ReadRegisterTotalElectricityConsumption(void *pMsg);
|
static uint16_t SL_ReadRegisterTotalElectricityConsumption(void *pMsg);
|
||||||
static uint16_t SL_ReadRegisterMPPT_Mode(void *pMsg);
|
static uint16_t SL_ReadRegisterMPPT_Mode(void *pMsg);
|
||||||
|
static uint16_t SL_ReadRegisterYearMonth(void *pMsg);
|
||||||
|
static uint16_t SL_ReadRegisterDayHour(void *pMsg);
|
||||||
|
static uint16_t SL_ReadRegisterMinuteSecond(void *pMsg);
|
||||||
|
|
||||||
static uint16_t SL_WriteRegisterEliminateStatistical(void *pMsg);
|
static uint16_t SL_WriteRegisterEliminateStatistical(void *pMsg);
|
||||||
static uint16_t SL_WriteRegisterChargControl(void *pMsg);
|
static uint16_t SL_WriteRegisterChargControl(void *pMsg);
|
||||||
|
static uint16_t SL_WriteRegisterCleanSOE(void *pMsg);
|
||||||
|
static uint16_t SL_WriteRegisterYearMonth(void *pMsg);
|
||||||
|
static uint16_t SL_WriteRegisterDayHour(void *pMsg);
|
||||||
|
static uint16_t SL_WriteRegisterMinuteSecond(void *pMsg);
|
||||||
|
|
||||||
/* 寄存器处理表 */
|
/* 寄存器处理表 */
|
||||||
typedef uint16_t (*RegProcFunc)(void*);
|
typedef uint16_t (*RegProcFunc)(void*);
|
||||||
|
@ -185,6 +198,9 @@ SL_RegProcTable g_RegTblR[] =
|
||||||
{SL_Register_totalChargCapacity, SL_ReadRegisterTotalChargCapacity},
|
{SL_Register_totalChargCapacity, SL_ReadRegisterTotalChargCapacity},
|
||||||
{SL_Register_totalElectricityConsumption, SL_ReadRegisterTotalElectricityConsumption},
|
{SL_Register_totalElectricityConsumption, SL_ReadRegisterTotalElectricityConsumption},
|
||||||
{SL_Register_MPPT_Mode, SL_ReadRegisterMPPT_Mode},
|
{SL_Register_MPPT_Mode, SL_ReadRegisterMPPT_Mode},
|
||||||
|
{SL_Register_YearMonth, SL_ReadRegisterYearMonth},
|
||||||
|
{SL_Register_DayHour, SL_ReadRegisterDayHour},
|
||||||
|
{SL_Register_MinuteSecond, SL_ReadRegisterMinuteSecond},
|
||||||
};
|
};
|
||||||
|
|
||||||
/* 寄存器处理表 */
|
/* 寄存器处理表 */
|
||||||
|
@ -196,6 +212,10 @@ SL_RegProcTable g_RegTblW[] =
|
||||||
// {SL_Register_Communication_Methods, SL_WriteRegisterCommunicationMethods},
|
// {SL_Register_Communication_Methods, SL_WriteRegisterCommunicationMethods},
|
||||||
{SL_Register_eliminateStatistical, SL_WriteRegisterEliminateStatistical},
|
{SL_Register_eliminateStatistical, SL_WriteRegisterEliminateStatistical},
|
||||||
{SL_Register_Charg_Control, SL_WriteRegisterChargControl},
|
{SL_Register_Charg_Control, SL_WriteRegisterChargControl},
|
||||||
|
{SL_Register_Clean_SOE, SL_WriteRegisterCleanSOE},
|
||||||
|
{SL_Register_YearMonth, SL_WriteRegisterYearMonth},
|
||||||
|
{SL_Register_DayHour, SL_WriteRegisterDayHour},
|
||||||
|
{SL_Register_MinuteSecond, SL_WriteRegisterMinuteSecond},
|
||||||
};
|
};
|
||||||
|
|
||||||
/* 配置文件解析函数 */
|
/* 配置文件解析函数 */
|
||||||
|
@ -1118,6 +1138,42 @@ uint16_t SL_ReadRegisterMPPT_Mode(void *pMsg)
|
||||||
return getMPPT_Mode();
|
return getMPPT_Mode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 读取年月
|
||||||
|
* @param
|
||||||
|
* @retval 年月
|
||||||
|
*/
|
||||||
|
uint16_t SL_ReadRegisterYearMonth(void *pMsg)
|
||||||
|
{
|
||||||
|
timeInfo time;
|
||||||
|
getRTC_Time(&time);
|
||||||
|
return (time.year << 8) | time.month;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 读取日时
|
||||||
|
* @param
|
||||||
|
* @retval 日时
|
||||||
|
*/
|
||||||
|
uint16_t SL_ReadRegisterDayHour(void *pMsg)
|
||||||
|
{
|
||||||
|
timeInfo time;
|
||||||
|
getRTC_Time(&time);
|
||||||
|
return (time.day << 8) | time.hour;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 读取分秒
|
||||||
|
* @param
|
||||||
|
* @retval 分秒
|
||||||
|
*/
|
||||||
|
uint16_t SL_ReadRegisterMinuteSecond(void *pMsg)
|
||||||
|
{
|
||||||
|
timeInfo time;
|
||||||
|
getRTC_Time(&time);
|
||||||
|
return (time.minute << 8) | time.second;
|
||||||
|
}
|
||||||
|
|
||||||
/* 写入寄存器 */
|
/* 写入寄存器 */
|
||||||
/**
|
/**
|
||||||
* @brief 清除统计电量
|
* @brief 清除统计电量
|
||||||
|
@ -1151,6 +1207,96 @@ uint16_t SL_WriteRegisterChargControl(void *pMsg)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 清除SOE
|
||||||
|
* @param
|
||||||
|
* @retval
|
||||||
|
*/
|
||||||
|
uint16_t SL_WriteRegisterCleanSOE(void *pMsg)
|
||||||
|
{
|
||||||
|
debug_printf("SL_WriteRegisterCleanSOE\n");
|
||||||
|
cleanEventsOrderRecord();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 写入年月
|
||||||
|
* @param
|
||||||
|
* @retval
|
||||||
|
*/
|
||||||
|
static timeInfo writeTime;
|
||||||
|
uint16_t SL_WriteRegisterYearMonth(void *pMsg)
|
||||||
|
{
|
||||||
|
// timeInfo time;
|
||||||
|
// getRTC_Time(&time);
|
||||||
|
|
||||||
|
// uint8_t tempU8 = (uint8_t)((*(uint16_t*)pMsg) >> 8);
|
||||||
|
// time.year = tempU8;
|
||||||
|
// tempU8 = (uint8_t)(*(uint16_t*)pMsg);
|
||||||
|
// time.month = tempU8;
|
||||||
|
uint8_t tempU8 = (uint8_t)((*(uint16_t*)pMsg) >> 8);
|
||||||
|
writeTime.year = tempU8;
|
||||||
|
tempU8 = (uint8_t)(*(uint16_t*)pMsg);
|
||||||
|
writeTime.month = tempU8;
|
||||||
|
|
||||||
|
// setRTC_Time(&time);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 写入日时
|
||||||
|
* @param
|
||||||
|
* @retval
|
||||||
|
*/
|
||||||
|
uint16_t SL_WriteRegisterDayHour(void *pMsg)
|
||||||
|
{
|
||||||
|
// timeInfo time;
|
||||||
|
// getRTC_Time(&time);
|
||||||
|
|
||||||
|
// uint8_t tempU8 = (uint8_t)((*(uint16_t*)pMsg) >> 8);
|
||||||
|
// time.day = tempU8;
|
||||||
|
// tempU8 = (uint8_t)(*(uint16_t*)pMsg);
|
||||||
|
// time.hour = tempU8;
|
||||||
|
|
||||||
|
// setRTC_Time(&time);
|
||||||
|
|
||||||
|
uint8_t tempU8 = (uint8_t)((*(uint16_t*)pMsg) >> 8);
|
||||||
|
writeTime.day = tempU8;
|
||||||
|
tempU8 = (uint8_t)(*(uint16_t*)pMsg);
|
||||||
|
writeTime.hour = tempU8;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 写入分秒
|
||||||
|
* @param
|
||||||
|
* @retval
|
||||||
|
*/
|
||||||
|
uint16_t SL_WriteRegisterMinuteSecond(void *pMsg)
|
||||||
|
{
|
||||||
|
// timeInfo time;
|
||||||
|
// getRTC_Time(&time);
|
||||||
|
|
||||||
|
// uint8_t tempU8 = (uint8_t)((*(uint16_t*)pMsg) >> 8);
|
||||||
|
// time.minute = tempU8;
|
||||||
|
// tempU8 = (uint8_t)(*(uint16_t*)pMsg);
|
||||||
|
// time.second = tempU8;
|
||||||
|
|
||||||
|
// setRTC_Time(&time);
|
||||||
|
|
||||||
|
uint8_t tempU8 = (uint8_t)((*(uint16_t*)pMsg) >> 8);
|
||||||
|
writeTime.minute = tempU8;
|
||||||
|
tempU8 = (uint8_t)(*(uint16_t*)pMsg);
|
||||||
|
writeTime.second = tempU8;
|
||||||
|
|
||||||
|
setRTC_Time(&writeTime);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief 解析下发的配置文件
|
* @brief 解析下发的配置文件
|
||||||
* @param pMsg 需要解析的内容
|
* @param pMsg 需要解析的内容
|
||||||
|
@ -1925,6 +2071,7 @@ uint8_t *analysisReadProfile(uint8_t *pMsg, uint8_t **outData, uint16_t *dataLen
|
||||||
return (pMsg + 2);
|
return (pMsg + 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
debug_printf("dataType error : %d\n", dataType);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2292,15 +2439,31 @@ void SL_MsgProcFunc_Read_Profile(device_handle device, void *pMsg, uint32_t MsgL
|
||||||
analysisData += 12;
|
analysisData += 12;
|
||||||
|
|
||||||
/* 解析一包的时间小于100ms */
|
/* 解析一包的时间小于100ms */
|
||||||
uint16_t tickstart1 = HAL_GetTick();
|
uint32_t tickstart1;
|
||||||
|
tickstart1 = HAL_GetTick();
|
||||||
while ((analysisData != (((uint8_t *)pMsg + MsgLen) - 3)) && (analysisData != NULL) && ((HAL_GetTick() - tickstart1) < 100)) {
|
while ((analysisData != (((uint8_t *)pMsg + MsgLen) - 3)) && (analysisData != NULL) && ((HAL_GetTick() - tickstart1) < 100)) {
|
||||||
|
// while ((analysisData != (((uint8_t *)pMsg + MsgLen) - 3)) && (analysisData != NULL)) {
|
||||||
analysisData = analysisReadProfile(analysisData, &replay_pack, &replayPackDatalen);
|
analysisData = analysisReadProfile(analysisData, &replay_pack, &replayPackDatalen);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (((HAL_GetTick() - tickstart1) >= 100) || (analysisData == NULL)) {
|
if (analysisData != (((uint8_t *)pMsg + MsgLen) - 3) || (analysisData == NULL) || ((HAL_GetTick() - tickstart1) > 100)) {
|
||||||
|
// debug_printf("analysisData error \n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// if (analysisData == NULL) {
|
||||||
|
// debug_printf("analysisData == NULL \n");
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// if (analysisData != (((uint8_t *)pMsg + MsgLen) - 3)) {
|
||||||
|
// debug_printf("HAL_GetTick() - tickstart1 : %d \n", (HAL_GetTick() - tickstart1));
|
||||||
|
// debug_printf("analysisData != (((uint8_t *)pMsg + MsgLen) - 3) \n");
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
uint8_t *replay_pack1 = getInsertData();
|
uint8_t *replay_pack1 = getInsertData();
|
||||||
*(replay_pack1 + 10) = (uint8_t)(replayPackDatalen >> 8);
|
*(replay_pack1 + 10) = (uint8_t)(replayPackDatalen >> 8);
|
||||||
*(replay_pack1 + 11) = (uint8_t)(replayPackDatalen);
|
*(replay_pack1 + 11) = (uint8_t)(replayPackDatalen);
|
||||||
|
@ -2318,6 +2481,9 @@ void SL_MsgProcFunc_Read_Profile(device_handle device, void *pMsg, uint32_t MsgL
|
||||||
*replay_pack = g_cfgParameter.endFlagSL;
|
*replay_pack = g_cfgParameter.endFlagSL;
|
||||||
|
|
||||||
uart_insertDataSend(device, 15 + replayPackDatalen);
|
uart_insertDataSend(device, 15 + replayPackDatalen);
|
||||||
|
|
||||||
|
|
||||||
|
debug_printf("SL_MsgProcFunc_Read_Profile end\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
void Flash_Init(void);
|
void Flash_Init(void);
|
||||||
void read_Flash(uint8_t* pBuffer,uint32_t ReadAddr,uint16_t NumByteToRead);
|
void read_Flash(uint8_t* pBuffer,uint32_t ReadAddr,uint16_t NumByteToRead);
|
||||||
void write_Flash(uint8_t* pBuffer,uint32_t WriteAddr,uint16_t NumByteToWrite);
|
void write_Flash(uint8_t* pBuffer,uint32_t WriteAddr,uint16_t NumByteToWrite);
|
||||||
|
void erase_Sector_Flash(uint32_t secpos);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
|
@ -179,15 +179,17 @@ BOOL readOverCurrState(void)
|
||||||
BOOL readOnlyPowerOutputState(void)
|
BOOL readOnlyPowerOutputState(void)
|
||||||
{
|
{
|
||||||
// static volatile GPIO_PinState gpioTemp1, gpioTemp2, gpioTemp3;
|
// static volatile GPIO_PinState gpioTemp1, gpioTemp2, gpioTemp3;
|
||||||
GPIO_PinState gpioTemp1, gpioTemp2, gpioTemp3;
|
// GPIO_PinState gpioTemp1, gpioTemp2, gpioTemp3;
|
||||||
|
GPIO_PinState gpioTemp1, gpioTemp2;
|
||||||
|
|
||||||
gpioTemp1 = HAL_GPIO_ReadPin(POW_FF_CON_GPIO_Port, POW_FF_CON_Pin);
|
gpioTemp1 = HAL_GPIO_ReadPin(POW_FF_CON_GPIO_Port, POW_FF_CON_Pin);
|
||||||
gpioTemp2 = HAL_GPIO_ReadPin(POW_OUT_CON_GPIO_Port, POW_OUT_CON_Pin);
|
gpioTemp2 = HAL_GPIO_ReadPin(POW_OUT_CON_GPIO_Port, POW_OUT_CON_Pin);
|
||||||
gpioTemp3 = HAL_GPIO_ReadPin(DSG_PROT_GPIO_Port, DSG_PROT_Pin);
|
// gpioTemp3 = HAL_GPIO_ReadPin(DSG_PROT_GPIO_Port, DSG_PROT_Pin);
|
||||||
|
|
||||||
if (gpioTemp1 == GPIO_PIN_SET
|
if (gpioTemp1 == GPIO_PIN_SET
|
||||||
&& gpioTemp2 == GPIO_PIN_SET
|
&& gpioTemp2 == GPIO_PIN_SET
|
||||||
&& gpioTemp3 == GPIO_PIN_SET) {
|
// && gpioTemp3 == GPIO_PIN_SET) {
|
||||||
|
) {
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -22,9 +22,9 @@ void FM_RTC_Init(void)
|
||||||
void setRTC_Time(timeInfo *time)
|
void setRTC_Time(timeInfo *time)
|
||||||
{
|
{
|
||||||
/* 日期结构体 */
|
/* 日期结构体 */
|
||||||
static RTC_DateTypeDef setData;
|
RTC_DateTypeDef setData;
|
||||||
/* 时间结构体 */
|
/* 时间结构体 */
|
||||||
static RTC_TimeTypeDef setTime;
|
RTC_TimeTypeDef setTime;
|
||||||
|
|
||||||
setData.Year = time->year;
|
setData.Year = time->year;
|
||||||
setData.Month = time->month;
|
setData.Month = time->month;
|
||||||
|
@ -46,9 +46,9 @@ void setRTC_Time(timeInfo *time)
|
||||||
void getRTC_Time(timeInfo *time)
|
void getRTC_Time(timeInfo *time)
|
||||||
{
|
{
|
||||||
/* 日期结构体 */
|
/* 日期结构体 */
|
||||||
static RTC_DateTypeDef getData;
|
RTC_DateTypeDef getData;
|
||||||
/* 时间结构体 */
|
/* 时间结构体 */
|
||||||
static RTC_TimeTypeDef getTime;
|
RTC_TimeTypeDef getTime;
|
||||||
|
|
||||||
HAL_RTC_GetDate(&hrtc, &getData, RTC_FORMAT_BIN);
|
HAL_RTC_GetDate(&hrtc, &getData, RTC_FORMAT_BIN);
|
||||||
HAL_RTC_GetTime(&hrtc, &getTime, RTC_FORMAT_BIN);
|
HAL_RTC_GetTime(&hrtc, &getTime, RTC_FORMAT_BIN);
|
||||||
|
|
|
@ -94,4 +94,14 @@ void write_Flash(uint8_t* pBuffer,uint32_t WriteAddr,uint16_t NumByteToWrite)
|
||||||
W25QXX_Write(pBuffer, WriteAddr, NumByteToWrite);
|
W25QXX_Write(pBuffer, WriteAddr, NumByteToWrite);
|
||||||
// Flash_Write_MorePage(pBuffer, WriteAddr, NumByteToWrite);
|
// Flash_Write_MorePage(pBuffer, WriteAddr, NumByteToWrite);
|
||||||
// W25Q128_Write(pBuffer, WriteAddr, NumByteToWrite);
|
// W25Q128_Write(pBuffer, WriteAddr, NumByteToWrite);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 清除flash中secpos扇区的数据
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void erase_Sector_Flash(uint32_t secpos)
|
||||||
|
{
|
||||||
|
W25QXX_Erase_Sector(secpos);
|
||||||
|
}
|
||||||
|
|
|
@ -18,6 +18,29 @@ void HD_RTC_Init(void)
|
||||||
{
|
{
|
||||||
Error_Handler();
|
Error_Handler();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// RTC_TimeTypeDef sTime = {0};
|
||||||
|
// RTC_DateTypeDef sDate = {0};
|
||||||
|
|
||||||
|
// sTime.Hours = 0;
|
||||||
|
// sTime.Minutes = 0;
|
||||||
|
// sTime.Seconds = 0;
|
||||||
|
// sTime.SubSeconds = 0;
|
||||||
|
// sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
|
||||||
|
// sTime.StoreOperation = RTC_STOREOPERATION_RESET;
|
||||||
|
// if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK)
|
||||||
|
// {
|
||||||
|
// Error_Handler();
|
||||||
|
// }
|
||||||
|
// sDate.WeekDay = RTC_WEEKDAY_MONDAY;
|
||||||
|
// sDate.Month = RTC_MONTH_JANUARY;
|
||||||
|
// sDate.Date = 1;
|
||||||
|
// sDate.Year = 0;
|
||||||
|
|
||||||
|
// if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN) != HAL_OK)
|
||||||
|
// {
|
||||||
|
// Error_Handler();
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -73,6 +73,7 @@ void SystemClock_Config(void);
|
||||||
*/
|
*/
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
/* USER CODE BEGIN 1 */
|
/* USER CODE BEGIN 1 */
|
||||||
|
|
||||||
/* USER CODE END 1 */
|
/* USER CODE END 1 */
|
||||||
|
@ -94,20 +95,20 @@ int main(void)
|
||||||
/* USER CODE END SysInit */
|
/* USER CODE END SysInit */
|
||||||
|
|
||||||
/* Initialize all configured peripherals */
|
/* Initialize all configured peripherals */
|
||||||
// MX_GPIO_Init();
|
// MX_GPIO_Init();
|
||||||
// MX_DMA_Init();
|
// MX_DMA_Init();
|
||||||
// MX_ADC1_Init();
|
// MX_ADC1_Init();
|
||||||
// MX_ADC2_Init();
|
// MX_ADC2_Init();
|
||||||
// MX_TIM3_Init();
|
// MX_TIM3_Init();
|
||||||
// MX_TIM6_Init();
|
// MX_TIM6_Init();
|
||||||
// MX_UART4_Init();
|
// MX_UART4_Init();
|
||||||
// MX_USART2_UART_Init();
|
// MX_USART2_UART_Init();
|
||||||
// MX_USART3_UART_Init();
|
// MX_USART3_UART_Init();
|
||||||
// MX_TIM7_Init();
|
// MX_TIM7_Init();
|
||||||
// MX_TIM16_Init();
|
// MX_TIM16_Init();
|
||||||
// MX_TIM15_Init();
|
// MX_TIM15_Init();
|
||||||
// MX_RTC_Init();
|
// MX_RTC_Init();
|
||||||
// MX_SPI1_Init();
|
// MX_SPI1_Init();
|
||||||
/* USER CODE BEGIN 2 */
|
/* USER CODE BEGIN 2 */
|
||||||
|
|
||||||
// while (1) {
|
// while (1) {
|
||||||
|
@ -151,14 +152,13 @@ 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_HSI|RCC_OSCILLATORTYPE_LSE;
|
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE|RCC_OSCILLATORTYPE_LSE;
|
||||||
|
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
|
||||||
RCC_OscInitStruct.LSEState = RCC_LSE_ON;
|
RCC_OscInitStruct.LSEState = RCC_LSE_ON;
|
||||||
RCC_OscInitStruct.HSIState = RCC_HSI_ON;
|
|
||||||
RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
|
|
||||||
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
|
||||||
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
|
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
|
||||||
RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1;
|
RCC_OscInitStruct.PLL.PLLM = RCC_PLLM_DIV1;
|
||||||
RCC_OscInitStruct.PLL.PLLN = 9;
|
RCC_OscInitStruct.PLL.PLLN = 18;
|
||||||
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
|
RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV2;
|
||||||
RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
|
RCC_OscInitStruct.PLL.PLLQ = RCC_PLLQ_DIV2;
|
||||||
RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
|
RCC_OscInitStruct.PLL.PLLR = RCC_PLLR_DIV2;
|
||||||
|
|
|
@ -351,23 +351,23 @@ RCC.FCLKCortexFreq_Value=72000000
|
||||||
RCC.FDCANFreq_Value=72000000
|
RCC.FDCANFreq_Value=72000000
|
||||||
RCC.FamilyName=M
|
RCC.FamilyName=M
|
||||||
RCC.HCLKFreq_Value=72000000
|
RCC.HCLKFreq_Value=72000000
|
||||||
RCC.HSE_VALUE=8000000
|
|
||||||
RCC.HSI48_VALUE=48000000
|
RCC.HSI48_VALUE=48000000
|
||||||
RCC.HSI_VALUE=16000000
|
RCC.HSI_VALUE=16000000
|
||||||
RCC.I2C1Freq_Value=72000000
|
RCC.I2C1Freq_Value=72000000
|
||||||
RCC.I2C2Freq_Value=72000000
|
RCC.I2C2Freq_Value=72000000
|
||||||
RCC.I2C3Freq_Value=72000000
|
RCC.I2C3Freq_Value=72000000
|
||||||
RCC.I2SFreq_Value=72000000
|
RCC.I2SFreq_Value=72000000
|
||||||
RCC.IPParameters=ADC12Freq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CRSFreq_Value,CortexFreq_Value,EXTERNAL_CLOCK_VALUE,FCLKCortexFreq_Value,FDCANFreq_Value,FamilyName,HCLKFreq_Value,HSE_VALUE,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2SFreq_Value,LPTIM1Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PWRFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART4Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value
|
RCC.IPParameters=ADC12Freq_Value,AHBFreq_Value,APB1Freq_Value,APB1TimFreq_Value,APB2Freq_Value,APB2TimFreq_Value,CRSFreq_Value,CortexFreq_Value,EXTERNAL_CLOCK_VALUE,FCLKCortexFreq_Value,FDCANFreq_Value,FamilyName,HCLKFreq_Value,HSI48_VALUE,HSI_VALUE,I2C1Freq_Value,I2C2Freq_Value,I2C3Freq_Value,I2SFreq_Value,LPTIM1Freq_Value,LPUART1Freq_Value,LSCOPinFreq_Value,LSI_VALUE,MCO1PinFreq_Value,PLLN,PLLPoutputFreq_Value,PLLQoutputFreq_Value,PLLRCLKFreq_Value,PLLSourceVirtual,PWRFreq_Value,RNGFreq_Value,RTCClockSelection,RTCFreq_Value,SAI1Freq_Value,SYSCLKFreq_VALUE,SYSCLKSource,UART4Freq_Value,USART1Freq_Value,USART2Freq_Value,USART3Freq_Value,USBFreq_Value,VCOInputFreq_Value,VCOOutputFreq_Value
|
||||||
RCC.LPTIM1Freq_Value=72000000
|
RCC.LPTIM1Freq_Value=72000000
|
||||||
RCC.LPUART1Freq_Value=72000000
|
RCC.LPUART1Freq_Value=72000000
|
||||||
RCC.LSCOPinFreq_Value=32000
|
RCC.LSCOPinFreq_Value=32000
|
||||||
RCC.LSI_VALUE=32000
|
RCC.LSI_VALUE=32000
|
||||||
RCC.MCO1PinFreq_Value=16000000
|
RCC.MCO1PinFreq_Value=16000000
|
||||||
RCC.PLLN=9
|
RCC.PLLN=18
|
||||||
RCC.PLLPoutputFreq_Value=72000000
|
RCC.PLLPoutputFreq_Value=72000000
|
||||||
RCC.PLLQoutputFreq_Value=72000000
|
RCC.PLLQoutputFreq_Value=72000000
|
||||||
RCC.PLLRCLKFreq_Value=72000000
|
RCC.PLLRCLKFreq_Value=72000000
|
||||||
|
RCC.PLLSourceVirtual=RCC_PLLSOURCE_HSE
|
||||||
RCC.PWRFreq_Value=72000000
|
RCC.PWRFreq_Value=72000000
|
||||||
RCC.RNGFreq_Value=72000000
|
RCC.RNGFreq_Value=72000000
|
||||||
RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE
|
RCC.RTCClockSelection=RCC_RTCCLKSOURCE_LSE
|
||||||
|
@ -380,7 +380,7 @@ RCC.USART1Freq_Value=72000000
|
||||||
RCC.USART2Freq_Value=72000000
|
RCC.USART2Freq_Value=72000000
|
||||||
RCC.USART3Freq_Value=72000000
|
RCC.USART3Freq_Value=72000000
|
||||||
RCC.USBFreq_Value=72000000
|
RCC.USBFreq_Value=72000000
|
||||||
RCC.VCOInputFreq_Value=16000000
|
RCC.VCOInputFreq_Value=8000000
|
||||||
RCC.VCOOutputFreq_Value=144000000
|
RCC.VCOOutputFreq_Value=144000000
|
||||||
RTC.Format=RTC_FORMAT_BIN
|
RTC.Format=RTC_FORMAT_BIN
|
||||||
RTC.IPParameters=Format,WeekDay
|
RTC.IPParameters=Format,WeekDay
|
||||||
|
|
Loading…
Reference in New Issue