410 lines
18 KiB
C
410 lines
18 KiB
C
/*******************************************************************************
|
||
* @Copyright (c) :(C)2016, Qingdao ieslab Co., Ltd
|
||
* @FileName :GP22Gas_sys.c
|
||
* @Author :Team
|
||
* @Version :V1.0
|
||
* @Date :2016年4月23日 10:53:39
|
||
* @Description :the function of the entity of GP22Gas_sys.c
|
||
*******************************************************************************/
|
||
#include "sys_config.h"
|
||
#include "UWater_sys.h"
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
|
||
//#pragma clang diagnostic push
|
||
//#pragma clang diagnostic ignored "-Wunknown-attributes"
|
||
|
||
#define __no_init __attribute__((zero_init))
|
||
/*
|
||
__no_init volatile float gp22_copy_total_flow __attribute__((section(".ARM.__at_0x20007F00")));
|
||
__no_init volatile float gp22_copy_total_flow_reverse __attribute__((section(".ARM.__at_0x20007F04")));
|
||
__no_init volatile float gp22_copy_total_flow_test __attribute__((section(".ARM.__at_0x20007F08")));
|
||
__no_init volatile float gp22_copy_temp_total_flow_float_test __attribute__((section(".ARM.__at_0x20007F0C")));
|
||
__no_init volatile u32 gp22_copy_reset_flag_test __attribute__((section(".ARM.__at_0x20007F10")));
|
||
__no_init volatile u32 MCU_reset_judge __attribute__((section(".ARM.__at_0x20007F14")));
|
||
__no_init volatile float gp22_copy_temp_total_flow_float __attribute__((section(".ARM.__at_0x20007F18")));
|
||
__no_init volatile u16 record_last_calculative_time __attribute__((section(".ARM.__at_0x20007F1C"))); //用于记录距离上次计算的时间间隔,方便复位精确补偿
|
||
*/
|
||
__no_init volatile u32 meter_reset_cnt_reason __attribute__((section(".ARM.__at_0x20007F20")));//复位次数和原因
|
||
__no_init volatile u32 meter_boot_version __attribute__((section(".ARM.__at_0x20007F24")));//boot版本号
|
||
/*
|
||
__no_init volatile u32 jx_com_rxbuf_wcount_copy __attribute__((section(".ARM.__at_0x20007F28")));
|
||
__no_init volatile u32 jx_com_rxbuf_rcount_copy __attribute__((section(".ARM.__at_0x20007F2C")));
|
||
__no_init volatile u16 jx_com_rxbuf_check_copy __attribute__((section(".ARM.__at_0x20007F30")));
|
||
__no_init volatile u8 upload_again_cnt_copy __attribute__((section(".ARM.__at_0x20007F34")));
|
||
__no_init volatile float temp_calculate_last __attribute__((section(".ARM.__at_0x20007F38")));
|
||
__no_init volatile float limit_valve_total_flow __attribute__((section(".ARM.__at_0x20007F40")));//纪录关阀时的流量*/
|
||
|
||
|
||
|
||
void Clk_Init(void)
|
||
{
|
||
//时钟分频
|
||
Sysctrl_SetHCLKDiv(SysctrlHclkDiv1);///> 配置SYSCLK-> HCLK 的分频因子
|
||
Sysctrl_SetPCLKDiv(SysctrlPclkDiv1);///> 配置HCLK-> PCLK 的分频因子
|
||
|
||
///< RCH时钟不同频率的切换,需要先将时钟切换到RCL 32.768KHZ
|
||
Sysctrl_SetRCLTrim(SysctrlRclFreq32768); //设置RCL频率
|
||
Sysctrl_SetRCLStableTime(SysctrlRclStableCycle64); //稳定周期设置
|
||
Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE); //使能目标时钟源
|
||
Sysctrl_SysClkSwitch(SysctrlClkRCL); //切换到新的时钟源
|
||
|
||
///< 内部高速时钟频率加载
|
||
Sysctrl_SetRCHTrim(SysctrlRchFreq4MHz); //4M
|
||
///< 使能RCH
|
||
Sysctrl_ClkSourceEnable(SysctrlClkRCH, TRUE);
|
||
///< 时钟切换到RCH
|
||
Sysctrl_SysClkSwitch(SysctrlClkRCH);
|
||
|
||
Flash_Init(6, TRUE);
|
||
///< HCLK不超过24M:此处设置FLASH读等待周期为0 cycle
|
||
Flash_WaitCycle(FlashWaitCycle0);
|
||
|
||
///<使能GPIO模块时钟
|
||
Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
|
||
}
|
||
#if (HARDWARE_VERSION==0x14)//方壳表
|
||
void UnusedGpioInit(void)
|
||
{
|
||
stc_gpio_cfg_t stcGpioCfg;
|
||
DDL_ZERO_STRUCT(stcGpioCfg);
|
||
stcGpioCfg.enDir = GpioDirOut; ///< 端口方向配置->输出
|
||
stcGpioCfg.enDrv = GpioDrvL; ///< 端口驱动能力配置->低驱动能力
|
||
stcGpioCfg.enPu = GpioPuDisable; ///< 端口上下拉配置->无
|
||
stcGpioCfg.enPd = GpioPdDisable;
|
||
stcGpioCfg.enOD = GpioOdDisable; ///< 端口开漏输出配置->开漏输出关闭
|
||
stcGpioCfg.enCtrlMode = GpioAHB; ///< 端口输入/输出值寄存器总线控制模式配置->AHB
|
||
/*LED初始化*/
|
||
Gpio_Init(LED_PORT, LED_PIN, &stcGpioCfg);
|
||
Gpio_WriteOutputIO(LED_PORT, LED_PIN, TRUE );//LED OFF
|
||
|
||
// /*其他无用管脚初始化*/
|
||
// //PA5
|
||
// Gpio_Init(GpioPortA, GpioPin5, &stcGpioCfg);
|
||
// Gpio_WriteOutputIO(GpioPortA, GpioPin5, FALSE);
|
||
// //PA13
|
||
// Gpio_Init(GpioPortA, GpioPin13, &stcGpioCfg);
|
||
// Gpio_WriteOutputIO(GpioPortA, GpioPin13, FALSE);
|
||
// //PA14
|
||
// Gpio_Init(GpioPortA, GpioPin14, &stcGpioCfg);
|
||
// Gpio_WriteOutputIO(GpioPortA, GpioPin14, FALSE);
|
||
// //PA15
|
||
// Gpio_Init(GpioPortA, GpioPin15, &stcGpioCfg);
|
||
// Gpio_WriteOutputIO(GpioPortA, GpioPin15, FALSE);
|
||
// //PC10
|
||
// Gpio_Init(GpioPortC, GpioPin10, &stcGpioCfg);
|
||
// Gpio_WriteOutputIO(GpioPortC, GpioPin10, FALSE);
|
||
// //PE11
|
||
// Gpio_Init(GpioPortE, GpioPin11, &stcGpioCfg);
|
||
// Gpio_WriteOutputIO(GpioPortE, GpioPin11, FALSE);
|
||
//
|
||
// ////////////PA:GpioPin0|GpioPin1|GpioPin2|GpioPin3|GpioPin4|GpioPin5|GpioPin6|GpioPin7|GpioPin14|GpioPin15
|
||
Gpio_Init(GpioPortA, GpioPin0, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin1, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin2, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin3, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin4, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin5, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin6, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin7, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin13, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin14, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin15, &stcGpioCfg);
|
||
//
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin0, FALSE);//NB_MCUTX
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin1, FALSE);//NB_MCURX
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin2, FALSE);//NB_MCUWUIN------------
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin3, FALSE);//38K_IR_____________
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin4, FALSE); //null______________
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin5, FALSE);//NB_PSM_CHECK________
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin6, FALSE);//STA_CL
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin7, FALSE);//STA_OP
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin13,FALSE);//SWDIO
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin14,FALSE);//SWCLK
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin15,FALSE);//null
|
||
////
|
||
////////////PB
|
||
//Gpio_Init(GpioPortB, GpioPin7|GpioPin8|GpioPin9, &stcGpioCfg);
|
||
//Gpio_WriteOutputIO(GpioPortB, GpioPin7|GpioPin8|GpioPin9, FALSE);
|
||
Gpio_Init(GpioPortB, GpioPin7, &stcGpioCfg);
|
||
Gpio_Init(GpioPortB, GpioPin8, &stcGpioCfg);
|
||
Gpio_Init(GpioPortB, GpioPin9, &stcGpioCfg);
|
||
//
|
||
Gpio_WriteOutputIO(GpioPortB, GpioPin7, FALSE);//PT2466_SLEEP________
|
||
Gpio_WriteOutputIO(GpioPortB, GpioPin8, FALSE);//ESCL
|
||
Gpio_WriteOutputIO(GpioPortB, GpioPin9, FALSE);//ESDA
|
||
////
|
||
////////////PC
|
||
//Gpio_Init(GpioPortC, GpioPin0|GpioPin1|GpioPin2|GpioPin3|GpioPin10|GpioPin11|GpioPin12|GpioPin13, &stcGpioCfg);
|
||
//Gpio_WriteOutputIO(GpioPortC, GpioPin0|GpioPin1|GpioPin2|GpioPin3|GpioPin10|GpioPin11|GpioPin12|GpioPin13, FALSE);
|
||
Gpio_Init(GpioPortC, GpioPin0, &stcGpioCfg);
|
||
Gpio_Init(GpioPortC, GpioPin1, &stcGpioCfg);
|
||
Gpio_Init(GpioPortC, GpioPin2, &stcGpioCfg);
|
||
Gpio_Init(GpioPortC, GpioPin3, &stcGpioCfg);
|
||
Gpio_Init(GpioPortC, GpioPin10, &stcGpioCfg);
|
||
Gpio_Init(GpioPortC, GpioPin11, &stcGpioCfg);
|
||
Gpio_Init(GpioPortC, GpioPin12, &stcGpioCfg);
|
||
Gpio_Init(GpioPortC, GpioPin13, &stcGpioCfg);
|
||
//
|
||
Gpio_WriteOutputIO(GpioPortC, GpioPin0, FALSE);//BAT_CHECK_MCU
|
||
Gpio_WriteOutputIO(GpioPortC, GpioPin1, FALSE);//VstaOrADC_MCU
|
||
Gpio_WriteOutputIO(GpioPortC, GpioPin2, FALSE);//T_ADC_MCU
|
||
Gpio_WriteOutputIO(GpioPortC, GpioPin3, FALSE);//VALVE_ADC_V_MCU
|
||
Gpio_WriteOutputIO(GpioPortC, GpioPin10, FALSE);//KEY_Reserved_________
|
||
Gpio_WriteOutputIO(GpioPortC, GpioPin11, FALSE);//MCU_RX
|
||
Gpio_WriteOutputIO(GpioPortC, GpioPin12, FALSE);//MCU_TX
|
||
Gpio_WriteOutputIO(GpioPortC, GpioPin13, TRUE);//LED_CTL
|
||
//
|
||
////////////PD
|
||
//Gpio_Init(GpioPortD, GpioPin0|GpioPin1|GpioPin2|GpioPin3|GpioPin4, &stcGpioCfg);
|
||
//Gpio_WriteOutputIO(GpioPortD, GpioPin0|GpioPin1|GpioPin2|GpioPin3|GpioPin4, FALSE);
|
||
Gpio_Init(GpioPortD, GpioPin0, &stcGpioCfg);
|
||
Gpio_Init(GpioPortD, GpioPin1, &stcGpioCfg);
|
||
Gpio_Init(GpioPortD, GpioPin2, &stcGpioCfg);
|
||
Gpio_Init(GpioPortD, GpioPin3, &stcGpioCfg);
|
||
Gpio_Init(GpioPortD, GpioPin4, &stcGpioCfg);
|
||
//
|
||
Gpio_WriteOutputIO(GpioPortD, GpioPin0, FALSE);//nSSN_GP30
|
||
Gpio_WriteOutputIO(GpioPortD, GpioPin1, FALSE);//SCK_GP30
|
||
Gpio_WriteOutputIO(GpioPortD, GpioPin2, FALSE);//nINT_GP30
|
||
Gpio_WriteOutputIO(GpioPortD, GpioPin3, FALSE);//SO_GP30
|
||
Gpio_WriteOutputIO(GpioPortD, GpioPin4, FALSE);//SI_GP30
|
||
////////////PE
|
||
//Gpio_Init(GpioPortE, GpioPin2|GpioPin3|GpioPin4|GpioPin5|GpioPin11, &stcGpioCfg);
|
||
//Gpio_WriteOutputIO(GpioPortE, GpioPin2|GpioPin3|GpioPin4|GpioPin5|GpioPin11, FALSE);
|
||
Gpio_Init(GpioPortE, GpioPin2, &stcGpioCfg);
|
||
Gpio_Init(GpioPortE, GpioPin3, &stcGpioCfg);
|
||
Gpio_Init(GpioPortE, GpioPin4, &stcGpioCfg);
|
||
Gpio_Init(GpioPortE, GpioPin5, &stcGpioCfg);
|
||
Gpio_Init(GpioPortE, GpioPin11, &stcGpioCfg);
|
||
//
|
||
Gpio_WriteOutputIO(GpioPortE, GpioPin2, TRUE); //IR_CTL _________
|
||
Gpio_WriteOutputIO(GpioPortE, GpioPin3, FALSE);//EN_PWR_EE
|
||
Gpio_WriteOutputIO(GpioPortE, GpioPin4, FALSE);//EN_NB_PWR
|
||
Gpio_WriteOutputIO(GpioPortE, GpioPin5, FALSE); //EN_Bat_Check_________
|
||
Gpio_WriteOutputIO(GpioPortE, GpioPin11, TRUE);//KEY_INT___________
|
||
////////////PF
|
||
//Gpio_Init(GpioPortF, GpioPin0|GpioPin1|GpioPin4|GpioPin5|GpioPin6|GpioPin7, &stcGpioCfg);
|
||
//Gpio_WriteOutputIO(GpioPortF, GpioPin0|GpioPin1|GpioPin4|GpioPin5|GpioPin6|GpioPin7, FALSE);
|
||
Gpio_Init(GpioPortF, GpioPin0, &stcGpioCfg);
|
||
Gpio_Init(GpioPortF, GpioPin1, &stcGpioCfg);
|
||
Gpio_Init(GpioPortF, GpioPin4, &stcGpioCfg);
|
||
Gpio_Init(GpioPortF, GpioPin5, &stcGpioCfg);
|
||
Gpio_Init(GpioPortF, GpioPin6, &stcGpioCfg);
|
||
Gpio_Init(GpioPortF, GpioPin7, &stcGpioCfg);
|
||
//
|
||
Gpio_WriteOutputIO(GpioPortF, GpioPin0, FALSE);//NB_MCURESET
|
||
Gpio_WriteOutputIO(GpioPortF, GpioPin1, FALSE);//NB_MCUPWR
|
||
Gpio_WriteOutputIO(GpioPortF, GpioPin4, FALSE);//OPEN
|
||
Gpio_WriteOutputIO(GpioPortF, GpioPin5, FALSE);//CLOSE
|
||
Gpio_WriteOutputIO(GpioPortF, GpioPin6, FALSE);//TouchVCC__________
|
||
Gpio_WriteOutputIO(GpioPortF, GpioPin7, FALSE);//T_POWER
|
||
//异常复位次数先增加
|
||
Meter_ResetCountAdd(0x80);
|
||
if(meter_reset_cnt_reason<0xA55AFF00)
|
||
{
|
||
meter_reset_cnt_reason += 0x100;//复位次数
|
||
}
|
||
}
|
||
|
||
#elif (HARDWARE_VERSION==0x18)//圆壳表
|
||
void UnusedGpioInit(void)
|
||
{
|
||
stc_gpio_cfg_t stcGpioCfg;
|
||
DDL_ZERO_STRUCT(stcGpioCfg);
|
||
stcGpioCfg.enDir = GpioDirOut; ///< 端口方向配置->输出
|
||
stcGpioCfg.enDrv = GpioDrvL; ///< 端口驱动能力配置->低驱动能力
|
||
stcGpioCfg.enPu = GpioPuDisable; ///< 端口上下拉配置->无
|
||
stcGpioCfg.enPd = GpioPdDisable;
|
||
stcGpioCfg.enOD = GpioOdDisable; ///< 端口开漏输出配置->开漏输出关闭
|
||
stcGpioCfg.enCtrlMode = GpioAHB; ///< 端口输入/输出值寄存器总线控制模式配置->AHB
|
||
/*LED初始化*/
|
||
Gpio_Init(LED_PORT, LED_PIN, &stcGpioCfg);
|
||
Gpio_WriteOutputIO(LED_PORT, LED_PIN, TRUE );//LED OFF
|
||
|
||
// /*其他无用管脚初始化*/
|
||
// //PA5
|
||
// Gpio_Init(GpioPortA, GpioPin5, &stcGpioCfg);
|
||
// Gpio_WriteOutputIO(GpioPortA, GpioPin5, FALSE);
|
||
// //PA13
|
||
// Gpio_Init(GpioPortA, GpioPin13, &stcGpioCfg);
|
||
// Gpio_WriteOutputIO(GpioPortA, GpioPin13, FALSE);
|
||
// //PA14
|
||
// Gpio_Init(GpioPortA, GpioPin14, &stcGpioCfg);
|
||
// Gpio_WriteOutputIO(GpioPortA, GpioPin14, FALSE);
|
||
// //PA15
|
||
// Gpio_Init(GpioPortA, GpioPin15, &stcGpioCfg);
|
||
// Gpio_WriteOutputIO(GpioPortA, GpioPin15, FALSE);
|
||
// //PC10
|
||
// Gpio_Init(GpioPortC, GpioPin10, &stcGpioCfg);
|
||
// Gpio_WriteOutputIO(GpioPortC, GpioPin10, FALSE);
|
||
// //PE11
|
||
// Gpio_Init(GpioPortE, GpioPin11, &stcGpioCfg);
|
||
// Gpio_WriteOutputIO(GpioPortE, GpioPin11, FALSE);
|
||
//
|
||
// ////////////PA:GpioPin0|GpioPin1|GpioPin2|GpioPin3|GpioPin4|GpioPin5|GpioPin6|GpioPin7|GpioPin14|GpioPin15
|
||
Gpio_Init(GpioPortA, GpioPin0, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin1, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin2, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin3, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin4, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin5, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin6, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin7, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin13, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin14, &stcGpioCfg);
|
||
Gpio_Init(GpioPortA, GpioPin15, &stcGpioCfg);
|
||
//
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin0, FALSE);//NB_MCUTX
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin1, FALSE);//NB_MCURX
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin2, FALSE);//null______________
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin3, FALSE);//38K_IR_____________
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin4, FALSE); //T_POWER
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin5, FALSE);//T_ADC_MCU
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin6, FALSE);//null______________
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin7, FALSE);//null______________
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin13,FALSE);//SWDIO
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin14,FALSE);//SWCLK
|
||
Gpio_WriteOutputIO(GpioPortA, GpioPin15,FALSE);//null
|
||
////
|
||
////////////PB
|
||
//Gpio_Init(GpioPortB, GpioPin7|GpioPin8|GpioPin9, &stcGpioCfg);
|
||
//Gpio_WriteOutputIO(GpioPortB, GpioPin7|GpioPin8|GpioPin9, FALSE);
|
||
Gpio_Init(GpioPortB, GpioPin7, &stcGpioCfg);
|
||
Gpio_Init(GpioPortB, GpioPin8, &stcGpioCfg);
|
||
Gpio_Init(GpioPortB, GpioPin9, &stcGpioCfg);
|
||
//
|
||
Gpio_WriteOutputIO(GpioPortB, GpioPin7, FALSE);//EN_PWR_EE
|
||
Gpio_WriteOutputIO(GpioPortB, GpioPin8, FALSE);//ESCL
|
||
Gpio_WriteOutputIO(GpioPortB, GpioPin9, FALSE);//ESDA
|
||
////
|
||
////////////PC
|
||
//Gpio_Init(GpioPortC, GpioPin0|GpioPin1|GpioPin2|GpioPin3|GpioPin10|GpioPin11|GpioPin12|GpioPin13, &stcGpioCfg);
|
||
//Gpio_WriteOutputIO(GpioPortC, GpioPin0|GpioPin1|GpioPin2|GpioPin3|GpioPin10|GpioPin11|GpioPin12|GpioPin13, FALSE);
|
||
Gpio_Init(GpioPortC, GpioPin0, &stcGpioCfg);
|
||
Gpio_Init(GpioPortC, GpioPin1, &stcGpioCfg);
|
||
Gpio_Init(GpioPortC, GpioPin2, &stcGpioCfg);
|
||
Gpio_Init(GpioPortC, GpioPin3, &stcGpioCfg);
|
||
Gpio_Init(GpioPortC, GpioPin10, &stcGpioCfg);
|
||
Gpio_Init(GpioPortC, GpioPin11, &stcGpioCfg);
|
||
Gpio_Init(GpioPortC, GpioPin12, &stcGpioCfg);
|
||
Gpio_Init(GpioPortC, GpioPin13, &stcGpioCfg);
|
||
//
|
||
Gpio_WriteOutputIO(GpioPortC, GpioPin0, FALSE);//BAT_CHECK_MCU
|
||
Gpio_WriteOutputIO(GpioPortC, GpioPin1, FALSE);//VstaOrADC_MCU--null
|
||
Gpio_WriteOutputIO(GpioPortC, GpioPin2, FALSE);//NB_PSM_CHECK
|
||
Gpio_WriteOutputIO(GpioPortC, GpioPin3, FALSE);//VALVE_ADC_V_MCU--null
|
||
Gpio_WriteOutputIO(GpioPortC, GpioPin10, FALSE);//KEY_Reserved--null
|
||
Gpio_WriteOutputIO(GpioPortC, GpioPin11, FALSE);//MCU_RX
|
||
Gpio_WriteOutputIO(GpioPortC, GpioPin12, FALSE);//MCU_TX
|
||
Gpio_WriteOutputIO(GpioPortC, GpioPin13, FALSE);//KEY_Reserved
|
||
//
|
||
////////////PD
|
||
//Gpio_Init(GpioPortD, GpioPin0|GpioPin1|GpioPin2|GpioPin3|GpioPin4, &stcGpioCfg);
|
||
//Gpio_WriteOutputIO(GpioPortD, GpioPin0|GpioPin1|GpioPin2|GpioPin3|GpioPin4, FALSE);
|
||
Gpio_Init(GpioPortD, GpioPin0, &stcGpioCfg);
|
||
Gpio_Init(GpioPortD, GpioPin1, &stcGpioCfg);
|
||
Gpio_Init(GpioPortD, GpioPin2, &stcGpioCfg);
|
||
Gpio_Init(GpioPortD, GpioPin3, &stcGpioCfg);
|
||
Gpio_Init(GpioPortD, GpioPin4, &stcGpioCfg);
|
||
//
|
||
Gpio_WriteOutputIO(GpioPortD, GpioPin0, FALSE);//nSSN_GP30
|
||
Gpio_WriteOutputIO(GpioPortD, GpioPin1, FALSE);//SCK_GP30
|
||
Gpio_WriteOutputIO(GpioPortD, GpioPin2, FALSE);//nINT_GP30
|
||
Gpio_WriteOutputIO(GpioPortD, GpioPin3, FALSE);//SO_GP30
|
||
Gpio_WriteOutputIO(GpioPortD, GpioPin4, FALSE);//SI_GP30
|
||
////////////PE
|
||
//Gpio_Init(GpioPortE, GpioPin2|GpioPin3|GpioPin4|GpioPin5|GpioPin11, &stcGpioCfg);
|
||
//Gpio_WriteOutputIO(GpioPortE, GpioPin2|GpioPin3|GpioPin4|GpioPin5|GpioPin11, FALSE);
|
||
Gpio_Init(GpioPortE, GpioPin2, &stcGpioCfg);
|
||
Gpio_Init(GpioPortE, GpioPin3, &stcGpioCfg);
|
||
Gpio_Init(GpioPortE, GpioPin4, &stcGpioCfg);
|
||
Gpio_Init(GpioPortE, GpioPin5, &stcGpioCfg);
|
||
Gpio_Init(GpioPortE, GpioPin11, &stcGpioCfg);
|
||
//
|
||
Gpio_WriteOutputIO(GpioPortE, GpioPin2, FALSE); //NB_MCUPWR
|
||
Gpio_WriteOutputIO(GpioPortE, GpioPin3, FALSE);//NB_MCUWUIN
|
||
Gpio_WriteOutputIO(GpioPortE, GpioPin4, FALSE);//NB_MCURESET
|
||
Gpio_WriteOutputIO(GpioPortE, GpioPin5, FALSE); //EN_NB_PWR
|
||
Gpio_WriteOutputIO(GpioPortE, GpioPin11, TRUE);//KEY_INT
|
||
////////////PF
|
||
//Gpio_Init(GpioPortF, GpioPin0|GpioPin1|GpioPin4|GpioPin5|GpioPin6|GpioPin7, &stcGpioCfg);
|
||
//Gpio_WriteOutputIO(GpioPortF, GpioPin0|GpioPin1|GpioPin4|GpioPin5|GpioPin6|GpioPin7, FALSE);
|
||
Gpio_Init(GpioPortF, GpioPin0, &stcGpioCfg);
|
||
Gpio_Init(GpioPortF, GpioPin1, &stcGpioCfg);
|
||
Gpio_Init(GpioPortF, GpioPin4, &stcGpioCfg);
|
||
Gpio_Init(GpioPortF, GpioPin5, &stcGpioCfg);
|
||
Gpio_Init(GpioPortF, GpioPin6, &stcGpioCfg);
|
||
//
|
||
Gpio_WriteOutputIO(GpioPortF, GpioPin0, FALSE);//EN_Bat_Check
|
||
Gpio_WriteOutputIO(GpioPortF, GpioPin1, FALSE);//TouchVCC
|
||
Gpio_WriteOutputIO(GpioPortF, GpioPin4, FALSE);//no
|
||
Gpio_WriteOutputIO(GpioPortF, GpioPin5, FALSE);//no
|
||
Gpio_WriteOutputIO(GpioPortF, GpioPin6, TRUE);//IR_CTL
|
||
//异常复位次数先增加
|
||
Meter_ResetCountAdd(0x80);
|
||
|
||
if(meter_reset_cnt_reason<0xA55AFF00)
|
||
{
|
||
meter_reset_cnt_reason += 0x100;//复位次数
|
||
}
|
||
}
|
||
|
||
#endif
|
||
|
||
/***************************************************************
|
||
Function: Meter_ResetCountAdd (void)
|
||
Description: 复位次数增加,复位原因保存
|
||
****************************************************************/
|
||
void Meter_ResetCountAdd(u8 reason)
|
||
{
|
||
if((meter_reset_cnt_reason&0xA55A0000)!=0xA55A0000)
|
||
{
|
||
meter_reset_cnt_reason = 0xA55A0000;
|
||
}
|
||
meter_reset_cnt_reason |= reason;//
|
||
}
|
||
/***************************************************************
|
||
Function: Meter_GetResetCount
|
||
Description: 获取复位次数和复位原因
|
||
****************************************************************/
|
||
u16 Meter_GetResetCount(void)
|
||
{
|
||
if((meter_reset_cnt_reason&0xA55A0000)==0xA55A0000)
|
||
{
|
||
return (meter_reset_cnt_reason&0XFFFF);
|
||
}
|
||
return 0;
|
||
}
|
||
/***************************************************************
|
||
Function: Meter_BootVersionInit
|
||
Description: boot版本号初始化
|
||
****************************************************************/
|
||
void Meter_BootVersionInit(void)
|
||
{
|
||
if((meter_boot_version&0xA55A0000)==0xA55A0000)
|
||
{
|
||
meter_boot_version &=0XFFFF;
|
||
}
|
||
else
|
||
{
|
||
meter_boot_version = 0;
|
||
}
|
||
}
|
||
/***************************************************************
|
||
Function: Meter_GetBootVersion
|
||
Description: 获取boot版本号
|
||
****************************************************************/
|
||
u16 Meter_GetBootVersion(void)
|
||
{
|
||
return meter_boot_version &=0XFFFF;
|
||
}
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
|
||
|
||
|