590 lines
14 KiB
C
590 lines
14 KiB
C
/********************************************************************************
|
||
Copyright (C), Sinowealth Electronic. Ltd.
|
||
Author: Sino
|
||
Version: V0.0
|
||
Date: 2020/04/26
|
||
History:
|
||
V2.0 2020/04/26 Preliminary
|
||
********************************************************************************/
|
||
#include "Main.h"
|
||
|
||
|
||
/*************************************************************************************************
|
||
* 函数名: InitVar
|
||
* 参 数: 无
|
||
* 返回值: 无
|
||
* 描 述: 初始化变量,主要是非0变量。在ClrRam()函数中,已将所有Xdata/Idata/Data区全部清零
|
||
*************************************************************************************************/
|
||
void InitVar(void)
|
||
{
|
||
ucBalanceStep = BALANCE_ENABLE;
|
||
MemorySet((U8 xdata *)slCadcCurBuf, 0, sizeof(slCadcCurBuf));
|
||
MemorySet((U8 xdata *)Info.uiVCell, 0, sizeof(Info.uiVCell));
|
||
Info.uiTS[0] = 2731;
|
||
Info.uiTS[1] = 2731;
|
||
|
||
bSlowDischarge = 0;
|
||
bMidDischarge = 0;
|
||
ucDsgingSpeed = 2;
|
||
bFastDischarge = 1;
|
||
bPorSelfTestFlg = 1;
|
||
|
||
ucTempeMiddle = 80;
|
||
}
|
||
|
||
/*************************************************************************************************
|
||
* 函数名: SysParaInit
|
||
* 参 数: 无
|
||
* 返回值: 无
|
||
* 描 述: 从MCU Flash参数区读取数据,并针对部分变量进行初始化
|
||
*************************************************************************************************/
|
||
void SysParaInit(void)
|
||
{
|
||
if(McuFlashCheckFlg(MCUFLASH_BK1_FLG_ADDR))
|
||
{
|
||
McuFlashRead(MCUFLASH_BK1_ADDR, XRAM_MAP_ADDR, 512);
|
||
if(!McuFlashCheckFlg(MCUFLASH_BK2_FLG_ADDR))
|
||
{
|
||
McuFlashWrite(MCUFLASH_BK2_ADDR, XRAM_MAP_ADDR); //更新备份区2
|
||
}
|
||
}
|
||
else if(McuFlashCheckFlg(MCUFLASH_BK2_FLG_ADDR))
|
||
{
|
||
McuFlashRead(MCUFLASH_BK2_ADDR, XRAM_MAP_ADDR, 512);
|
||
McuFlashWrite(MCUFLASH_BK1_ADDR, XRAM_MAP_ADDR); //更新备份区1
|
||
}
|
||
else
|
||
{
|
||
bMcuFlashErr = 1;
|
||
return;
|
||
}
|
||
|
||
uiPackConfig = E2uiPackConfigMap;
|
||
Info.uiPackConfig = uiPackConfig;
|
||
Info.ulFCC = E2ulFCC;
|
||
Info.uiCycleCount = E2uiCycleCount;
|
||
|
||
ucCellNum = (uiPackConfig&0x0007)+3; //根据配置初始化电芯串数和Offset
|
||
|
||
if(ucCellNum==5 || ucCellNum==10)
|
||
{
|
||
ucCellNumOffset = 0;
|
||
}
|
||
else if(ucCellNum==4 || ucCellNum==9)
|
||
{
|
||
ucCellNumOffset = 1;
|
||
}
|
||
else
|
||
{
|
||
ucCellNumOffset = 2;
|
||
}
|
||
}
|
||
|
||
/*************************************************************************************************
|
||
* 函数名: InitIRQ
|
||
* 参 数: 无
|
||
* 返回值: 无
|
||
* 描 述: 初始化中断
|
||
*************************************************************************************************/
|
||
void InitIRQ(void)
|
||
{
|
||
IrqDis(); //关闭总中断源
|
||
#if (UART0_DEFINE != 0)
|
||
IrqUart0En(); //初始化UART0中断使能,根据具体使用UART模块来进行选择 //检查UART0是否正常,如果不正常,则复位指针向量
|
||
#endif
|
||
#if (UART1_DEFINE != 0)
|
||
IrqUart1En(); //初始化UART1中断使能,根据具体使用UART模块来进行选择
|
||
#endif
|
||
#if (UART2_DEFINE != 0)
|
||
IrqUart2En(); //初始化UART2中断使能,根据具体使用UART模块来进行选择
|
||
#endif
|
||
|
||
IrqTimer3FlgClr(); //使能Timer3中断
|
||
IrqTimer3En();
|
||
|
||
IrqINT4xChEn(INT4_EXS45 | INT4_EXS46);
|
||
IrqINT4Trig(INT4_TRIG_FALLING); //下降沿触发
|
||
IrqINT4FlgClr(); //清外部中断标志
|
||
IrqINT4En(); //使能外部中断4
|
||
|
||
IrqEn();
|
||
}
|
||
|
||
|
||
/*************************************************************************************************
|
||
* 函数名: InitGPIO
|
||
* 参 数: 无
|
||
* 返回值: 无
|
||
* 描 述: 初始化I/O端口,未使用的I/O,默认配置为输出低电平,降低MCU功耗
|
||
P0.7[TXD], P0.6[RXD], P0.5[SCL], P0.4[SDA], P0.3[BLPW], P0.2[], P0.1[], P0.0[],
|
||
P0.7ST[1], P0.6ST[1], P0.5ST[1], P0.4ST[1], P0.3ST[1], P0.2ST[0], P0.1ST[0], P0.0ST[0], P0 = 0xF8;
|
||
P0.7CR[1], P0.6CR[0], P0.5CR[0], P0.4CR[0], P0.3CR[1], P0.2CR[1], P0.1CR[1], P0.0CR[1], P0CR = 0x8F;
|
||
P0.7PC[1], P0.6PC[1], P0.5PC[0], P0.4PC[0], P0.3PC[1], P0.2PC[0], P0.1PC[0], P0.0PC[0], P0PCR = 0xC8;
|
||
|
||
P1.7[RESET],P1.6[], P1.5[], P1.4[], P1.3[], P1.2[], P1.1[], P1.0[],
|
||
P1.7ST[1], P1.6ST[0], P1.5ST[0], P1.4ST[0], P1.3ST[0], P1.2ST[0], P1.1ST[0], P1.0ST[0], P1 = 0x80;
|
||
P1.7CR[0], P1.6CR[1], P1.5CR[1], P1.4CR[1], P1.3CR[1], P1.2CR[1], P1.1CR[1], P1.0CR[1], P1CR = 0x7F;
|
||
P1.7PC[1], P1.6PC[0], P1.5PC[0], P1.4PC[0], P1.3PC[0], P1.2PC[0], P1.1PC[0], P1.0PC[0], P1PCR = 0x80;
|
||
|
||
P2.7[KEY_M],P2.6[ALARM],P2.5[CTLD], P2.4[LED5], P2.3[LED4], P2.2[LED3], P2.1[LED2], P2.0[LED1],
|
||
P2.7ST[1], P2.6ST[1], P2.5ST[1], P2.4ST[0], P2.3ST[0], P2.2ST[0], P2.1ST[0], P2.0ST[0], P2 = 0xE0;
|
||
P2.7CR[0], P2.6CR[0], P2.5CR[1], P2.4CR[1], P2.3CR[1], P2.2CR[1], P2.1CR[1], P2.0CR[1], P2CR = 0x3F;
|
||
P2.7PC[1], P2.6PC[1], P2.5PC[0], P2.4PC[0], P2.3PC[0], P2.2PC[0], P2.1PC[0], P2.0PC[0], P2PCR = 0xC0;
|
||
|
||
P3.7[], P3.6[], P3.5[LED6], P3.4[XTAL1],P3.3[XTAL2],P3.2[], P3.1[], P3.0[KLED],
|
||
P3.7ST[0], P3.6ST[0], P3.5ST[0], P3.4ST[1], P3.3ST[1], P3.2ST[0], P3.1ST[0], P3.0ST[1], P3 = 0x19;
|
||
P3.7CR[1], P3.6CR[1], P3.5CR[1], P3.4CR[0], P3.3CR[0], P3.2CR[1], P3.1CR[1], P3.0CR[0], P3CR = 0xE6;
|
||
P3.7PC[0], P3.6PC[0], P3.5PC[0], P3.4PC[1], P3.3PC[1], P3.2PC[0], P3.1PC[0], P3.0PC[1], P3PCR = 0x19;
|
||
*************************************************************************************************/
|
||
/*************************************************************************************************
|
||
* 函数名: InitGPIO_SL
|
||
* 参 数: 无
|
||
* 返回值: 无
|
||
* 描 述: 初始化I/O端口,未使用的I/O,默认配置为输出低电平,降低MCU功耗
|
||
P0.7[TX], P0.6[RX], P0.5[SCL], P0.4[SDA], P0.3[], P0.2[], P0.1[], P0.0[], IO状态:P0.[7,6,5,4,3]有效
|
||
P0.7ST[1], P0.6ST[1], P0.5ST[1], P0.4ST[1], P0.3ST[0], P0.2ST[0], P0.1ST[0], P0.0ST[0], P0 = 0xF0; IO状态:P0.[7,6,5,4,3]有效
|
||
P0.7CR[1], P0.6CR[0], P0.5CR[0], P0.4CR[0], P0.3CR[1], P0.2CR[1], P0.1CR[1], P0.0CR[1], P0CR = 0x8F; IO方向:P0.[7,6,5,4,3]有效,1输出,0输入
|
||
P0.7PC[1], P0.6PC[1], P0.5PC[0], P0.4PC[0], P0.3PC[0], P0.2PC[0], P0.1PC[0], P0.0PC[0], P0PCR = 0xC0; 内部上拉:1开启,0关闭
|
||
|
||
P1.7[RESET],P1.6[], P1.5[], P1.4[], P1.3[], P1.2[], P1.1[], P1.0[], IO状态:P1.[7,6,5,4,3,2]有效
|
||
P1.7ST[1], P1.6ST[0], P1.5ST[0], P1.4ST[0], P1.3ST[0], P1.2ST[0], P1.1ST[0], P1.0ST[0], P1 = 0x80; IO状态:P1.[7,6,5,4,3,2]有效
|
||
P1.7CR[0], P1.6CR[1], P1.5CR[1], P1.4CR[1], P1.3CR[1], P1.2CR[1], P1.1CR[1], P1.0CR[1], P1CR = 0x7F; IO方向:P1.[7,6,5,4,3,2]有效,1输出,0输入
|
||
P1.7PC[1], P1.6PC[0], P1.5PC[0], P1.4PC[0], P1.3PC[0], P1.2PC[0], P1.1PC[0], P1.0PC[0], P1PCR = 0x80; 内部上拉:1开启,0关闭
|
||
|
||
P2.7[], P2.6[ALARM],P2.5[], P2.4[LED], P2.3[], P2.2[], P2.1[], P2.0[485_DE], IO状态:P2.[7,6,5,4,3,2,1,0]有效
|
||
P2.7ST[0], P2.6ST[1], P2.5ST[0], P2.4ST[0], P2.3ST[0], P2.2ST[1], P2.1ST[1], P2.0ST[0], P2 = 0x46; IO状态:P2.[7,6,5,4,3,2,1,0]有效
|
||
P2.7CR[1], P2.6CR[0], P2.5CR[1], P2.4CR[1], P2.3CR[1], P2.2CR[0], P2.1CR[1], P2.0CR[1], P2CR = 0xBB; IO方向:P2.[7,6,5,4,3,2,1,0]有效,1输出,0输入
|
||
P2.7PC[0], P2.6PC[1], P2.5PC[0], P2.4PC[0], P2.3PC[0], P2.2PC[1], P2.1PC[1], P2.0PC[1], P2PCR = 0x46; 内部上拉:1开启,0关闭
|
||
|
||
P3.7[], P3.6[], P3.5[BAT_V_C], P3.4[XTAL1],P3.3[XTAL2],P3.2[], P3.1[], P3.0[BAT_V], IO状态:P3.[5,4,3,...,0]有效
|
||
P3.7ST[0], P3.6ST[0], P3.5ST[0], P3.4ST[1], P3.3ST[1], P3.2ST[0], P3.1ST[0], P3.0ST[0], P3 = 0x18; IO状态:P3.[5,4,3,...,0]有效
|
||
P3.7CR[1], P3.6CR[1], P3.5CR[1], P3.4CR[0], P3.3CR[0], P3.2CR[1], P3.1CR[1], P3.0CR[0], P3CR = 0xE6; IO方向:P3.[5,4,3,...,0]有效,1输出,0输入
|
||
P3.7PC[0], P3.6PC[0], P3.5PC[0], P3.4PC[1], P3.3PC[1], P3.2PC[0], P3.1PC[0], P3.0PC[0], P3PCR = 0x18; 内部上拉:1开启,0关闭
|
||
*************************************************************************************************/
|
||
void InitGPIO(void)
|
||
{
|
||
|
||
P0 = 0xF0;
|
||
P0CR = 0x8F;
|
||
P0PCR = 0xC0;
|
||
|
||
P1 = 0x80;
|
||
P1CR = 0x7F;
|
||
P1PCR = 0x80;
|
||
|
||
P2 = 0x46;
|
||
P2CR = 0xBB;
|
||
P2PCR = 0x46;
|
||
|
||
P3 = 0x18;
|
||
P3CR = 0xE6;
|
||
P3PCR = 0x18;
|
||
|
||
//UART0相关IO配置 串口功能映射时注意配置相应IO口的寄存器值,保证功能可正常实现
|
||
#if (UART0_DEFINE == 1)
|
||
P0 |= 0xC0;
|
||
P0PCR |= 0x80;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 2)
|
||
P0 |= 0x40;
|
||
P2 |= 0x10;
|
||
P2PCR |= 0x10;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 3)
|
||
P0 |= 0x40;
|
||
P2 |= 0x20;
|
||
P2PCR |= 0x20;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 4)
|
||
P0 |= 0x41;
|
||
P0PCR |= 0x01;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 5)
|
||
P0 |= 0x42;
|
||
P0PCR |= 0x02;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 6)
|
||
P0 |= 0xC0;
|
||
P0PCR |= 0x40;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 7)
|
||
P0 |= 0x80;
|
||
P2 |= 0x10;
|
||
P2PCR |= 0x10;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 8)
|
||
P0 |= 0x80;
|
||
P2 |= 0x20;
|
||
P2PCR |= 0x20;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 9)
|
||
P0 |= 0x81;
|
||
P0PCR |= 0x01;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 10)
|
||
P0 |= 0x82;
|
||
P0PCR |= 0x02;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 11)
|
||
P0 |= 0x40;
|
||
P2 |= 0x10;
|
||
P0PCR |= 0x40;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 12)
|
||
P0 |= 0x80;
|
||
P2 |= 0x10;
|
||
P0PCR |= 0x80;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 13)
|
||
P2 |= 0x30;
|
||
P2PCR |= 0x20;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 14)
|
||
P0 |= 0x01;
|
||
P2 |= 0x10;
|
||
P0PCR |= 0x01;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 15)
|
||
P0 |= 0x02;
|
||
P2 |= 0x10;
|
||
P0PCR |= 0x02;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 16)
|
||
P0 |= 0x40;
|
||
P2 |= 0x20;
|
||
P0PCR |= 0x40;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 17)
|
||
P0 |= 0x80;
|
||
P2 |= 0x20;
|
||
P0PCR |= 0x80;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 18)
|
||
P2 |= 0x30;
|
||
P2PCR |= 0x10;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 19)
|
||
P0 |= 0x01;
|
||
P2 |= 0x20;
|
||
P0PCR |= 0x01;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 20)
|
||
P0 |= 0x02;
|
||
P2 |= 0x20;
|
||
P0PCR |= 0x02;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 21)
|
||
P0 |= 0x81;
|
||
P0PCR |= 0x80;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 22)
|
||
P0 |= 0x01;
|
||
P2 |= 0x10;
|
||
P2PCR |= 0x10;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 23)
|
||
P0 |= 0x01;
|
||
P2 |= 0x20;
|
||
P2PCR |= 0x20;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 24)
|
||
P0 |= 0x41;
|
||
P0PCR |= 0x40;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 25)
|
||
P0 |= 0x03;
|
||
P0PCR |= 0x02;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 26)
|
||
P0 |= 0x82;
|
||
P0PCR |= 0x80;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 27)
|
||
P0 |= 0x02;
|
||
P2 |= 0x10;
|
||
P2PCR |= 0x10;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 28)
|
||
P0 |= 0x02;
|
||
P2 |= 0x20;
|
||
P2PCR |= 0x20;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 29)
|
||
P0 |= 0x42;
|
||
P0PCR |= 0x40;
|
||
#endif
|
||
|
||
#if (UART0_DEFINE == 30)
|
||
P0 |= 0x03;
|
||
P0PCR |= 0x01;
|
||
#endif
|
||
|
||
//UART1相关IO配置
|
||
#if (UART1_DEFINE == 1)
|
||
P1 |= 0x03;
|
||
P1PCR |= 0x02;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 2)
|
||
P1 |= 0x01;
|
||
P3 |= 0x08;
|
||
P3PCR |= 0x08;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 3)
|
||
P1 |= 0x01;
|
||
P3 |= 0x10;
|
||
P3PCR |= 0x10;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 4)
|
||
P1 |= 0x01;
|
||
P2 |= 0x40;
|
||
P2PCR |= 0x40;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 5)
|
||
P1 |= 0x01;
|
||
P2 |= 0x80;
|
||
P2PCR |= 0x80;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 6)
|
||
P1 |= 0x03;
|
||
P1PCR |= 0x01;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 7)
|
||
P1 |= 0x02;
|
||
P3 |= 0x08;
|
||
P3PCR |= 0x08;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 8)
|
||
P1 |= 0x02;
|
||
P3 |= 0x10;
|
||
P3PCR |= 0x10;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 9)
|
||
P1 |= 0x02;
|
||
P2 |= 0x40;
|
||
P2PCR |= 0x40;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 10)
|
||
P1 |= 0x02;
|
||
P2 |= 0x80;
|
||
P2PCR |= 0x80;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 11)
|
||
P1 |= 0x01;
|
||
P3 |= 0x08;
|
||
P1PCR |= 0x01;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 12)
|
||
P1 |= 0x02;
|
||
P3 |= 0x08;
|
||
P1PCR |= 0x01;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 13)
|
||
P3 |= 0x18;
|
||
P3PCR |= 0x10;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 14)
|
||
P3 |= 0x08;
|
||
P2 |= 0x40;
|
||
P2PCR |= 0x40;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 15)
|
||
P3 |= 0x08;
|
||
P2 |= 0x80;
|
||
P2PCR |= 0x80;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 16)
|
||
P1 |= 0x01;
|
||
P3 |= 0x10;
|
||
P1PCR |= 0x01;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 17)
|
||
P1 |= 0x02;
|
||
P3 |= 0x10;
|
||
P1PCR |= 0x02;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 18)
|
||
P3 |= 0x18;
|
||
P3PCR |= 0x08;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 19)
|
||
P3 |= 0x10;
|
||
P2 |= 0x40;
|
||
P2PCR |= 0x40;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 20)
|
||
P3 |= 0x10;
|
||
P2 |= 0x80;
|
||
P2PCR |= 0x80;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 21)
|
||
P1 |= 0x01;
|
||
P2 |= 0x40;
|
||
P1PCR |= 0x01;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 22)
|
||
P1 |= 0x02;
|
||
P2 |= 0x40;
|
||
P1PCR |= 0x02;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 23)
|
||
P2 |= 0x40;
|
||
P3 |= 0x08;
|
||
P3PCR |= 0x08;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 24)
|
||
P3 |= 0x10;
|
||
P2 |= 0x40;
|
||
P3PCR |= 0x10;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 25)
|
||
P2 |= 0xC0;
|
||
P2PCR |= 0x80;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 26)
|
||
P1 |= 0x01;
|
||
P2 |= 0x80;
|
||
P1PCR |= 0x01;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 27)
|
||
P1 |= 0x02;
|
||
P2 |= 0x80;
|
||
P1PCR |= 0x02;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 28)
|
||
P2 |= 0x80;
|
||
P3 |= 0x08;
|
||
P3PCR |= 0x08;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 29)
|
||
P3 |= 0x10;
|
||
P2 |= 0x80;
|
||
P3PCR |= 0x10;
|
||
#endif
|
||
|
||
#if (UART1_DEFINE == 30)
|
||
P2 |= 0xC0;
|
||
P2PCR |= 0x40;
|
||
#endif
|
||
|
||
//UART2相关IO配置,当前demo板此串口做LED灯显示功能,不支持串口通讯,故demo板配置为不使能uart2串口功能
|
||
#if (UART2_DEFINE == 1)
|
||
P2 |= 0x06;
|
||
P2PCR |= 0x04;
|
||
#endif
|
||
}
|
||
|
||
/*************************************************************************************************
|
||
* 函数名: Initial
|
||
* 参 数: 无
|
||
* 返回值: 无
|
||
* 描 述: 初始化
|
||
*************************************************************************************************/
|
||
void Initial(void)
|
||
{
|
||
McuClockSet(MCU_CLK_24MHz); //设置系统工作在24MHz
|
||
|
||
InitGPIO(); //初始化GPIO
|
||
|
||
// ClrRam(); //清空MCU RAM(XDATA、IDATA、DATA)
|
||
|
||
SysParaInit(); //初始化系统参数
|
||
|
||
InitVar(); //初始化变量
|
||
|
||
McuTimer3Set(TIM_CLK_128KHz, 5); //初始化Timer,采用128KHz外置晶振,周期为5mS
|
||
|
||
#if (UART0_DEFINE != 0)
|
||
UART0Init(); //初始化UART0模块,9600Bps
|
||
#endif
|
||
|
||
#if (UART1_DEFINE != 0)
|
||
UART1Init(); //初始化UART0模块,9600Bps
|
||
#endif
|
||
|
||
#if (UART2_DEFINE != 0)
|
||
UART2Init(); //初始化UART0模块,9600Bps
|
||
#endif
|
||
|
||
TwiInit(); //初始化TWI模块,通讯频率为100Khz
|
||
|
||
McuPWM2Set(4000, 100); //初始化PWM2,占空比100%
|
||
|
||
AFEInitReg(); //初始化AFE寄存器
|
||
if(!AFEInit()) //初始化AFE,MCU是由AFE的V33供电的,当MCU工作时,AFE已经准备好通讯了
|
||
{
|
||
bAfeErr = 1;
|
||
}
|
||
AFEClrFlg(); //清零AFE状态寄存器
|
||
|
||
if(bEnEEPRomBK)
|
||
{
|
||
if(!E2PRomInit())
|
||
{
|
||
bE2PRErr = 1; //外挂EEPROM模块出错
|
||
}
|
||
|
||
if(!RTCInitTime(&RTC))
|
||
{
|
||
bRTCErr = 1; //外置RTC模块出错
|
||
}
|
||
}
|
||
|
||
InitIRQ(); //初始化中断
|
||
}
|