#include #include "mk_flash.h" //#include "dw_app.h" #include #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]=1000; //ƵÂÊ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[RTCMMODE_INDEX] = 0; 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[IP_0]=39; g_com_map[IP_1]=106; g_com_map[IP_2]=210; g_com_map[IP_3]=13; g_com_map[PORT]=7000; g_com_map[TCP_IP_0]=121; g_com_map[TCP_IP_1]=33; g_com_map[TCP_IP_2]=226; g_com_map[TCP_IP_3]=42; g_com_map[TCP_PORT]=9039; g_com_map[HEIGHTOFFEST_INDEX]=0; g_com_map[GPS_HZ]=1; // g_com_map[STATIONARY_TIME] = 10; save_com_map_to_flash(); } }