Files

270 lines
8.3 KiB
C
Raw Permalink Normal View History

2026-05-09 17:09:52 +08:00
#ifndef _BSP_H
#define _BSP_H
#include <stdint.h>
#include <stdbool.h>
#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 微波测距
/*通讯方式*/
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通讯
}COMM_WAY_M;
/*设备标志*/
typedef enum {
MASTER = 0x000000, //0x000000 主设备
SUBSET = 0x800000, //0x800000 子设备
}DEVICE_SIGN_M;
2026-05-11 10:02:31 +08:00
/*Lora频率:433100000ul + 200000*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),
}LORA_FREQ_M;
2026-05-09 17:09:52 +08:00
/*设备类型选择*/
#define DEVICE_TYPE LASER_TRACING
/*通讯方式选择*/
#define COMM_WAY LORA
/*设备标志选择*/
#define DEVICE_SIGN MASTER
/*设备地址编号设置*/
2026-05-11 10:02:31 +08:00
#define ADD_NUMBER (0x000023 + DEVICE_SIGN) //数字部分对应唯一地址编号
/*Lora频率配置*/
#define LORA_FREQ CH1
2026-05-09 17:09:52 +08:00
#if(DEVICE_TYPE == LASER_TRACING)
#define LP_UART_CH 0
#define LPUART (M0P_LPUART0)
#define LPUART_IRQN (LPUART0_IRQn)
#define LPUART_PERIPHERAL_CLK (SysctrlPeripheralLpUart0)
#define LPUART_TX_AF GpioAf4
#define LPUART_TX_PORT GpioPortB
#define LPUART_TX_PIN GpioPin10
#define LPUART_RX_AF GpioAf3
#define LPUART_RX_PORT GpioPortB
#define LPUART_RX_PIN GpioPin11
#define RS485_CTRL_PORT GpioPortB
#define RS485_CTRL_PIN GpioPin1
#define RS485_CTRL_RX() Gpio_ClrIO(RS485_CTRL_PORT, RS485_CTRL_PIN)
#define RS485_CTRL_TX() Gpio_SetIO(RS485_CTRL_PORT, RS485_CTRL_PIN)
#endif
#if(DEVICE_TYPE == FORCE_6D)
#define LP_UART_CH 0
#define LPUART (M0P_LPUART0)
#define LPUART_IRQN (LPUART0_IRQn)
#define LPUART_PERIPHERAL_CLK (SysctrlPeripheralLpUart0)
#define LPUART_TX_AF GpioAf3
#define LPUART_TX_PORT GpioPortB
#define LPUART_TX_PIN GpioPin0
#define LPUART_RX_AF GpioAf3
#define LPUART_RX_PORT GpioPortB
#define LPUART_RX_PIN GpioPin11
#define RS485_CTRL_PORT GpioPortB
#define RS485_CTRL_PIN GpioPin1
#define RS485_CTRL_RX() Gpio_ClrIO(RS485_CTRL_PORT, RS485_CTRL_PIN)
#define RS485_CTRL_TX() Gpio_SetIO(RS485_CTRL_PORT, RS485_CTRL_PIN)
#endif
#if(DEVICE_TYPE == OSMOTIC_PRESSURE)
#define LP_UART_CH 0
#define LPUART (M0P_LPUART0)
#define LPUART_IRQN (LPUART0_IRQn)
#define LPUART_PERIPHERAL_CLK (SysctrlPeripheralLpUart0)
#define LPUART_TX_AF GpioAf3
#define LPUART_TX_PORT GpioPortB
#define LPUART_TX_PIN GpioPin0
#define LPUART_RX_AF GpioAf3
#define LPUART_RX_PORT GpioPortB
#define LPUART_RX_PIN GpioPin11
#define RS485_CTRL_PORT GpioPortB
#define RS485_CTRL_PIN GpioPin1
#define RS485_CTRL_RX() Gpio_ClrIO(RS485_CTRL_PORT, RS485_CTRL_PIN)
#define RS485_CTRL_TX() Gpio_SetIO(RS485_CTRL_PORT, RS485_CTRL_PIN)
#endif
#if(DEVICE_TYPE == CONT_DEFOR_3D)
#define LP_UART_CH 0
#define LPUART (M0P_LPUART0)
#define LPUART_IRQN (LPUART0_IRQn)
#define LPUART_PERIPHERAL_CLK (SysctrlPeripheralLpUart0)
#define LPUART_TX_AF GpioAf3
#define LPUART_TX_PORT GpioPortB
#define LPUART_TX_PIN GpioPin0
#define LPUART_RX_AF GpioAf3
#define LPUART_RX_PORT GpioPortB
#define LPUART_RX_PIN GpioPin11
#define RS485_CTRL_PORT GpioPortB
#define RS485_CTRL_PIN GpioPin1
#define RS485_CTRL_RX() Gpio_ClrIO(RS485_CTRL_PORT, RS485_CTRL_PIN)
#define RS485_CTRL_TX() Gpio_SetIO(RS485_CTRL_PORT, RS485_CTRL_PIN)
#endif
#if(DEVICE_TYPE == COMM_UNIT)
#define LP_UART_CH 0
#define LPUART (M0P_LPUART0)
#define LPUART_IRQN (LPUART0_IRQn)
#define LPUART_PERIPHERAL_CLK (SysctrlPeripheralLpUart0)
#define LPUART_TX_AF GpioAf4
#define LPUART_TX_PORT GpioPortB
#define LPUART_TX_PIN GpioPin10
#define LPUART_RX_AF GpioAf3
#define LPUART_RX_PORT GpioPortB
#define LPUART_RX_PIN GpioPin11
#define RS485_CTRL_PORT GpioPortB
#define RS485_CTRL_PIN GpioPin2
#define RS485_CTRL_RX() Gpio_ClrIO(RS485_CTRL_PORT, RS485_CTRL_PIN)
#define RS485_CTRL_TX() Gpio_SetIO(RS485_CTRL_PORT, RS485_CTRL_PIN)
#endif
#if(DEVICE_TYPE == FORCE_3D)
#define LP_UART_CH 0
#define LPUART (M0P_LPUART0)
#define LPUART_IRQN (LPUART0_IRQn)
#define LPUART_PERIPHERAL_CLK (SysctrlPeripheralLpUart0)
#define LPUART_TX_AF GpioAf3
#define LPUART_TX_PORT GpioPortB
#define LPUART_TX_PIN GpioPin0
#define LPUART_RX_AF GpioAf3
#define LPUART_RX_PORT GpioPortB
#define LPUART_RX_PIN GpioPin11
#define RS485_CTRL_PORT GpioPortB
#define RS485_CTRL_PIN GpioPin1
#define RS485_CTRL_RX() Gpio_ClrIO(RS485_CTRL_PORT, RS485_CTRL_PIN)
#define RS485_CTRL_TX() Gpio_SetIO(RS485_CTRL_PORT, RS485_CTRL_PIN)
#endif
#if(DEVICE_TYPE == CRACK_DETECTION)
#define LP_UART_CH 0
#define LPUART (M0P_LPUART0)
#define LPUART_IRQN (LPUART0_IRQn)
#define LPUART_PERIPHERAL_CLK (SysctrlPeripheralLpUart0)
#define LPUART_TX_AF GpioAf4
#define LPUART_TX_PORT GpioPortB
#define LPUART_TX_PIN GpioPin10
#define LPUART_RX_AF GpioAf3
#define LPUART_RX_PORT GpioPortB
#define LPUART_RX_PIN GpioPin11
#define RS485_CTRL_PORT GpioPortB
#define RS485_CTRL_PIN GpioPin2
#define RS485_CTRL_RX() Gpio_ClrIO(RS485_CTRL_PORT, RS485_CTRL_PIN)
#define RS485_CTRL_TX() Gpio_SetIO(RS485_CTRL_PORT, RS485_CTRL_PIN)
#endif
#define FLASH_SECTOR_SIZE 0x200ul
#define FLASH_BASE ((uint32_t)0x00000000)
#define FLASH_SIZE (230u * FLASH_SECTOR_SIZE)
#define SRAM_BASE ((uint32_t)0x20000000)
#define RAM_SIZE 0x4000ul
#define BOOT_SIZE (20 * FLASH_SECTOR_SIZE)
#define APP_ADDRESS (0x2A00)//(FLASH_BASE + BOOT_SIZE)
#define BOOT_PARA_ADDRESS (0x0001FC00)
#define BOOT_PARA_SIZE (FLASH_SECTOR_SIZE)
#define DEBUG 1
#define USE_LOWPOWER 0
#define USE_WDT 1
//#define WAKEUP_TIME_ARR (65536 - (30 * 150)) //65536 - time * 38400Hz / 256分频
#define SYSCLK_RCH 0
#define SYSCLK_XTH 1
#define SYSCLK_PLL 2
#define SYSCLK SYSCLK_RCH
typedef struct {
uint32_t AppFlag;
uint32_t UpdateFlag;
uint32_t PackageCnt;
uint32_t AppSize;
uint32_t Crc32Check;
2026-05-11 10:02:31 +08:00
uint32_t FirstRunFlag;//第一次运行
uint8_t DevMac[6];//设备MAC
uint32_t LoraFreq;//Lora频率
2026-05-09 17:09:52 +08:00
}BootPara_t, *BootPara;
typedef void (*ReadPara)(BootPara_t rPara);
typedef void (*SavPara)(BootPara_t wPara);
typedef void (*UartSend)(uint8_t *sData, int sLen);
typedef void (*DataRevCallBack)(uint8_t *rData, uint8_t rLen);
void BspInit(void);
void DBGUartSendByte(uint8_t sData);
void DBGUartSend(uint8_t *sData, int sLen);
void ReadBootPara(BootPara rData);
void WriteBootPara(BootPara wData);
void EraseFlash(void);
uint32_t GetSysTick(void);
void delay_ms(uint32_t ms);
void Delay(uint8_t time);
void FeedDog(void);
void SystemReset(void);
#endif