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
141
142
#include <global_param.h>
#include "mk_flash.h"
//#include "dw_app.h"
#include <string.h>
#define FLASH_IAP_CTRL_MAP        (uint32_t)0x0402E000    //the control map start address, 63K MK8000ÐÞ¸Ä
 
 
 
uint16_t g_com_map[COM_MAP_SIZE];
uint8_t parameter_check(void)
{
//    if(g_com_map[0] != 0x55AA)
//    {
//        return 1;
//    }
//    if(g_com_map[COM_INTERVAL]<50||COM_INTERVAL>1000)
//    {
//        return 1;
//    }
//    if(g_com_map[POWER]>67)
//    {
//        return 1;
//    }
//    if(g_com_map[MOTOR_ENABLE]>1)
//    {
//        return 1;
//    }
//    if(g_com_map[IMU_ENABLE]>1)
//    {
//        return 1;
//    }
//    if(g_com_map[ACTIVE_INDEX]>1)
//    {
//        return 1;
//    }
    return 0;
}
uint32_t save_com_map_to_flash(void)
{
    uint32_t result = 0;
    if(parameter_check()) //²ÎÊý´íÎ󣬲»±£´æ
    {
        return 1;
    }
    __disable_irq();
    //result = FLASH_Prepare(FLASH_IAP_CTRL_MAP, (COM_MAP_SIZE<<1));MK8000ÐÞ¸Ä
    result=flash_open(FLASH_ID0,NULL);
    //MK8000ûÓжÔÓ¦º¯Êý
    if(!result) {
        flash_erase(FLASH_ID0,FLASH_IAP_CTRL_MAP,FLASH_SECTOR_SIZE);
        flash_write_nbytes(FLASH_ID0, FLASH_IAP_CTRL_MAP, (const uint8_t*)g_com_map, sizeof(g_com_map));
        //result = FLASH_Write(FLASH_IAP_CTRL_MAP, (const uint8_t*)g_com_map, (COM_MAP_SIZE<<1));
    }
    //flash_close(FLASH_ID0);
    __enable_irq();
    return result;
}
 
void parameter_init(void)//×¢Òâ¿´Ç°ÃæÓÐûÓйرÕflashÈç¹ûÓÐÔò´ò¿ªflashÔÚ¶ÁÈ¡£¬·ñÔò»á³ö´í
{   flash_open(FLASH_ID0,NULL);
    //FLASH_Read(FLASH_IAP_CTRL_MAP, (uint8_t*)&g_com_map, (COM_MAP_SIZE<<1));MK8000ÐÞ¸Ä
    flash_read(FLASH_ID0, FLASH_IAP_CTRL_MAP, (uint8_t*)&g_com_map, sizeof(g_com_map));
    if(g_com_map[0] != 0x55AA)//µÚÒ»´ÎûÓÐÈκÎÊý¾ÝµÄ»°¾ÍĬÈÏÕâ¸ö
    {
        g_com_map[0] = 0x55AA;
        g_com_map[DEV_ID] =0x1234;//DEFAULT_DEV_ID;    //ĬÈÏÉ豸ID
 
        g_com_map[COM_INTERVAL]=200;   //ƵÂÊ2HZ
        g_com_map[MAX_REPORT_ANC_NUM]=10;
        g_com_map[GROUP_ID]=0;
        g_com_map[DIST_OFFSET]=-31;
 
        g_com_map[DEV_ROLE] =0x1;  //±êÇ©
 
 
        g_com_map[HEARTBEAT]=0;
 
        g_com_map[POWER]=67;    //·¢É书ÂÊ
        g_com_map[IMU_THRES]=2;
        g_com_map[NOMOVESLEEP_TIME]=120;   //¾²Ö¹ÐÝÃß2·ÖÖÓ
        g_com_map[MOTOR_ENABLE]=1;       //Õ𶯵ç»úʹÄÜ
        g_com_map[IMU_ENABLE]=1;        //¾²Ö¹ÐÝÃßʹÄÜ
 
        g_com_map[CNT_RESTART]=0;
        g_com_map[CNT_REBOOT]=0;
        g_com_map[CNT_UPDATE]=0;
        g_com_map[MOTOR_ONTIME_INDEX]=10;
        g_com_map[ACTIVE_INDEX]=0;
 
        g_com_map[TCP_IP_0]=0x111;
        g_com_map[TCP_IP_0]=0x198;
        g_com_map[TCP_IP_0]=0x60; 
        g_com_map[TCP_IP_0]=0x6;
        g_com_map[TCP_IP_0]=1234;
        
        g_com_map[HEIGHTOFFEST_INDEX]=0;
        save_com_map_to_flash();
    }
}
 
void parameter_init_anchor(void)
{
    flash_open(FLASH_ID0,NULL);
    //FLASH_Read(FLASH_IAP_CTRL_MAP, (uint8_t*)&g_com_map, (COM_MAP_SIZE<<1));MK8000ÐÞ¸Ä
    flash_read(FLASH_ID0, FLASH_IAP_CTRL_MAP, (uint8_t*)&g_com_map, sizeof(g_com_map));
    if(g_com_map[0] != 0x55AA)//µÚÒ»´ÎûÓÐÈκÎÊý¾ÝµÄ»°¾ÍĬÈÏÕâ¸ö
    {
        g_com_map[0] = 0x55AA;
        g_com_map[DEV_ID] =0x1234;//DEFAULT_DEV_ID;    //ĬÈÏÉ豸ID
 
        g_com_map[COM_INTERVAL]=200;   //ƵÂÊ2HZ
        g_com_map[MAX_REPORT_ANC_NUM]=10;
        g_com_map[GROUP_ID]=150;
        g_com_map[DIST_OFFSET]=-31;
 
        g_com_map[DEV_ROLE] =0x0;  //»ùÕ¾
 
 
        g_com_map[HEARTBEAT]=0;
 
        g_com_map[POWER]=67;    //·¢É书ÂÊ
        g_com_map[IMU_THRES]=2;
        g_com_map[NOMOVESLEEP_TIME]=120;   //¾²Ö¹ÐÝÃß2·ÖÖÓ
        g_com_map[MOTOR_ENABLE]=1;       //Õ𶯵ç»úʹÄÜ
        g_com_map[IMU_ENABLE]=1;        //¾²Ö¹ÐÝÃßʹÄÜ
 
        g_com_map[CNT_RESTART]=0;
        g_com_map[CNT_REBOOT]=0;
        g_com_map[CNT_UPDATE]=0;
        g_com_map[MODBUS_MODE]=0;
        g_com_map[ACTIVE_INDEX]=0;
 
        g_com_map[TCP_IP_0]=0x111;
        g_com_map[TCP_IP_1]=0x198;
        g_com_map[TCP_IP_2]=0x60; 
        g_com_map[TCP_IP_3]=0x6;
        g_com_map[TCP_PORT]=0x1234;
        
        g_com_map[HEIGHTOFFEST_INDEX]=0;
        save_com_map_to_flash();
    }
}