From 483114547f854c6e890c8d3cffa1912c75a4008f Mon Sep 17 00:00:00 2001 From: YuanHongbin <975559679@qq.com> Date: Wed, 2 Sep 2026 12:55:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=BA=90=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=B8=AD=E6=96=87=E6=B3=A8=E9=87=8A=E4=B9=B1=E7=A0=81=E5=B9=B6?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E4=B8=BAUTF-8=E7=BC=96=E7=A0=81=EF=BC=8CLora?= =?UTF-8?q?=E9=A2=91=E7=8E=87=E6=94=B9=E4=B8=BA470MHz=E9=A2=91=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 修复 source/inc/bsp.h、source/inc/main.h、source/src/bsp.c 中文注释乱码,统一保存为UTF-8编码 2. Lora中心频率由433.1MHz改为470.1MHz~492.6MHz,步进500kHz,共46个信道(CH0~CH45) 3. 新增下载前配置检查注释块,LORA_FREQ默认信道改为CH0 4. 更新Keil调试配置(CMSIS_AGDI调试器及观察窗口设置) --- MDK/hc32l17x.uvoptx | 18 ++---- source/inc/bsp.h | 153 +++++++++++++++++++++++++++----------------- source/inc/main.h | 16 ++--- source/src/bsp.c | 98 ++++++++++++++-------------- 4 files changed, 157 insertions(+), 128 deletions(-) diff --git a/MDK/hc32l17x.uvoptx b/MDK/hc32l17x.uvoptx index 85bb2cc..b6015ea 100644 --- a/MDK/hc32l17x.uvoptx +++ b/MDK/hc32l17x.uvoptx @@ -103,7 +103,7 @@ 1 0 0 - 6 + 12 @@ -114,7 +114,7 @@ - Segger\JL2CM3.dll + BIN\CMSIS_AGDI.dll @@ -130,7 +130,7 @@ 0 JL2CM3 - -U4294967295 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BC11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8027 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000000 -FC1000 -FN1 -FF0FlashHC32L17X_128K.FLM -FS00 -FL020000 -FP0($$Device:HC32L170JATA$Flash\FlashHC32L17X_128K.FLM) + -U4294967295 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -TO18 -TC10000000 -TP21 -TDS8027 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO15 -FD20000000 -FC1000 -FN1 -FF0FlashHC32L17X_128K.FLM -FS00 -FL020000 -FP0($$Device:HC32L170JATA$Flash\FlashHC32L17X_128K.FLM) 0 @@ -190,16 +190,6 @@ 1 BL.Status,0x0A - - 7 - 1 - BL.Para - - - 8 - 1 - DevMac - @@ -223,7 +213,7 @@ 0 1 - 0 + 1 0 0 0 diff --git a/source/inc/bsp.h b/source/inc/bsp.h index 95f0a98..55cd492 100644 --- a/source/inc/bsp.h +++ b/source/inc/bsp.h @@ -5,68 +5,107 @@ #include #include "gpio.h" -/*豸*/ -#define FORCE_6D 0x0001 //0x0001 άӦ -#define OSMOTIC_PRESSURE 0x0002 //0x0002 ͸ѹ -#define ELASTIC_WAVEGUIDE 0x0003 //0x0003 Բ -#define DIELECTRIC_MASS 0x0004 //0x0004 -#define _0x0005 0x0005 //0x0005 -#define CONT_DEFOR_3D 0x0006 //0x0006 ά -#define COMM_UNIT 0x0007 //0x0007 ͨѶԪ -#define FORCE_3D 0x0008 //0x0008 άӦ -#define LASER_TRACING 0x0009 //0x0009 ʾ -#define _0x000A 0x000A //0x000A -#define _0x000B 0x000B //0x000B -#define _0x000C 0x000C //0x000C -#define MULTI_PARAMETER_FUSION 0x000D //0x000D ں -#define CRACK_DETECTION 0x000E //0x000E ѷ -#define _0x000F 0x000F //0x000F -#define ATTITUDE_MONITOR 0x0010 //0x0010 ̬ -#define LASER_DISPLACE 0x0011 //0x0011 λ -#define REBAR_STRESS 0x0012 //0x0012 ֽӦ -#define ANCHOR_ROD_STRESS 0x0013 //0x0013 ê -#define SURFACE_STRESS 0x0014 //0x0014 Ӧ -#define PRESSURE 0x0015 //0x0015 ѹ -#define MICROWAVE_DISPLACE 0x0016 //0x0016 ΢ -/*ͨѶʽ*/ +/*设备类型*/ +#define FORCE_6D 0x0001 //0x0001 六维应力 +#define OSMOTIC_PRESSURE 0x0002 //0x0002 渗透压 +#define ELASTIC_WAVEGUIDE 0x0003 //0x0003 弹性波导 +#define DIELECTRIC_MASS 0x0004 //0x0004 介电质谱 +#define _0x0005 0x0005 //0x0005 保留 +#define CONT_DEFOR_3D 0x0006 //0x0006 三维连续变形 +#define COMM_UNIT 0x0007 //0x0007 通讯单元 +#define FORCE_3D 0x0008 //0x0008 三维应力 +#define LASER_TRACING 0x0009 //0x0009 激光示踪 +#define _0x000A 0x000A //0x000A 保留 +#define _0x000B 0x000B //0x000B 保留 +#define _0x000C 0x000C //0x000C 保留 +#define MULTI_PARAMETER_FUSION 0x000D //0x000D 多参数融合 +#define CRACK_DETECTION 0x000E //0x000E 裂缝检测 +#define _0x000F 0x000F //0x000F 保留 +#define ATTITUDE_MONITOR 0x0010 //0x0010 姿态检测 +#define LASER_DISPLACE 0x0011 //0x0011 激光位移 +#define REBAR_STRESS 0x0012 //0x0012 钢筋应力 +#define ANCHOR_ROD_STRESS 0x0013 //0x0013 锚杆轴力 +#define SURFACE_STRESS 0x0014 //0x0014 表面应力 +#define PRESSURE 0x0015 //0x0015 压力 +#define MICROWAVE_DISPLACE 0x0016 //0x0016 微波测距 +/*通讯方式*/ typedef enum { - LORA = 0x01, //0x01 LORAͨѶ - RS485 = 0x02, //0x02 RS485ͨѶ - RS232 = 0x03, //0x03 RS232ͨѶ - CAN = 0x04, //0x04 CANͨѶ - _4G = 0x05, //0x05 _4GͨѶ - BLE = 0x06, //0x06 BLEͨѶ - WIFI = 0x07, //0x07 WIFIͨѶ + LORA = 0x01, //0x01 LORA通讯 + RS485 = 0x02, //0x02 RS485通讯 + RS232 = 0x03, //0x03 RS232通讯 + CAN = 0x04, //0x04 CAN通讯 + _4G = 0x05, //0x05 _4G通讯 + BLE = 0x06, //0x06 BLE通讯 + WIFI = 0x07, //0x07 WIFI通讯 }COMM_WAY_M; -/*豸־*/ +/*设备标志*/ typedef enum { - MASTER = 0x000000, //0x000000 豸 - SUBSET = 0x800000, //0x800000 豸 + MASTER = 0x000000, //0x000000 主设备 + SUBSET = 0x800000, //0x800000 子设备 }DEVICE_SIGN_M; -/*LoraƵʣ433100000ul + 200000*N */ +/*Lora频率:470100000ul + 500000*N */ typedef enum { - CH0 = (433100000ul + 0), //Ƶ - CH1 = (433100000ul + 200000), - CH2 = (433100000ul + 400000), - CH3 = (433100000ul + 600000), - CH4 = (433100000ul + 800000), - CH5 = (433100000ul + 1000000), - CH6 = (433100000ul + 1200000), - CH7 = (433100000ul + 1400000), - CH8 = (433100000ul + 1600000), - CH9 = (433100000ul + 1800000), - CH10 = (433100000ul + 2000000), + CH0 = (470100000ul + 0), //测试频率 + CH1 = (470100000ul + 500000), + CH2 = (470100000ul + 1000000), + CH3 = (470100000ul + 1500000), + CH4 = (470100000ul + 2000000), + CH5 = (470100000ul + 2500000), + CH6 = (470100000ul + 3000000), + CH7 = (470100000ul + 3500000), + CH8 = (470100000ul + 4000000), + CH9 = (470100000ul + 4500000), + CH10 = (470100000ul + 5000000), + CH11 = (470100000ul + 5500000), + CH12 = (470100000ul + 6000000), + CH13 = (470100000ul + 6500000), + CH14 = (470100000ul + 7000000), + CH15 = (470100000ul + 7500000), + CH16 = (470100000ul + 8000000), + CH17 = (470100000ul + 8500000), + CH18 = (470100000ul + 9000000), + CH19 = (470100000ul + 9500000), + CH20 = (470100000ul + 10000000), + CH21 = (470100000ul + 10500000), + CH22 = (470100000ul + 11000000), + CH23 = (470100000ul + 11500000), + CH24 = (470100000ul + 12000000), + CH25 = (470100000ul + 12500000), + CH26 = (470100000ul + 13000000), + CH27 = (470100000ul + 13500000), + CH28 = (470100000ul + 14000000), + CH29 = (470100000ul + 14500000), + CH30 = (470100000ul + 15000000), + CH31 = (470100000ul + 15500000), + CH32 = (470100000ul + 16000000), + CH33 = (470100000ul + 16500000), + CH34 = (470100000ul + 17000000), + CH35 = (470100000ul + 17500000), + CH36 = (470100000ul + 18000000), + CH37 = (470100000ul + 18500000), + CH38 = (470100000ul + 19000000), + CH39 = (470100000ul + 19500000), + CH40 = (470100000ul + 20000000), + CH41 = (470100000ul + 20500000), + CH42 = (470100000ul + 21000000), + CH43 = (470100000ul + 21500000), + CH44 = (470100000ul + 22000000), + CH45 = (470100000ul + 22500000), //最高频率 }LORA_FREQ_M; -/*豸ѡ*/ +/*****************************************************************************************/ +/*********************************下载前必须检查配置项************************************/ +/*设备类型选择*/ #define DEVICE_TYPE LASER_TRACING -/*ͨѶʽѡ*/ +/*通讯方式选择*/ #define COMM_WAY LORA -/*豸־ѡ*/ +/*设备标志选择*/ #define DEVICE_SIGN MASTER -/*豸ַ*/ -#define ADD_NUMBER (0x000023 + DEVICE_SIGN) //ֲֶӦΨһַ -/*LoraƵ*/ -#define LORA_FREQ CH1 +/*设备地址编号设置*/ +#define ADD_NUMBER (0x000023 + DEVICE_SIGN) //数字部分对应唯一地址编号 +/*Lora频率配置*/ +#define LORA_FREQ CH0 +/*****************************************************************************************/ +/*********************************下载前必须检查配置项************************************/ #if(DEVICE_TYPE == LASER_TRACING) #define LP_UART_CH 0 @@ -229,7 +268,7 @@ typedef enum { #define USE_LOWPOWER 0 #define USE_WDT 1 -//#define WAKEUP_TIME_ARR (65536 - (30 * 150)) //65536 - time * 38400Hz / 256Ƶ +//#define WAKEUP_TIME_ARR (65536 - (30 * 150)) //65536 - time * 38400Hz / 256分频 #define SYSCLK_RCH 0 #define SYSCLK_XTH 1 @@ -243,9 +282,9 @@ typedef struct { uint32_t PackageCnt; uint32_t AppSize; uint32_t Crc32Check; - uint32_t FirstRunFlag;//һ - uint8_t DevMac[6];//豸MAC - uint32_t LoraFreq;//LoraƵ + uint32_t FirstRunFlag;//第一次运行 + uint8_t DevMac[6];//设备MAC + uint32_t LoraFreq;//Lora频率 }BootPara_t, *BootPara; typedef void (*ReadPara)(BootPara_t rPara); diff --git a/source/inc/main.h b/source/inc/main.h index 824f8f7..bb79646 100644 --- a/source/inc/main.h +++ b/source/inc/main.h @@ -10,13 +10,13 @@ typedef enum { UPDATE_CMD_NULL, - UPDATE_CMD_SLAVE_RES, //ӻӦ· - UPDATE_CMD_SLAVE_REQ_DATA, //ӻ· - UPDATE_CMD_MASTER_REQ = 0x81, // - UPDATE_CMD_MASTRE_RES_DATA, // + UPDATE_CMD_SLAVE_RES, //从机应答主机下发 + UPDATE_CMD_SLAVE_REQ_DATA, //从机请求主机下发数据 + UPDATE_CMD_MASTER_REQ = 0x81, //主机请求升级 + UPDATE_CMD_MASTRE_RES_DATA, //主机发送数据 }UpdateCmd_m; -//֡ͷṹ +//帧头结构体 typedef struct { uint8_t Header; uint8_t DevMac[6]; @@ -24,20 +24,20 @@ typedef struct { uint8_t PayloadLen; }__attribute__ ((packed))FrameHeader_t, *FrameH; -//·غɽṹ +//主机下发升级请求载荷结构体 typedef struct { uint16_t PackageNum; uint32_t AppSize; uint32_t AppCrc32; }__attribute__ ((packed))UpDataRequset_t, *UDReq; -//ӻ·ṹ +//从机请求下发结构体 typedef struct { uint16_t PackageIndex; uint32_t PackageNum; }__attribute__ ((packed))GetDataRequest_t, *GDReq; -//Ӧ·ݽṹ +//主机应答下发数据结构体 typedef struct { uint16_t PackageIndex; uint16_t PackageNum; diff --git a/source/src/bsp.c b/source/src/bsp.c index 5866afd..011bad1 100644 --- a/source/src/bsp.c +++ b/source/src/bsp.c @@ -22,20 +22,20 @@ static __IO bool LpUart0_Tx_Flag; static void SystemClkInit(en_sysctrl_rch_freq_t enRchFreq) { - ///< RCHʱӲͬƵʵлҪȽʱлRCL + ///< RCH时钟不同频率的切换,需要先将时钟切换到RCL Sysctrl_SetRCLTrim(SysctrlRclFreq32768); Sysctrl_SetRCLStableTime(SysctrlRclStableCycle64); Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE); Sysctrl_SysClkSwitch(SysctrlClkRCL); - ///< ĿƵʵRCHTRIMֵ + ///< 加载目标频率的RCH的TRIM值 Sysctrl_SetRCHTrim(enRchFreq); - ///< ʹRCH + ///< 使能RCH Sysctrl_ClkSourceEnable(SysctrlClkRCH, TRUE); - ///< ʱлRCH + ///< 时钟切换到RCH Sysctrl_SysClkSwitch(SysctrlClkRCH); - ///< HCLK24M˴FLASHȴΪ0 cycle + ///< HCLK不超过24M:此处设置FLASH读等待周期为0 cycle Flash_WaitCycle(FlashWaitCycle0); } @@ -43,14 +43,14 @@ static void SystemClkInit(en_sysctrl_rch_freq_t enRchFreq) static void SystemClkInit(en_sysctrl_xth_freq_t enXthFreq) { - ///<======================== лXTH32MHz ============================== - ///< ʹõʱԴHCLK24MFLASH ȴΪ1 cycle(ĬֵҲΪ1 cycle) + ///<======================== 切换至XTH32MHz ============================== + ///< 当使用的时钟源HCLK大于24M:设置FLASH 读等待周期为1 cycle(默认值也为1 cycle) if(SysctrlXthFreq24_32MHz == enXthFreq) { Flash_WaitCycle(FlashWaitCycle1); } - ///< лʱǰⲿپXTHƵʷΧ,þʹĿʱӣ˴ΪSYSTEM_XTH = 32MHz + ///< 切换时钟前(根据外部高速晶振)设置XTH频率范围,配置晶振参数,使能目标时钟,此处为SYSTEM_XTH = 32MHz Sysctrl_SetXTHFreq(enXthFreq); Sysctrl_XTHDriverCfg(SysctrlXtalDriver3); Sysctrl_SetXTHStableTime(SysctrlXthStableCycle16384); @@ -62,16 +62,16 @@ static void SystemClkInit(en_sysctrl_xth_freq_t enXthFreq) { Flash_WaitCycle(FlashWaitCycle0); } - //M0P_SYSCTRL->SYSCTRL0_f.WAKEUP_BYRCH = 0; //ѱԭʱ + //M0P_SYSCTRL->SYSCTRL0_f.WAKEUP_BYRCH = 0; //唤醒保持原时钟 } #elif (SYSCLK == SYSCLK_PLL) -///<עⲿúꡪ[SYSTEM_XTH],ʹPLLXTHС24MHz +///<请注意根据外部晶振配置宏——[SYSTEM_XTH],如果使用PLL,XTH必须小于24MHz static void SystemClkInit(void) { stc_sysctrl_pll_cfg_t stcPLLCfg; - ///< лʱǰⲿپXTHƵʷΧ,þʹĿʱӣ˴ΪSYSTEM_XTH = 32MHz + ///< 切换时钟前(根据外部高速晶振)设置XTH频率范围,配置晶振参数,使能目标时钟,此处为SYSTEM_XTH = 32MHz // Sysctrl_SetXTHFreq(SysctrlXthFreq4_8MHz); // Sysctrl_XTHDriverCfg(SysctrlXtalDriver3); // Sysctrl_SetXTHStableTime(SysctrlXthStableCycle16384); @@ -82,17 +82,17 @@ static void SystemClkInit(void) delay1ms(10); stcPLLCfg.enInFreq = SysctrlPllInFreq6_12MHz; //XTH 8MHz - stcPLLCfg.enOutFreq = SysctrlPllOutFreq36_48MHz; //PLL - stcPLLCfg.enPllClkSrc = SysctrlPllRch; //ʱԴѡRCH + stcPLLCfg.enOutFreq = SysctrlPllOutFreq36_48MHz; //PLL 输出 + stcPLLCfg.enPllClkSrc = SysctrlPllRch; //输入时钟源选择RCH stcPLLCfg.enPllMul = SysctrlPllMul6; //8MHz x 6 = 48MHz Sysctrl_SetPLLFreq(&stcPLLCfg); - ///< ʹõʱԴHCLK24MFLASH ȴΪ1 cycle(ĬֵҲΪ1 cycle) + ///< 当使用的时钟源HCLK大于24M:设置FLASH 读等待周期为1 cycle(默认值也为1 cycle) Flash_WaitCycle(FlashWaitCycle1); - ///< ʹPLL + ///< 使能PLL Sysctrl_ClkSourceEnable(SysctrlClkPLL, TRUE); - ///< ʱлPLL + ///< 时钟切换到PLL Sysctrl_SysClkSwitch(SysctrlClkPLL); } @@ -100,9 +100,9 @@ static void SystemClkInit(void) static void SystemRCLInit(void) { - Sysctrl_SetRCLTrim(SysctrlRclFreq38400); ///< RCLʱΪ32kHz + Sysctrl_SetRCLTrim(SysctrlRclFreq38400); ///< 配置RCL时钟为32kHz Sysctrl_SetRCLStableTime(SysctrlRclStableCycle256); - Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE); ///< ʹRCLʱ + Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE); ///< 使能RCL时钟 } static void LPUartInit(void) @@ -116,32 +116,32 @@ static void LPUartInit(void) /// - GpioInitStruct.enDrv = GpioDrvH; ///< ˿-> - GpioInitStruct.enPu = GpioPuDisable; ///< ˿-> + GpioInitStruct.enDir = GpioDirOut; ///< 端口方向配置->输入 + GpioInitStruct.enDrv = GpioDrvH; ///< 端口驱动能力配置->高驱动能力 + GpioInitStruct.enPu = GpioPuDisable; ///< 端口上下拉配置->无 GpioInitStruct.enPd = GpioPdDisable; - GpioInitStruct.enOD = GpioOdDisable; ///< ˿ڿ©->©ر - GpioInitStruct.enCtrlMode = GpioAHB; ///< ˿/ֵĴ߿ģʽ->AHB + GpioInitStruct.enOD = GpioOdDisable; ///< 端口开漏输出配置->开漏输出关闭 + GpioInitStruct.enCtrlMode = GpioAHB; ///< 端口输入/输出值寄存器总线控制模式配置->AHB GpioInitStruct.bOutputVal = false; Gpio_Init(RS485_CTRL_PORT, RS485_CTRL_PIN, &GpioInitStruct); @@ -215,9 +215,9 @@ static void GPIOInit(void) static void WdtInit(void) { #if (USE_WDT == 1) - ///< WDTʱ + ///< 开启WDT外设时钟 Sysctrl_SetPeripheralGate(SysctrlPeripheralWdt,TRUE); - ///< WDT ʼ + ///< WDT 初始化 Wdt_Init(WdtResetEn, WdtT52s4); Wdt_Start(); #endif