keil/include/drivers/global_param.c
@@ -4,8 +4,9 @@
#include <string.h>
#define FLASH_IAP_CTRL_MAP      (uint32_t)0x0402E000    //the control map start address, 63K MK8000修改
#define FLASH_Authorization_MAP  (uint32_t)0x0402f000 //授权标签列表起始地址
uint32_t tag_id_authorization_list[1024];
#define AUTHORIZATION_NUM 1024
uint32_t tag_id_authorization_list[AUTHORIZATION_NUM];
uint32_t tag_id_authorization_list_num;
uint16_t g_com_map[COM_MAP_SIZE];
uint8_t parameter_check(void)
{
@@ -47,15 +48,33 @@
    result=flash_open(FLASH_ID0,NULL);
    //MK8000没有对应函数
    if(!result) {
        flash_erase(FLASH_ID0,FLASH_Authorization_MAP,FLASH_SECTOR_SIZE);
        flash_write_nbytes(FLASH_ID0, FLASH_Authorization_MAP, (const uint8_t*)g_com_map, sizeof(g_com_map));
    }
    //flash_close(FLASH_ID0);
    __enable_irq();
    return result;
}
uint32_t save_taglist_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));
        flash_write_nbytes(FLASH_ID0, FLASH_IAP_CTRL_MAP, (const uint8_t*)tag_id_authorization_list, sizeof(tag_id_authorization_list));
        //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修改
@@ -100,6 +119,18 @@
      
}
uint32_t check_tag_id_authorization_list_num(void)
{
    uint32_t count = 0;
    for (uint32_t i = 0; i < AUTHORIZATION_NUM; i++) {
        if (tag_id_authorization_list[i] != 0) {
            count++;
        }
    }
    return count;
}
void parameter_init_anchor(void)
{
    flash_open(FLASH_ID0,NULL);
@@ -143,4 +174,5 @@
    }
      //新增上电获取授权标签列表
      flash_read(FLASH_ID0, FLASH_Authorization_MAP, (uint8_t*)&tag_id_authorization_list, sizeof(tag_id_authorization_list));//从flash中拿出来授权表
      tag_id_authorization_list_num=check_tag_id_authorization_list_num();//获取实际有效长度减少轮训开销
}