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); - ///< 加载目标频率的RCH的TRIM值 + ///< 鍔犺浇鐩爣棰戠巼鐨凴CH鐨凾RIM鍊 Sysctrl_SetRCHTrim(enRchFreq); - ///< 使能RCH + ///< 浣胯兘RCH Sysctrl_ClkSourceEnable(SysctrlClkRCH, TRUE); - ///< 时钟切换到RCH + ///< 鏃堕挓鍒囨崲鍒癛CH Sysctrl_SysClkSwitch(SysctrlClkRCH); - ///< HCLK不超过24M:此处设置FLASH读等待周期为0 cycle + ///< HCLK涓嶈秴杩24M锛氭澶勮缃瓼LASH璇荤瓑寰呭懆鏈熶负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 ============================== - ///< 当使用的时钟源HCLK大于24M:设置FLASH 读等待周期为1 cycle(默认值也为1 cycle) + ///<======================== 鍒囨崲鑷砐TH32MHz ============================== + ///< 褰撲娇鐢ㄧ殑鏃堕挓婧怘CLK澶т簬24M锛氳缃瓼LASH 璇荤瓑寰呭懆鏈熶负1 cycle(榛樿鍊间篃涓1 cycle) if(SysctrlXthFreq24_32MHz == enXthFreq) { Flash_WaitCycle(FlashWaitCycle1); } - ///< 切换时钟前(根据外部高速晶振)设置XTH频率范围,配置晶振参数,使能目标时钟,此处为SYSTEM_XTH = 32MHz + ///< 鍒囨崲鏃堕挓鍓嶏紙鏍规嵁澶栭儴楂橀熸櫠鎸級璁剧疆XTH棰戠巼鑼冨洿,閰嶇疆鏅舵尟鍙傛暟锛屼娇鑳界洰鏍囨椂閽燂紝姝ゅ涓篠YSTEM_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],如果使用PLL,XTH必须小于24MHz +///<璇锋敞鎰忔牴鎹閮ㄦ櫠鎸厤缃畯鈥斺擺SYSTEM_XTH],濡傛灉浣跨敤PLL锛孹TH蹇呴』灏忎簬24MHz static void SystemClkInit(void) { stc_sysctrl_pll_cfg_t stcPLLCfg; - ///< 切换时钟前(根据外部高速晶振)设置XTH频率范围,配置晶振参数,使能目标时钟,此处为SYSTEM_XTH = 32MHz + ///< 鍒囨崲鏃堕挓鍓嶏紙鏍规嵁澶栭儴楂橀熸櫠鎸級璁剧疆XTH棰戠巼鑼冨洿,閰嶇疆鏅舵尟鍙傛暟锛屼娇鑳界洰鏍囨椂閽燂紝姝ゅ涓篠YSTEM_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); - ///< 当使用的时钟源HCLK大于24M:设置FLASH 读等待周期为1 cycle(默认值也为1 cycle) + ///< 褰撲娇鐢ㄧ殑鏃堕挓婧怘CLK澶т簬24M锛氳缃瓼LASH 璇荤瓑寰呭懆鏈熶负1 cycle(榛樿鍊间篃涓1 cycle) Flash_WaitCycle(FlashWaitCycle1); - ///< 使能PLL + ///< 浣胯兘PLL Sysctrl_ClkSourceEnable(SysctrlClkPLL, TRUE); - ///< 时钟切换到PLL + ///< 鏃堕挓鍒囨崲鍒癙LL 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外设时钟 + ///< 寮鍚疻DT澶栬鏃堕挓 Sysctrl_SetPeripheralGate(SysctrlPeripheralWdt,TRUE); - ///< WDT 初始化 + ///< WDT 鍒濆鍖 Wdt_Init(WdtResetEn, WdtT52s4); Wdt_Start(); #endif