#include "jj_param.h" #include "./page/page_ui_widget.h" #include "./page/page.h" PARAM_INFO Param_Data[DATA_NUM]; soft_iic_info_struct eeprom_param; TYPE_UNION iic_buffer[DATA_IN_FLASH_NUM]; float data0 = 10.0f; float data1 = 10.0f; float data2 = 15; float data3 = 100.01f; float data4 = 1.04f; float data5 = 4.0f; float data6 = 5.1f; void jj_param_eeprom_init() { soft_iic_init(&eeprom_param, K24C02_DEV_ADDR, K24C02_SOFT_IIC_DELAY, K24C02_SCL_PIN, K24C02_SDA_PIN); // eeprom初始化 PARAM_REG(DATA0, &data0, EFLOAT, 1, "m0_p"); // 注冊 PARAM_REG(DATA1, &data1, EFLOAT, 1, "m1_p"); // 注冊 PARAM_REG(DATA2, &data2, EFLOAT, 1, "m1_i"); // 注冊 PARAM_REG(DATA3, &data3, EFLOAT, 1, "m1_d"); // 注冊 PARAM_REG(DATA4, &data4, EFLOAT, 1, "m2_p"); // 注冊 PARAM_REG(DATA5, &data5, EFLOAT, 1, "m2_i"); // 注冊 PARAM_REG(DATA6, &data6, EFLOAT, 1, "m2_d"); // 注冊 for (uint8 i = 0; i < DATA_IN_FLASH_NUM ; i++) { soft_iic_read_8bit_registers(&eeprom_param, 4*i, (uint8 *)&iic_buffer[i], 4); switch (Param_Data[i].type) { case EFLOAT: *((float *)(Param_Data[i].p_data)) = iic_buffer[i].f32; break; case EUINT32: *((uint32 *)(Param_Data[i].p_data)) = iic_buffer[i].u32; break; case EINT32: *((int32 *)(Param_Data[i].p_data)) = iic_buffer[i].s32; break; default: break; } system_delay_ms(10); } } /** * @brief 参数更新 * */ void jj_param_update() { for (uint8 i = 0; i < DATA_IN_FLASH_NUM; i++) { switch (Param_Data[i].type) { case EFLOAT: iic_buffer[i].f32 = *((float *)(Param_Data[i].p_data)); break; case EUINT32: iic_buffer[i].u32 = *((uint32 *)(Param_Data[i].p_data)); break; case EINT32: iic_buffer[i].s32 = *((int32 *)(Param_Data[i].p_data)); break; default: break; } soft_iic_write_8bit_registers(&eeprom_param, 4*i , (uint8 *)&iic_buffer[i], 4); system_delay_ms(10); } }