P8UWaterPlasticIES4G/app/UWater_sys.c

410 lines
18 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*******************************************************************************
* @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****/