forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-05-20 e61d1595ebb1fa76b499cddec2df4bd66ec92b97
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
#include "main.h"
#include "gpio.h"
#include "rcc_config.h"
#include "uart.h"
#include "tim.h"
#include "rtc.h"
#include "exti.h"
#include "adc.h"
#include "i2c.h"
#include "extern_rtc.h"
#include "spi.h"
#include "eeprom.h"
#include "key.h"
#include "flash.h"
#include "system_run_fun.h"
#include "system_general_para.h"
#include "lcd.h"
#include "upper_com.h"
#include "rs485_read_data.h"
#include "valve_control.h"
#include "wireless_remote_comm.h"
#include "sizhu_ctrl_word.h"
#include "sizhu_history_record.h"
#include "power_manage.h"
#include "pulse_and_alarm_line.h"
#include "billing.h"
#include "linked_list.h"
 
 
FlagStatus key_awaken_flag_g = RESET;
//uint8_t lcd_only_one_flag = 0;
 
 
int main(void)
{
    System_power_on_init();
 
    /*¸÷ÖÖ³õʼ»¯*/
    //Ó²¼þÇý¶¯³õʼ»¯
    hardwareDriversInit();
    //´æ´¢µÄ²ÎÊý³õʼ»¯
    sysStoredParaInit();
    //ÔËÐй¦ÄܲÎÊý³õʼ»¯£¬°üÀ¨³õʼ״̬¼ì²â
    sysRunFunParaInit();
    
    //´ò¿ªÐèÒªÒ»Ö±¹¤×÷µÄÍⲿÒý½ÅÖжÏ
    allExtiIRQ();
    
    IWDT_Clr();
    while(1)
    {
        if(sys_run_period==SET) 
        {
            sys_run_period = RESET;
            IWDT_Clr();
            
            if(Get_Extern_Rtc_Time(&sys_clockBCD_g) ==FAIL) //»ñȡʱ¼ä
            {
                //?RTCʱ¼äÒì³£±¨¾¯
                if(__SYS_ALARM_CTL_BYTES_GET(rtc_err) == SET)
                    __SYS_STATUS_ALARM_BYTES_SET(rtc_err,ALARM_ID_RTC_BAT_LOW);
            }
            
            /*°´¼üʶ±ð*/
            //µ¥»÷²Ù×÷Ö÷ÒªÖжÏʶ±ð£¬³¤°´·ÅÔÚÑ­»·Àï¶ÁÈ¡IO״̬ʶ±ð
            keyPro();
                    
            /*LCDÏÔʾ*/
            lcdDisplayPro();
            
            /*ÉÏλ»ú½»»¥,º¬¼æÈÝmodbus±»²É¼¯´¦Àí*/
            upperComPro();
            
            /*¶Ô½ÓÉ豸½ÓÏß״̬¼ì²â*/
            PulseAndAlarmLineCheck();
            
                    
            /*²É¼¯¡¢Éϱ¨¡¢·§¿ØÈÎÎñ¿ØÖÆ*/
            //?ÈýÕß²»Í¬Ê±½øÐУ¬²É¼¯·ÅÔÚÉϱ¨Ö®Ç°£¬Í¬Ê±´¥·¢µÄ»°ÓÅÏȲɼ¯£¬
            //±¨¾¯´¥·¢Éϱ¨ÅжÏÂß¼­·ÅÔڲɼ¯Ç°Ã棬ÏÈ´¥·¢²É¼¯£¬ÔÙ´¥·¢Éϱ¨
            sysRunFunCtrlPro(&sys_fun_run_ctrl_g,sys_clockBCD_g);
            
            /*485²É¼¯*/
            rs485ReadDataPro(&sys_fun_run_ctrl_g);
            
            /*½áË㣬°üº¬Âö³å¼ÆÈë*/
            SettlementPro();
            
            /*Êý¾ÝÀúÊ·¼Ç¼´æ´¢*/
            //Êý¾ÝÀúÊ·¼Ç¼´æ´¢Èç¹ûÓöµ½²É¼¯ÖУ¬ÔòÑÓºóµÈ´ý²É¼¯Íê³ÉÔÙ´æ´¢
            sizhuHistoryRecord(sys_clockBCD_g);
            
            /*µçԴ״̬»ñÈ¡*/ //·ÅÔÚ·§¿ØÖ®Ç°£¬ÒòΪ·§¿ØÓнèµçÉè¼Æ£¬·§¿ØÇ°Èç¹û¼îµç²»×㣬ÔòÐèÒª½èµç
            GetPwrStatusPro(&pwr_vol_g);
            
            /*·§¿Ø*/
            valveCtrlPro(&sys_fun_run_ctrl_g);
            
            
            /*״̬×Ö¡¢±¨¾¯×Ö´¦Àí*/
            //³õʼ״̬¼ì²â£¬ÔÚwhile֮ǰ¾Í¼ì²âµô£¬³õʼ״̬¼ì²âÓÃÓÚÖÃλ²¿·Ö״̬×Ö£¬ÈçÓб¨¾¯£¬ÐèÒª²åÈëÏÔʾÁ´±í£¬µ«ÊÇÒª²»ÒªÓÃÓÚÉϱ¨ÐèÒª¿¼ÂÇ£»
            //ÔÚ¸÷¸ö¹¦ÄÜÄ£¿é´¦Àíʱ£¬ÈçÓб¨¾¯£¨Êܱ¨¾¯¿ØÖÆ×Ö¿ØÖÆ£©£¬µ±³¡°ÑÏàÓ¦µÄ״̬×ÖÖÃλ¡¢ÓÃÓÚÉϱ¨µÄ±¨¾¯×ÖÖÃ루Êܱ¨¾¯Éϱ¨¿ØÖÆ×Ö¿ØÖÆ£©¡¢ÓÃÓÚ·§¿ØµÄ±¨¾¯×ÖÖÃλ£¬Í¬Ê±²åÈëÏÔʾÁ´±í£»Èç¹û±¨¾¯Ïû³ý£¬ÐèÒª´¦Àí£¬Í¬Ê±É¾³ýÏÔʾµÄÁ´±í¡£
            //ÓÃÓÚÉϱ¨µÄ±¨¾¯×ַǿգ¬´¥·¢Éϱ¨£¬Èç¹ûÉϱ¨½øÐÐÖУ¬Ôò²»Öظ´´¥·¢£¬ ±¨¾¯×ÖÉϱ¨³É¹¦Ö®ºóÇå¿Õ£»
            //ÓÃÓÚ·§¿ØµÄ±¨¾¯×ÖÖ»´¥·¢Ò»´Î£¬Èç¹ûÎÞ¶¯×÷£¬Ôò½öÇå³ý¸Ã±¨¾¯×Ö£»Èç¹ûÐèÒª¶¯×÷£¬ÔòÏàÓ¦¿ØÖÆ·§ÃÅ£¬·§ÃÅÒѾ­¹Ø±Õ״̬»òÕýÔÚ¹ØÊ±Ôò½öÐè´¦ÀíËø¶¨×´Ì¬¡£´¥·¢Ö®ºó±¨¾¯×ÖÇé¿ö¡£  Óжà¸ö±¨¾¯×Öͬʱ´æÔڵģ¬ÒªÒÀ´ÎÅжϣ¬ÒòΪ±¨¾¯×Ö´¥·¢µÄ¹Ø·§ÀàÐͲ»Ò»Ö£¬Ç¿ÖÆÐԹط§µÄÓÅÏȼ¶¸ü¸ß¡£
            //·§¿ØËø¶¨×´Ì¬ÒªÓÐ×Ô¶¯½âËø»úÖÆ£¬ÓÃÓÚÂú×ã³äÖµºó¿ÉÖ±½Ó¿ª¹ØµÄÐèÇó£¬Èç¹û֮ǰ´¥·¢¹Ø·§µÄÔ­ÒòÊÇÓà¶îÔì³ÉµÄÇ¿ÖÆÐԹط§£¬ÔòÔÚÓà¶î³ä×ãÖ®ºó×Ô¶¯½âËø£¬Èç¹ûÊÇ·ÇÓà¶îÔì³ÉµÄÇ¿ÖÆÐԹط§£¬Ôò²»ÄÜ×Ô¶¯½âËø£¬Õâ¾ÍÐèÒª¼Ç¼֮ǰ´¥·¢Ç¿ÖÆÐԹط§µÄÔ­Òò¡£
            //¼Ç¼µÄÉϴιط§Ô­ÒòÐèÒªÓÐÓÅÏȼ¶¸²¸Ç»úÖÆ£¬ Ç¿ÖÆÐԹط§¸²¸Ç·ÇÇ¿ÖÆÐԹط§£¬ ·ÇÓà¶îÔì³ÉµÄÇ¿ÖÆÐԹط§¸²¸ÇÓà¶îÔì³ÉµÄ¡£
            //
            
            
            
            /*µÚÈý·½ÎÞÏßͨѶ£¬Ô¤Áô*/
            
            
            /*˼Öþƽ̨ÎÞÏßͨѶ*/
            WirelessRemoteCommPro(&sys_fun_run_ctrl_g);
            
            /*modbusµØÖ·±íÊý¾Ý¸üÐÂ*/
            
            
            
            /*ÐÝÃß*/ 
            //²¿·ÖÇé¿öϲ»ÄÜÐÝÃߣ¬Òª×öÅжϣ¬±ÈÈçÓÐÍ⹩µç¡¢RS485²É¼¯¹ý³ÌÖС¢Ô¶´«¹ý³ÌÖÐ
            if(SysKeepRunningStatusGet(sys_fun_run_ctrl_g)==RESET){
                //ÐÝÃß´¦Àí
                if(pulse_exti_flag==SET){ //µÈ´ýÂö³å¼ì²âÍê±Ï
                    for(uint8_t count_i=0;count_i<(PULSE_CHECK_DELAY_MS &0xff);count_i++){
                        delay_ms(1);
                        if(pulse_exti_flag == RESET) 
                            break;                        
                    }                
                }
                //ÐÝÃß
                
                
            }
                
            
        }
    }
}