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