System_Monitor_User.c 4.16 KB
Newer Older
时昊's avatar
时昊 committed
1 2
#include "System_Monitor.h"
#include "Components.h"
3 4
#include "delay.h"
#include "wdt.h"
时昊's avatar
时昊 committed
5

6 7
#define u16Base_Vol           0u      
#define u16ENTER_LOW_N_RANGE  7000U    
时昊's avatar
时昊 committed
8
#define u16EXIT_LOW_N_RANGE   8000U    
9 10
#define u16ENTER_LOW_Y_RANGE  9000U    
#define u16EXIT_LOW_Y_RANGE   10000U   
时昊's avatar
时昊 committed
11

时昊's avatar
时昊 committed
12 13 14 15
#define u16EXIT_HIGH_Y_RANGE  15000U  
#define u16ENTER_HIGH_Y_RANGE 16000U  
#define u16EXIT_HIGH_N_RANGE  18000U  
#define u16ENTER_HIGH_N_RANGE 19000U  
16
#define u16Top_Vol            0xffffu 
时昊's avatar
时昊 committed
17 18 19 20 21


void Delay_ms(uint32_t u32Ms);

// #pragma alignvar(8)
22
static const monitorlib_uint16_t  SysFun_Range [ 26u ] = {
时昊's avatar
时昊 committed
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
    u16Base_Vol,

    u16ENTER_LOW_N_RANGE,
    u16EXIT_LOW_N_RANGE,

    u16ENTER_LOW_Y_RANGE,
    u16EXIT_LOW_Y_RANGE,

    u16EXIT_HIGH_Y_RANGE,
    u16ENTER_HIGH_Y_RANGE,

    u16EXIT_HIGH_N_RANGE,
    u16ENTER_HIGH_N_RANGE,

    u16Top_Vol,
时昊's avatar
时昊 committed
38
    500,
39
    50u,
时昊's avatar
时昊 committed
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
    u16Base_Vol,

    u16ENTER_LOW_N_RANGE,
    u16EXIT_LOW_N_RANGE,

    u16ENTER_LOW_Y_RANGE,
    u16EXIT_LOW_Y_RANGE,

    u16EXIT_HIGH_Y_RANGE,
    u16ENTER_HIGH_Y_RANGE,

    u16EXIT_HIGH_N_RANGE,
    u16ENTER_HIGH_N_RANGE,

    u16Top_Vol,
    2u,
    2u,
57 58 59

    2u,
    0u,
时昊's avatar
时昊 committed
60 61 62 63 64
};

monitorlib_uint16_t Sys_Read_KL30_Voltage_F(void)
{
    monitorlib_uint16_t u16Voltage;
65
    u16Voltage = (monitorlib_uint16_t)ADC_Conv_Single_Channel(ADC_CH_KL30_VOLTAGE);
时昊's avatar
时昊 committed
66 67 68 69 70 71
    return u16Voltage;
}

monitorlib_uint16_t Sys_Read_KL15_Voltage_F(void)
{
    monitorlib_uint16_t u16Voltage;
72
    u16Voltage = (monitorlib_uint16_t)ADC_Conv_Single_Channel(ADC_CH_KL15_VOLTAGE);
时昊's avatar
时昊 committed
73 74 75 76 77 78
    return u16Voltage;
}

monitorlib_uint16_t Sys_Read_KL30_Voltage(void)
{
    monitorlib_uint16_t u16Voltage;
79
    u16Voltage = (monitorlib_uint16_t)ADC_Read_Signal(ADC_CH_KL30_VOLTAGE);
时昊's avatar
时昊 committed
80 81 82 83 84 85
    return u16Voltage;
}

monitorlib_uint16_t Sys_Read_KL15_Voltage(void)
{
    monitorlib_uint16_t u16Voltage;
86
    u16Voltage = (monitorlib_uint16_t)ADC_Read_Signal(ADC_CH_KL15_VOLTAGE);
时昊's avatar
时昊 committed
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
    return u16Voltage;
}

