board.h 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468
  1. #ifndef __BOARD_H__
  2. #define __BOARD_H__
  3. #include "stdint.h"
  4. #include "stdio.h"
  5. #include "hc32l19x.h"
  6. #include "clk_rst.h"
  7. #include "gpio.h"
  8. #include "prj_com.h"
  9. #include "SerPlot_drv.h"
  10. #include "wdg_drv.h"
  11. #include "stdlib.h"
  12. #include "lcd_disp.h" //add by yuewei 20260310
  13. #include <rtthread.h>
  14. //////////////////////////////版本号 调试开关等wxl20260416////////////////////////////////////////////
  15. #define VER_TYPE 1 // type, 1: ultrasound flow meter;
  16. #define VER_OPERATOR 1 // operator, 1: China Telecom;
  17. #define VER_MODULE 4 // module, 1: HC32_BC28;
  18. #define VER_FIRMWARE 1
  19. /////////////////////////////集中显示频繁使用的调试开关及其他宏定义wxl20260416//////////////////////////////
  20. #define BOOTLOADER_ENABLE // 从0x0000启动运行时,屏蔽该宏
  21. #define APP_DEBUG_PRINT // 调试打印开关
  22. // #define DEBUG_LOW_POWER
  23. //#define DOG_ENABLE // WXL2026-5-12
  24. // #define DEBUG_BILL
  25. // #define DEBUG_RESET_LOG_NOT_SEND // wxl2026-5-8 调试阶段,单片机初始运行不记日志,正常运行阶段记上电日志
  26. // #define DEBUG_SAVE_BAK 0
  27. // #define DEBUG_5MIN_REC 1
  28. // #define DEBUG_HOUR_REC 1
  29. // #define DEBUG_MONTH_REC 1
  30. // #define DEBUG_DAY_REC 1
  31. // #define DEBUG_LOG_WARM
  32. // #define DEBUG_PARAM
  33. // #define DEBUG_PATCH
  34. #define DEBUG_NB
  35. // #define DEBUG_BILL2
  36. // #define DEBUG_BILL
  37. // add by yuewei 20260305 end
  38. // #define RTC_INTERRUPT_TIME_5_S
  39. #define ARM_MATH_CM0PLUS
  40. #if defined(ARM_MATH_CM7) || defined(ARM_MATH_CM4) || defined(ARM_MATH_CM3) || defined(ARM_MATH_CM0) || defined(ARM_MATH_CM0PLUS)
  41. #include "arm_math.h"
  42. #else
  43. #include "math.h"
  44. #define fabsf(x) fabs(x)
  45. #endif
  46. #ifdef __cplusplus
  47. extern "C"
  48. {
  49. #endif
  50. #if defined(__CC_ARM) || defined(__CLANG_ARM)
  51. extern int Image$$ER_IROM1$$Base;
  52. extern int Image$$RW_IRAM1$$ZI$$Limit;
  53. #define VECT_TAB_OFFSET ((uint32_t)&Image$$ER_IROM1$$Base)
  54. #define HEAP_BEGIN ((void *)&Image$$RW_IRAM1$$ZI$$Limit)
  55. #elif __ICCARM__
  56. #pragma section = "CSTACK"
  57. #define HEAP_BEGIN (__segment_end("CSTACK"))
  58. #else
  59. extern int __bss_end;
  60. #define HEAP_BEGIN ((void *)&__bss_end)
  61. #endif
  62. #define HEAP_END ((void *)(0x20000000 + 0x07000))
  63. extern int Stack_Mem;
  64. #define MAIN_STACK_BEGIN ((void *)&Stack_Mem)
  65. #define MAIN_STACK_SIZE ((uint32_t)HEAP_BEGIN - (uint32_t)MAIN_STACK_BEGIN)
  66. #define RCL_38p4K_ENABLE
  67. // set EXT_CAP for 2uA power saving
  68. #define LCD_EXT_CAP
  69. // #define SYSCLK_4M_MODE
  70. // #define SYSCLK_8M_MODE
  71. #define SYSCLK_16M_MODE
  72. #define SLEEPDEEP_ENABLE
  73. #define DEBUG_ENABLE
  74. // #define USE_DEBUG_UART
  75. #define NVIC_PRIO_0 (0x00U)
  76. #define NVIC_PRIO_1 (0x01U)
  77. #define NVIC_PRIO_2 (0x02U)
  78. #define NVIC_PRIO_3 (0x03U)
  79. #define MUX_CH_NUM (4)
  80. // context_m0p.S
  81. /* 32bit CPU */
  82. // typedef long rt_base_t; /**< Nbit CPU related date type */
  83. extern rt_base_t rt_hw_interrupt_disable(void);
  84. extern void rt_hw_interrupt_enable(rt_base_t level);
  85. extern uint32_t SystemCoreClock; // System Clock Frequency (Core Clock)
  86. extern void SystemInit(void); // Initialize the system
  87. // extern void SystemCoreClockUpdate (void); // Update SystemCoreClock variable
  88. // board.c
  89. extern void IRQMutEnable(IRQn_Type IRQn, uint32_t Priority);
  90. extern void systick_init(void);
  91. extern void us_delay(uint32_t us);
  92. extern void CalExpireTime(uint32_t us);
  93. extern void WaitExpireTime(void);
  94. // finsh_drv.c
  95. #ifndef RCL_38p4K_ENABLE
  96. #define USART_BAUDRATE (8192)
  97. #else
  98. #define USART_BAUDRATE (9600)
  99. #endif
  100. #define SERPLOT_DMATX_OFF (0x0001u)
  101. #define YMODEM_UPGRADE_ON (0x0001u)
  102. #define CHECK_ITF_ON (0x0002u)
  103. typedef void (*uart_rx_itf)(uint8_t ch);
  104. typedef void (*ymodem_rx_itf)(uint8_t RxByte, void *arg);
  105. extern uint16_t Finsh_Uart_Mode;
  106. extern uint16_t SerPlot_Mode;
  107. extern int8_t get_nb_imei_code(void);
  108. extern int8_t at_cmd_send(uint8_t stat, char *cmd_str, char *ack, uint16_t retry_time, uint8_t time_out);
  109. extern void finsh_drv_init(void);
  110. extern void print_ch(char ch);
  111. extern void print_str(char *str);
  112. extern void DebugPrintStr(char *Str, uint16_t Len);
  113. extern uint16_t FinSh_Txbuf_Busy(void);
  114. extern void finsh_tx(volatile uint8_t *data, uint16_t len);
  115. extern void PutChar(char ch);
  116. extern void set_shell_rx_itf(uart_rx_itf itf);
  117. extern void set_check_rx_itf(uart_rx_itf itf);
  118. extern void set_ymodem_rx_itf(ymodem_rx_itf itf, void *arg);
  119. // dma_drv.c
  120. extern void DMA_ReqClkOn(void);
  121. extern void DMA_ReqClkOff(void);
  122. extern uint16_t DMA_Busy(void);
  123. // rtc_drv.c
  124. typedef struct
  125. {
  126. uint8_t year;
  127. uint8_t month;
  128. uint8_t day;
  129. uint8_t week;
  130. uint8_t hour;
  131. uint8_t minute;
  132. uint8_t second;
  133. uint8_t flag_1s : 1; // 1s
  134. uint8_t flag_1m : 1; // 1m
  135. uint8_t rsv : 6;
  136. } rtc_run_t;
  137. extern void get_rtc_run(rtc_run_t **rtc_run);
  138. extern void set_rtc_run(rtc_run_t *rtc_run);
  139. extern void rtc_init(rtc_run_t *rtc_run);
  140. extern void set_rtc_date(uint8_t year, uint8_t month, uint8_t day);
  141. extern void get_rtc_date(uint8_t *year, uint8_t *month, uint8_t *day);
  142. extern void set_rtc_time(uint8_t hour, uint8_t min, uint8_t sec);
  143. extern void get_rtc_time(uint8_t *hour, uint8_t *min, uint8_t *sec);
  144. extern uint32_t get_rtc_cnt_int(void);
  145. extern void set_rtc_cnt_int(uint32_t cnt_int);
  146. extern uint32_t get_tdc_rw_err_cnt(void);
  147. // low_pwr_drv.c
  148. extern void debug_stop(void);
  149. extern void exti_init(void);
  150. extern void EnterLowPower(void);
  151. // misc_drv.c
  152. // tdc_spi_drv.c
  153. extern void tdc_spi_init(void);
  154. extern void tdc_spi_wr_d32(uint8_t code, uint32_t data);
  155. extern void tdc_spi_wr_code(uint8_t code);
  156. extern uint32_t tdc_spi_rd_d32(uint8_t code);
  157. extern uint16_t tdc_spi_rd_d16(uint8_t code);
  158. extern uint8_t tdc_spi_rd_d8(uint8_t code);
  159. // lcd_drv.c
  160. // seg23:com0~com3
  161. #define LCD_STATUS_BAR1 (0x01000000u)
  162. #define LCD_STATUS_BAR2 (0x02000000u)
  163. #define LCD_STATUS_BAR3 (0x04000000u)
  164. #define LCD_STATUS_BAR4 (0x08000000u)
  165. // seg22:com0~com3
  166. #define LCD_STATUS_LEFT (0x00010000u)
  167. #define LCD_STATUS_INSTANT (0x00020000u)
  168. #define LCD_STATUS_FORWARD (0x00040000u)
  169. #define LCD_STATUS_BACKWARD (0x00080000u)
  170. // seg21:com0~com3
  171. #define LCD_STATUS_KPA (0x00000100u)
  172. #define LCD_STATUS_LOWPWR (0x00000200u)
  173. #define LCD_STATUS_SHUTDOWN (0x00000400u)
  174. #define LCD_STATUS_LADDER (0x00000800u)
  175. // seg20:com0~com3
  176. #define LCD_STATUS_HOUR (0x00000001u)
  177. #define LCD_STATUS_SLASH (0x00000002u)
  178. #define LCD_STATUS_DEGREE (0x00000004u)
  179. #define LCD_STATUS_YUAN (0x00000008u)
  180. #define LCD_STATUS_BAR5 (0x00000010u)
  181. #define LCD_STATUS_CIRCLE (0x00000020u)
  182. #define LCD_STATUS_CUM (0x00000040u)
  183. #define LCD_STATUS_M3 (0x00000080u)
  184. #define LCD_POINT4 (3)
  185. #define LCD_POINT5 (4)
  186. #define LCD_POINT6 (5)
  187. #define LCD_POINT7 (6)
  188. #define LCD_POINT8 (7)
  189. #define LCD_POINT9 (8)
  190. extern uint8_t DispMem_Symbol[5];
  191. extern uint32_t DispMem_Status;
  192. extern void lcd_init(void);
  193. extern void LCD_ClrAll(void);
  194. extern void LCD_ClrStatus(void); // add by HBR 20260604
  195. extern void LCD_ClrDec(void);
  196. extern void LCD_DispDec(uint32_t val, uint8_t pos, uint8_t dl);
  197. extern void LCD_DispDecAllPos(uint32_t val, uint8_t pos, uint8_t dl);
  198. extern void LCD_DispFloat(float val, uint8_t pos, uint8_t dl, uint8_t il);
  199. extern void LCD_DispDouble(double val, uint8_t pos, uint8_t dl, uint8_t il);
  200. extern void LCD_DispStr(char *str, uint8_t pos, uint8_t dl);
  201. extern void LCD_Update(void);
  202. extern void LCD_DispPoint(uint8_t num);
  203. // adc_drv.c
  204. extern volatile float McuTemp;
  205. extern volatile uint16_t McuVcc; // unit mV
  206. extern volatile uint16_t McuVbat; // unit mV
  207. // extern volatile uint16_t McuVTxbat; // unit mV
  208. extern volatile float WaterPressure; // unit MPa
  209. extern void adc_init(void);
  210. extern void adc_get(void);
  211. // eeprom_drv.c
  212. extern void eeprom_init(void);
  213. extern uint8_t EEPROM_WrPacket(uint8_t *Buf, uint16_t DLen);
  214. extern uint8_t EEPROM_RdPacket(uint8_t *Buf, uint16_t DLen);
  215. // mcu_flash_drv.c
  216. typedef struct
  217. {
  218. uint32_t addr;
  219. union U
  220. {
  221. uint32_t word;
  222. uint8_t byte[4];
  223. } u;
  224. uint8_t idx;
  225. } McuFlash_WP_t;
  226. extern void McuFlash_init(void);
  227. extern void McuFlash_WaitBusy(void);
  228. extern void McuFlash_Unlock(void);
  229. extern void McuFlash_Lock(void);
  230. #ifndef BOOTLOADER_ENABLE
  231. extern int8_t McuFlash_ErasePage(uint32_t addr);
  232. extern int8_t McuFlash_WordPP(uint32_t addr, uint32_t data);
  233. #else
  234. // the following functions implemented in bootloader, shared for APP
  235. typedef uint32_t (*upgrade_pkg_crc32_fpt)(const uint8_t *buf, uint32_t size);
  236. typedef void (*McuFlash_ErasePage_fpt)(uint32_t addr);
  237. typedef void (*McuFlash_WordPP_fpt)(uint32_t addr, uint32_t data);
  238. #define upgrade_pkg_crc32(x, y) (*((upgrade_pkg_crc32_fpt)(*(uint32_t *)0xc0u)))((x), (y))
  239. #define McuFlash_ErasePage(x) (*((McuFlash_ErasePage_fpt)(*(uint32_t *)0xc4u)))((x))
  240. #define McuFlash_WordPP(x, y) (*((McuFlash_WordPP_fpt)(*(uint32_t *)0xc8u)))((x), (y))
  241. #endif
  242. extern void McuFlash_EraseSegment(uint32_t start, uint32_t len);
  243. extern void McuFlash_OpenWP(uint32_t addr, McuFlash_WP_t *p);
  244. extern void McuFlash_Buf2WP(uint8_t *buf, uint32_t len, McuFlash_WP_t *p);
  245. extern void McuFlash_CloseWP(McuFlash_WP_t *p);
  246. // button_drv.c
  247. #define BTNKEY_TOUCH_FALL (0x00000010u)
  248. // #define BTNKEY_TOUCH_RISE (0x00000010u)
  249. extern uint32_t BtnKeyHistory;
  250. extern void ButtonInit(void);
  251. extern uint32_t ButtonGetEvents(void);
  252. // debug_uart_drv.c
  253. extern void debug_uart_init(void);
  254. // lpuart0_drv.c
  255. extern void lpuart0_drv_init(uint8_t baud);
  256. extern void lpuart0_tx_str(char *str);
  257. extern void lpuart0_set_rx_itf(uart_rx_itf itf);
  258. // nb_drv.c
  259. #define nb_tx_str lpuart0_tx_str
  260. // NB_EN: PF00(AF0)
  261. #define NB_EN_PIN_FUNC PF00_AF0
  262. #define NB_EN_GPIO_PORT GpioPortF
  263. #define NB_EN_GPIO_BITMASK GpioBitMsk0
  264. extern void nb_power_on(uint8_t baud);
  265. extern void nb_power_off(void);
  266. #define LOW_PWR_THRESHOLD (3200)
  267. // hardware_id_drv.c
  268. extern void HardwareIdInit(void);
  269. extern uint16_t GetHardwareId(void);
  270. // mux_drv.c
  271. void mux_init(void);
  272. void set_mux_ch(uint32_t ch);
  273. uint32_t get_mux_ch(void);
  274. #include "param.h"
  275. // add by yuewei 20260327 start
  276. // 输入滤波:速度 & 温度(越小越平滑)
  277. #define SPDLVL_FILTER_ALPHA 0.2f
  278. #define TEMP_FILTER_ALPHA 0.3f
  279. // 输出流量滤波(最终结果平滑)
  280. #define VOL_FILTER_ALPHA 0.15f
  281. // add by yuewei 20260327 end
  282. // add by yuewei 20260325 用于飞行时间差低通平滑滤波
  283. #define DIFF_TOFF_FILTER_ALPHA 0.5f
  284. // add by yuewei 20260325 用于防止APSR二次修正来回跳变
  285. #define APSR_MAX_STEP 0.01f
  286. // add by yuewei 20260305 start
  287. // #define APP_DEBUG_PRINT
  288. #ifdef APP_DEBUG_PRINT
  289. #define LOG(...) \
  290. do \
  291. { \
  292. rt_enter_critical(); \
  293. printf(__VA_ARGS__); \
  294. rt_exit_critical(); \
  295. } while (0)
  296. #else
  297. #define LOG(...) \
  298. do \
  299. { \
  300. } while (0)
  301. // #define LOG(...) rt_thread_mdelay(2) //do {} while(0)
  302. #endif
  303. // add by yuewei 20260309 to deal hongwai long data
  304. extern uint8_t HONGWAI_LONG_RX_FLAG;
  305. // add by yuewei 20260310 to show lcd all
  306. extern void lcd_show_all(void);
  307. // add by yuewei 20260310 to enter check mode when LcdPage is 'disp_time' and key long press 5 seconds
  308. extern en_lcd_page_t LcdPage;
  309. // add by yuewei 20260310 to enter check mode when LcdPage is 'disp_time' time and key long press 5 seconds
  310. extern void check_enter_check_mode_by_key_press(void);
  311. // add by yuewei 20260310 to exit check mode when LcdPage is 'disp_cumflow' and key long press 5 seconds
  312. extern void check_enter_normal_mode_by_key_press(void);
  313. // add by yuewei 20260318, for lcd display remain time
  314. extern uint16_t ot_count_down;
  315. // add by yuewei 20260319, TDC中断信号量
  316. extern struct rt_semaphore tdc_isr_sem;
  317. // add by yuewei 20260422, RTC中断信号量
  318. extern struct rt_semaphore rtc_isr_sem;
  319. // add by yuewei 20260422, RTC中断函数迁移出中断
  320. extern void rtc_interrupt_deal_tdc(void);
  321. // add by yuewei 20260319, TDC中断函数迁移出中断
  322. extern void tof_isr_convert_tof_to_flow(void);
  323. // add by yuewei 20260416, for lcd display pass
  324. extern void lcd_show_key_trigger_report_pass(void);
  325. // add by yuewei 20260424, for lcd display "ot-Err"
  326. extern uint8_t G_OT_ERROR_FLAG_CNT;
  327. // add by yuewei 20260424, for lcd display ot error
  328. extern void lcd_show_ot_error(void);
  329. // add by yuewei 20260416 to countdown LcdTimer per 1 second
  330. extern void lcd_timer_countdown(void);
  331. // add by yuewei 20260416, short key press toggle value,defalt: 0->display fw cumflow,1->display bw cumflow
  332. extern uint8_t g_lcd_display_check_bw_cum_flow;
  333. extern uint8_t lcd_disp_pass_flag; // wxl20260423 用于显示pass字段
  334. extern void tof_filter_init(uint8_t ch_num); // 20260429
  335. extern uint8_t G_STATIC_OT_SETTING_FLAG; // 20260429 正在设置静态OT,不进行飞行时间差滤波
  336. extern void set_rtc_interrupt_time(float time); // add by yuewei 20260519,设置RTC:多少秒钟进一次中断,time:0.5s, 1.0s, 1.5s, 2.0s...
  337. extern float get_rtc_interrupt_time(void); // add by yuewei 20260519,从 RTC->CR0 读取 PRDX 值,返回中断间隔秒数
  338. // add by wuxiaolin 20260313 start
  339. // param.h 参数和记录读写相关接口
  340. extern uint8_t get_param_firmware_ver(void); // 获取当前版本号
  341. // extern int8_t GetChNum(void);//获取超声波通道数
  342. extern int8_t set_hardware_para(HardWareParaDef *HardWarePara); // 设置硬件参数
  343. extern int8_t get_hardware_para(HardWareParaDef *HardWarePara); // 读取硬件参数
  344. extern int8_t set_patch_info(PATCH_INFO_DEF *patch_info); // 设置表端开始升级信息,收到升级指令后调用
  345. extern uint8_t write_diff_patch_to_flash(DIFF_PACKET_DEF *Packet); // 写差分包,收到差分包后调用
  346. extern int8_t set_server_ip_port_para(SERVER_IP_PORT_DEF *server_ip_para); // 设置服务器ip和端口号
  347. extern int8_t get_server_ip_port_para(SERVER_IP_PORT_DEF *server_ip_para); // 读取服务ip和端口号
  348. extern int8_t set_regular_report_para(REGULAR_REPORT_DEF *regular_report_para); // 设置定时上报周期和时间间隔
  349. extern int8_t get_regular_report_para(REGULAR_REPORT_DEF *regular_report_para); // 读取定时上报周期和时间间隔
  350. extern int8_t set_dma_regular_report_para(DMA_REGULAR_REPORT_DEF *dma_report_para); // 设置dma上报时间参数
  351. extern int8_t get_dma_regular_report_para(DMA_REGULAR_REPORT_DEF *dma_report_para); // 读取dma定时上报时间参数
  352. extern int8_t set_flow_alarm_para(FLOW_ALARM_PARA_DEF *flow_alarm_para); // 设置流量告警参数
  353. extern int8_t get_flow_alarm_para(FLOW_ALARM_PARA_DEF *flow_alarm_para); // 读取流量告警参数
  354. extern int8_t set_press_alarm_para(PRESS_ALARM_PARA_DEF *press_alarm_para); // 设置压力告警参数
  355. extern int8_t get_press_alarm_para(PRESS_ALARM_PARA_DEF *press_alarm_para); // 获取压力告警参数
  356. extern int8_t set_temp_alarm_para(TEMP_ALARM_PARA_DEF *temp_alarm_para); // 设施温度告警参数
  357. extern int8_t get_temp_alarm_para(TEMP_ALARM_PARA_DEF *temp_alarm_para); // 读取温度告警参数
  358. extern int8_t set_settlement_day_para(SETTLEMENT_DAY_DEF *settlement_day_para); // 设置表端结算日参数
  359. extern int8_t get_settlement_day_para(SETTLEMENT_DAY_DEF *settlement_day_para); // 读取表端结算日参数
  360. extern int8_t set_meter_bottom_data(METER_BOTTOM_DEF *bottom_data); // 设置表底读数
  361. extern int8_t get_18month_record_data(uint8_t *data); // 读取月结数据
  362. extern int8_t get_30day_record_data(uint8_t *data); // 读取日结数据
  363. extern int8_t get_hour_record_data(uint8_t year, uint8_t month, uint8_t day, uint8_t *data); // 读取时结数据
  364. extern int8_t get_5min_record_data(GET_5MIN_REOCORD_DEF *get_5min_record_data, uint16_t numb, uint8_t *data); // 读取5分钟密集数据
  365. extern int8_t get_log_record(uint8_t start, uint8_t num, uint8_t *data); // 读取日志数据 暂未实现
  366. extern int8_t set_channel_numb(uint8_t *numb); // 设置声道数
  367. extern int8_t get_channel_numb(uint8_t *numb); // 设置声道数
  368. extern int8_t get_device_addr(uint8_t *data); // 获取设备地址
  369. extern int8_t set_device_addr(uint8_t *data); // 设置表地址
  370. extern int8_t set_flow_para(FLOW_PARA_DEF *flow_para); // 设置流量参数
  371. extern int8_t get_flow_para(FLOW_PARA_DEF *flow_para); // 读取流量参数
  372. extern int8_t set_deltaTC_flow_para(DELTA_TC_FLOW_PARA_DEF *deltaTC_para); // 设置德尔塔TC流量参数
  373. extern int8_t get_deltaTC_flow_para(DELTA_TC_FLOW_PARA_DEF *deltaTC_para); // 读取德尔塔TC流量参数
  374. extern int8_t set_diameter_and_temp_compensation(DIAMETER_AND_TEMP_COMPENSATION_DEF *data); // 设置口径和温度补偿系数
  375. extern int8_t get_diameter_and_temp_compensation(DIAMETER_AND_TEMP_COMPENSATION_DEF *data); // 读取口径和温度补偿系数
  376. extern int8_t set_auto_match_level_para(AUTO_MATCH_LEVEL_PARA_DEF *data); // 设置自动匹配电平参数
  377. extern int8_t get_auto_match_level_para(AUTO_MATCH_LEVEL_PARA_DEF *data); // 获取自动匹配电平参数
  378. extern int8_t set_nbqr_para(NBQR_PARA_DEF *nbqr_para); // 设置nbqr参数
  379. extern int8_t get_nbqr_para(NBQR_PARA_DEF *nbqr_para); // 读取nbqr参数
  380. extern uint8_t G_TDC_DEEP_SLEEP;
  381. // add by wuxiaolin 20260313 end
  382. // extern uint8_t NB_RUN_UPDATE_FLAG;//wxl 2026-4-8 nb下载代码时,禁止长时间占用中断
  383. #ifdef DEBUG_LOW_POWER
  384. extern uint32_t get_time[32];
  385. extern uint8_t gtcnt;
  386. extern void get_internal_time(void);
  387. extern uint16_t tms;
  388. #define SYS_MS_CNT rt_tick_get()
  389. #endif
  390. #ifdef __cplusplus
  391. }
  392. #endif
  393. #endif