chen
2025-06-06 8417d4352530ac4b883763649facf2f53ad9faba
keil/include/drivers/global_param.c
@@ -5,7 +5,6 @@
#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)
{
@@ -37,106 +36,94 @@
}
uint32_t save_com_map_to_flash(void)
{
    uint32_t result = 0;
   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;
   __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
{   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]=500;   //频率2HZ
        g_com_map[MAX_REPORT_ANC_NUM]=10;
        g_com_map[GROUP_ID]=0;
        g_com_map[DIST_OFFSET]=-31;
      g_com_map[COM_INTERVAL]=500;   //频率2HZ
      g_com_map[MAX_REPORT_ANC_NUM]=10;
      g_com_map[GROUP_ID]=3;
      g_com_map[DIST_OFFSET]=-31;
      g_com_map[DEV_ROLE] =0x1;  //标签
        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]=0x1234;
      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[STATIONARY_TIME]=20;       //静止判定时间20秒
        g_com_map[HEIGHTOFFEST_INDEX]=0;
        save_com_map_to_flash();
    }
      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
   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]=500;   //频率2HZ
        g_com_map[MAX_REPORT_ANC_NUM]=10;
        g_com_map[GROUP_ID]=0;
        g_com_map[DIST_OFFSET]=-31;
      g_com_map[COM_INTERVAL]=500;   //频率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] =0x0;  //基站
        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[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[STATIONARY_TIME]=20;       //静止判定时间20秒
        g_com_map[HEIGHTOFFEST_INDEX]=0;
        save_com_map_to_flash();
    }
      save_com_map_to_flash();
   }
}