monitorlib_uint8_t Sys_Read_KL30_Valid(void)
{
    monitorlib_uint8_t u8Valid;
    u8Valid = ADC_Read_Signal_Valid(ADC_CH_KL30_VOLTAGE);
    return u8Valid;
}

monitorlib_uint8_t Sys_Read_KL15_Valid(void)
{
    monitorlib_uint8_t u8Valid;
    u8Valid = ADC_Read_Signal_Valid(ADC_CH_KL15_VOLTAGE);
    return u8Valid;
}

monitorlib_uint8_t System_LINE_KL15(void)
{
106
    static monitorlib_uint8_t  u8KL15 = 0;
时昊's avatar
时昊 committed
107

108 109 110 111 112 113 114 115 116 117 118 119
    if (Sys_Read_KL15_Voltage() >= 5500u )
    {
        u8KL15 = 1u;
    }
    else if((Sys_Read_KL15_Voltage() >= 5000u)&&(Sys_Read_KL15_Voltage() < 5500u))
    {
        ;
    }
    else 
    {
        u8KL15 = 0;
    }
时昊's avatar
时昊 committed
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
    return u8KL15;
}

void Common_BlockDelay(monitorlib_uint32_t u32Ms)
{
    Gen_TimeDelay(u32Ms * 1000u, 50u);
}

void Sys_LogicProcess(void)
{
}

void Sys_KL30_Init(void)
{
    MonitorExt_st m_st;
135 136 137 138 139 140
    m_st.COM_Delay               = Common_BlockDelay;
    m_st.SysGet_KL15Line         = System_LINE_KL15;
    m_st.SysGet_KL15_Valid       = Sys_Read_KL15_Valid;
    m_st.SysGet_KL30_Valid       = Sys_Read_KL30_Valid;
    m_st.SysGet_KL15_value       = Sys_Read_KL15_Voltage;
    m_st.SysGet_KL30_value       = Sys_Read_KL30_Voltage;
时昊's avatar
时昊 committed
141 142
    m_st.SysGet_KL15_value_Force = Sys_Read_KL15_Voltage_F;
    m_st.SysGet_KL30_value_Force = Sys_Read_KL30_Voltage_F;
143
    m_st.SysMonitorLogic         = Sys_LogicProcess;
时昊's avatar
时昊 committed
144
    Sys_Set_Pata(SysFun_Range, &m_st);
145
    System_Monitor_KL30Init( );
时昊's avatar
时昊 committed
146 147 148 149 150
}

void Sys_WakeUp_Init(void)
{
    MonitorExt_st m_st;
151 152 153 154 155 156
    m_st.COM_Delay               = Common_BlockDelay;
    m_st.SysGet_KL15Line         = System_LINE_KL15;
    m_st.SysGet_KL15_Valid       = Sys_Read_KL15_Valid;
    m_st.SysGet_KL30_Valid       = Sys_Read_KL30_Valid;
    m_st.SysGet_KL15_value       = Sys_Read_KL15_Voltage;
    m_st.SysGet_KL30_value       = Sys_Read_KL30_Voltage;
时昊's avatar
时昊 committed
157 158
    m_st.SysGet_KL15_value_Force = Sys_Read_KL15_Voltage_F;
    m_st.SysGet_KL30_value_Force = Sys_Read_KL30_Voltage_F;
159
    m_st.SysMonitorLogic         = Sys_LogicProcess;
时昊's avatar
时昊 committed
160
    Sys_Set_Pata(SysFun_Range, &m_st);
161
    System_Monitor_WakeupInit( );
时昊's avatar
时昊 committed
162 163 164 165 166 167 168 169 170 171 172 173 174 175 176
}

void Delay_ms(uint32_t u32Ms)
{
    uint32_t i = 0;
    uint32_t u32Counter = 0;

    for (u32Counter = 0; u32Counter < u32Ms; u32Counter++)
    {
        for (i = 0; i < 44; i++)
        {
            __NOP();
            __NOP();
            __NOP();
        }
177
        WDT_Restart();
时昊's avatar
时昊 committed
178 179
    }
}