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