diff --git a/.cproject b/.cproject
index 6de4de4..570af61 100644
--- a/.cproject
+++ b/.cproject
@@ -32,7 +32,7 @@
-
+
diff --git a/.settings/stm32cubeide.project.prefs b/.settings/stm32cubeide.project.prefs
index 5dbf50e..e5b59e0 100644
--- a/.settings/stm32cubeide.project.prefs
+++ b/.settings/stm32cubeide.project.prefs
@@ -1,6 +1,5 @@
-2F62501ED4689FB349E356AB974DBE57=E20EF8A1CFA8D2AA5E7713614514A9E1
635E684B79701B039C64EA45C3F84D30=C8B026EBE17C208F17FB66CE4235156C
66BE74F758C12D739921AEA421D593D3=1
-8DF89ED150041C4CBC7CB9A9CAA90856=E20EF8A1CFA8D2AA5E7713614514A9E1
-DC22A860405A8BF2F2C095E5B6529F12=071C30CF380DE7D03307EB9085476C68
+8DF89ED150041C4CBC7CB9A9CAA90856=31CD5EEFA9F35C65D8E334D24F421EB1
+DC22A860405A8BF2F2C095E5B6529F12=D3CF7BFAB9D98A63886F1AE7AFAEA0B9
eclipse.preferences.version=1
diff --git a/STM32F407VETX_FLASH.ld b/STM32F407VETX_FLASH.ld
index d2fe0f0..d7d6fa5 100644
--- a/STM32F407VETX_FLASH.ld
+++ b/STM32F407VETX_FLASH.ld
@@ -47,7 +47,7 @@ MEMORY
{
CCMRAM (xrw) : ORIGIN = 0x10000000, LENGTH = 64K
RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
- FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 384K
+ FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 512K
}
/* Sections */
diff --git a/libzaf/zaf_delay.c b/libzaf/zaf_delay.c
index 92805d0..6b899d6 100644
--- a/libzaf/zaf_delay.c
+++ b/libzaf/zaf_delay.c
@@ -2,7 +2,7 @@
#include "zaf_basic.h"
-extern TIM_HandleTypeDef PC_SYS_DELAY_US_TIMER;
+extern TIM_HandleTypeDef PC_SYS_SDK_DELAY_US_TIMER;
static HAL_StatusTypeDef _HAL_TIM_Base_Start(TIM_HandleTypeDef* htim) __attribute__((optimize("O2")));
static HAL_StatusTypeDef _HAL_TIM_Base_Stop(TIM_HandleTypeDef* htim) __attribute__((optimize("O2")));
@@ -34,12 +34,12 @@ static HAL_StatusTypeDef _HAL_TIM_Base_Stop(TIM_HandleTypeDef* htim) {
void zaf_delay_us(int var_nus) {
volatile uint32_t counter = 0;
- __HAL_TIM_SET_COUNTER(&PC_SYS_DELAY_US_TIMER, 0);
- _HAL_TIM_Base_Start(&PC_SYS_DELAY_US_TIMER);
+ __HAL_TIM_SET_COUNTER(&PC_SYS_SDK_DELAY_US_TIMER, 0);
+ _HAL_TIM_Base_Start(&PC_SYS_SDK_DELAY_US_TIMER);
while (counter < var_nus) {
- counter = __HAL_TIM_GET_COUNTER(&PC_SYS_DELAY_US_TIMER);
+ counter = __HAL_TIM_GET_COUNTER(&PC_SYS_SDK_DELAY_US_TIMER);
}
- _HAL_TIM_Base_Stop(&PC_SYS_DELAY_US_TIMER);
+ _HAL_TIM_Base_Stop(&PC_SYS_SDK_DELAY_US_TIMER);
}
void zaf_delay_ms(int ms) {
for (int i = 0; i < ms; i++) {
diff --git a/libzaf/zaf_gpio.c b/libzaf/zaf_gpio.c
index 89e5b8c..dd10df1 100644
--- a/libzaf/zaf_gpio.c
+++ b/libzaf/zaf_gpio.c
@@ -244,7 +244,7 @@ void zaf_gpio_init_as_input(zaf_gpio_t *gpio, Pin_t pin,zaf_gpio_mode_t mode,zaf
HAL_GPIO_Init(gpio->gpio, &init_type_def);
if (gpio->irqtype != kxs_gpio_no_irq) {
- HAL_NVIC_SetPriority(getEXTIIRQn(gpio->pinoff), PC_IRQ_PREEMPTPRIORITY_DEFAULT, 0);
+ HAL_NVIC_SetPriority(getEXTIIRQn(gpio->pinoff), SDK_IRQ_PREEMPTPRIORITY_DEFAULT, 0);
HAL_NVIC_EnableIRQ(getEXTIIRQn(gpio->pinoff));
}
diff --git a/usrc/main.cpp b/usrc/main.cpp
index 833aa34..c62aa93 100644
--- a/usrc/main.cpp
+++ b/usrc/main.cpp
@@ -1,5 +1,7 @@
#include
#include
+
+#include "service/config_service.h"
#include "zsdk/zsdk.h"
#define TAG "main"
@@ -25,13 +27,6 @@ void StartDefaultTask(void const* argument) { umain(); }
*
*/
-// zaf_gpio_t m_debug_led;
-// zaf_gpio_t m_factory_reset_key;
-// zaf_gpio_t m_fan0_power;
-// zaf_gpio_t m_fan1_power;
-// zaf_gpio_t m_fan0_state;
-// zaf_gpio_t m_fan1_state;
-
extern "C" {
// void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {
// }
@@ -48,11 +43,16 @@ extern "C" {
// }
void umain() {
- ZLOGI(TAG, "hello world");
-
ZLOGI(TAG, "system init done");
int32_t count = 0;
+ ZLOGI(TAG, "%s: %d.%d.%d", PROJECT, VERSION_MAIN(PC_VERSION), VERSION_SUB(PC_VERSION), VERSION_FIX(PC_VERSION));
+ ZLOGI(TAG, "sn: %s", sn_get_str());
+
+ config_init();
+
+
+
while (true) {
osDelay(10);
}
diff --git a/usrc/project_configs.h b/usrc/project_configs.h
index 89d32ba..152329f 100644
--- a/usrc/project_configs.h
+++ b/usrc/project_configs.h
@@ -1,28 +1,39 @@
#pragma once
+#define VERSION(main, sub, fix) (main << 16 | sub << 8 | fix << 0)
-#define VERSION "v1.0"
-#define PROJECT "dbdb_liquid_path_control"
-// 设备ID
-#define DEVICE_ID (2)
-// 调试串口
-#define DEBUG_UART huart1
-// 调试指示灯
-#define DEBUG_LIGHT_GPIO PE8
-// 微秒延迟定时器,注意该延时定时器需要按照以下文档进行配置
-// http://192.168.1.3:3000/zwikipedia/iflytop_wikipedia/src/branch/master/doc/stm32cubemx_us_timer.md
-#define DELAY_US_TIMER htim6
-#define MICROSWITCH_NUM 6
-//
-#define MOTOR_SPI hspi1
+#define VERSION_MAIN(version) ((version >> 16) & 0xFF)
+#define VERSION_SUB(version) ((version >> 8) & 0xFF)
+#define VERSION_FIX(version) ((version >> 0) & 0xFF)
-#define TMC5130_MOTOR_NUM 2
-#define MOTOR_CH(n) (n)
-// FYBJ_PY
-#define MOTOR2_CSN PA4 //
-#define MOTOR2_ENN PE11
-// FYBJ_TJ_DRV
-#define MOTOR1_CSN PC4 //
-#define MOTOR1_ENN PE12
+/***********************************************************************************************************************
+ * PROJECT_CONFIG *
+ ***********************************************************************************************************************/
+/**
+ * @brief 基础配置
+ *
+ */
+#define PC_VERSION VERSION(1, 0, 0)
+#define PROJECT "dbdb_liquid_path_control"
+#define SN_HEADER "SN"
+#define DEVICE_ID (2)
+#define DEBUG_UART huart1 // 调试串口
+#define DEBUG_LIGHT_GPIO PE8 // 调试指示灯
-#define PC_IRQ_PREEMPTPRIORITY_DEFAULT 5
\ No newline at end of file
+/**
+ * @brief 驱动器配置
+ */
+#define MOTOR_SPI hspi1
+#define MOTOR_CH(n) (n)
+#define MOTOR2_CSN PA4 //
+#define MOTOR2_ENN PE11
+#define MOTOR1_CSN PC4 //
+#define MOTOR1_ENN PE12
+
+/***********************************************************************************************************************
+ * SDK_CONFIG *
+ ***********************************************************************************************************************/
+#define SDK_DELAY_US_TIMER htim6 // 微秒延迟定时器,注意该延时定时器需要按照以下文档进行配置 http://192.168.1.3:3000/zwikipedia/iflytop_wikipedia/src/branch/master/doc/stm32cubemx_us_timer.md
+#define SDK_IRQ_PREEMPTPRIORITY_DEFAULT 5 // IO中断默认中断等级
+#define SDK_CFG__CFG_FLASH_ADDR 0x080C0000 //
+#define SDK_CFG__SN_FLASH_ADDR 0x080E0000 //
diff --git a/usrc/project_dep.h b/usrc/project_dep.h
index ecf4aaf..59b1ffd 100644
--- a/usrc/project_dep.h
+++ b/usrc/project_dep.h
@@ -1,15 +1,3 @@
#pragma once
-#include
-
-#include "project_configs.h"
-
-#include "lwip/api.h"
-#include "lwip/opt.h"
-#include "lwip/sys.h"
-
-#include "libzaf\zaf.h"
-#include "zaf_protocol\zaf_protocol.h"
-
-#include "main.h"
-#include "spi.h"
+#include "zsdk/zsdk.h"
\ No newline at end of file
diff --git a/usrc/service/config_service.c b/usrc/service/config_service.c
new file mode 100644
index 0000000..d086ea7
--- /dev/null
+++ b/usrc/service/config_service.c
@@ -0,0 +1,40 @@
+#include "config_service.h"
+
+#include "project_dep.h"
+
+static config_t _config;
+static config_t _default_val_config;
+
+#define TAG "config"
+static void dump_config(config_t *pcfg) {
+ ZLOGI(TAG, "=============== config ===============");
+ ZLOGI(TAG, "configMark : %08x", pcfg->configMark);
+ ZLOGI(TAG, "placeHolder: %08x", pcfg->placeHolder);
+ ZLOGI(TAG, "======================================");
+}
+static void create_default_config(config_t *default_cfg) { //
+ default_cfg->configMark = FLASH_MASK_VAL;
+ default_cfg->placeHolder = 0; // dhcp
+}
+
+void config_init(void) {
+ ZLOGI(TAG, "config_init");
+
+ // flash初始化
+ _default_val_config.configMark = FLASH_MASK_VAL;
+ _default_val_config.placeHolder = 0;
+
+ zflash_init((uint32_t *)&_config, sizeof(config_t) / 4);
+ zflash_set_default_data((uint32_t *)&_default_val_config);
+
+ if (!zflash_check()) {
+ zflash_factory_reset();
+ }
+
+ // 打印配置信息
+ dump_config(&_config);
+}
+config_t *config_get(void) { return &_config; }
+void config_flush(void) { zflash_flush(); }
+void config_factory_reset(void) { zflash_factory_reset(); }
+
diff --git a/usrc/service/config_service.h b/usrc/service/config_service.h
new file mode 100644
index 0000000..2ac1ec6
--- /dev/null
+++ b/usrc/service/config_service.h
@@ -0,0 +1,23 @@
+#pragma once
+#include
+
+#include "zsdk/zsdk.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct {
+ uint32_t configMark;
+ uint32_t placeHolder;
+ uint32_t checksum; // 不需要编辑
+} config_t;
+
+void config_init(void);
+config_t* config_get(void);
+void config_flush(void);
+void config_factory_reset(void);
+
+#ifdef __cplusplus
+}
+#endif
\ No newline at end of file
diff --git a/zsdk b/zsdk
index dcee83d..1994f23 160000
--- a/zsdk
+++ b/zsdk
@@ -1 +1 @@
-Subproject commit dcee83d221e043ee968601a27fb293da8c389230
+Subproject commit 1994f23bd8b2721a40555506cc269af91ef0e421