ZDBMS/code_app/Main.c

142 lines
4.1 KiB
C
Raw Normal View History

2025-02-06 07:35:32 +00:00
/********************************************************************************
Copyright (C), Sinowealth Electronic. Ltd.
Author: Sino
Version: V0.0
Date: 2020/04/26
History:
V2.0 2020/04/26 Preliminary
********************************************************************************/
#include "Main.h"
#include "stdio.h"
// <20><><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD>
char putchar(char c)
{
REN = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IO_485_DE = 1; // <20><><EFBFBD><EFBFBD>485<38><35><EFBFBD><EFBFBD>
SBUF = c; // <20><>
while(!TI);
IO_485_DE = 0; // <20>ر<EFBFBD>485<38><35><EFBFBD><EFBFBD>
TI = 0;
return c;
}
/*************************************************************************************************
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: main
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ: <EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD> <EFBFBD><EFBFBD>: <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󣬳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>While(1)<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѭ<EFBFBD><EFBFBD>
1.<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>
2.<EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><EFBFBD>
*************************************************************************************************/
void main(void)
{
Initial(); //<2F><>ʼ<EFBFBD><CABC>ϵͳ
2025-02-08 07:27:19 +00:00
// printf("SystemClock: 8MHz");
2025-02-06 07:35:32 +00:00
while(1)
{
//KeyProcess(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(bTimer50msFlg) //50mS<6D><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD>AFE<46><45><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>ݲɼ<DDB2><C9BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E3A1A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
McuWDTClear(); //<2F><>ʱ<EFBFBD>
2025-02-08 07:27:19 +00:00
2025-02-06 07:35:32 +00:00
bTimer50msFlg = 0;
AFEInfoProcess(); //<2F><>ȡAFE<46><45>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>¶ȡ<C2B6><C8A1><EFBFBD><EFBFBD><EFBFBD>
BalanceProcess(); //ƽ<><EFBFBD><E2BCB0><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
ProtectProcess(); //<2F><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶ȱ<C2B6><C8B1><EFBFBD>
PorSelfTest(); //<2F><>һ<EFBFBD><D2BB><EFBFBD>ϵ籣<CFB5><E7B1A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E2A3A8>ʱ<EFBFBD>϶̣<CFB6><CCA3>ݶ<EFBFBD>50mSһ<53>μ<EFBFBD><CEBC>
LoadCheck(); //<2F><><EFBFBD><EFBFBD><E2B8BA><EFBFBD>Ƿ<EFBFBD><C7B7>ͷ<EFBFBD>
ChgerCheck(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ͷ<EFBFBD>
MosCtrl(); //MOS״̬<D7B4><CCAC><EFBFBD><EFBFBD><E2BCB0><EFBFBD><EFBFBD>
ProtectOCRecover(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Իָ<D4BB>
//LedDisplay(); //LED<45><44>ʾ
#if (UART0_DEFINE != 0)
Uart0Check(); //<2F><><EFBFBD><EFBFBD>UART0<54>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λָ<CEBB><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#endif
#if (UART1_DEFINE != 0)
Uart1Check(); //<2F><><EFBFBD><EFBFBD>UART1<54>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λָ<CEBB><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#endif
#if (UART2_DEFINE != 0)
Uart2Check(); //<2F><><EFBFBD><EFBFBD>UART2<54>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λָ<CEBB><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#endif
}
if(bTimer1sFlg) //1s<31><73>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
{
IO_LED = ~IO_LED; //LED
2025-02-07 03:00:30 +00:00
// printf("\r\n");
// printf("BAT0:%.2f mV\r\n", AFE.uiCell[0]*1.0*CALIVOL/E2uiVPackGain);
// printf("BAT1:%.2f mV\r\n", AFE.uiCell[1]*1.0*CALIVOL/E2uiVPackGain);
// printf("BAT2:%.2f mV\r\n", AFE.uiCell[2]*1.0*CALIVOL/E2uiVPackGain);
// printf("BAT3:%.2f mV\r\n", AFE.uiCell[3]*1.0*CALIVOL/E2uiVPackGain);
// printf("BAT4:%.2f mV\r\n", AFE.uiCell[4]*1.0*CALIVOL/E2uiVPackGain);
// printf("TOTAL:%.2f mV\r\n",(AFE.uiCell[1]+AFE.uiCell[2]+AFE.uiCell[3]+AFE.uiCell[4])*1.0*CALIVOL/E2uiVPackGain);
//
// printf("\r\n");
// printf("TEMP I0:%.2f C\r\n", AFE.uiICTempe[0]*17.0/100.0-270);
// printf("TEMP I1:%.2f C\r\n", AFE.uiICTempe[1]*17.0/100.0-270);
// printf("TEMP E0:%.2f C\r\n", AFE.uiTS[0]*1.0);
// printf("TEMP E1:%.2f C\r\n", AFE.uiTS[1]*1.0);
//
// printf("\r\n");
// printf("CURR I1:%.2f mA\r\n", AFE.siCurr*1000.0*1000.0/16384/5);
// printf("\r\nBSTATUS:%x\r\n", REG.AFEBSTATUS);
2025-02-06 07:35:32 +00:00
bTimer1sFlg = 0;
GasGaugeManage(); //Calculate the battery charge and discharge capacity
AFERamCheck(); //<2F><><EFBFBD><EFBFBD>AFE<46>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>д
AFETwiCheck(); //<2F><><EFBFBD><EFBFBD>AFE<46><45><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5SͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>
E2PRomTwiCheck(); //<2F><><EFBFBD><EFBFBD>EEPROM<4F><4D><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5SͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>
RTCTwiCheck(); //<2F><><EFBFBD><EFBFBD>RTC<54><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>5SͨѶ<CDA8><D1B6><EFBFBD><EFBFBD>
if(!RamCheckProcess()) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>д
{
SysParaInit();
}
McuFlashWrWaitCheck(); //<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>Ҫ<EFBFBD><D2AA><EFBFBD>²<EFBFBD><C2B2><EFBFBD><EFBFBD><EFBFBD>MCU Flash
E2PRomBKCheck(); //<2F><><EFBFBD><EFBFBD>EEPROM
//LowPowerCheck(); //<2F>͹<EFBFBD><CDB9>ļ<EFBFBD><C4BC><EFBFBD>
}
SystemResetProcess(); //ϵͳ<CFB5><CDB3>λ
ISPProcess(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CaliProcess(); //У׼
McuFlashProcess(); //<2F><><EFBFBD>ݲ<EFBFBD><DDB2><EFBFBD><EFBFBD><EFBFBD>MCU Flash<73><68>
E2PRomBKProcess(); //<2F><><EFBFBD><EFBFBD>EEPROM<4F><4D><EFBFBD><EFBFBD>
//LowPowerProcess(); //<2F>͹<EFBFBD><CDB9>Ĵ<EFBFBD><C4B4><EFBFBD>
Info.uiPackStatus = uiPackStatus; //<2F><><EFBFBD><EFBFBD>PACK<43><4B>Battery<72><79><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>UART<52><54><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Info.uiBatStatus = uiBatStatus;
}
}