#ifndef _API_SYS_H_ #define _API_SYS_H_ #define IRQ_TMR1_VECTOR 4 #define IRQ_TMR2_VECTOR 5 #define IRQ_IRRX_VECTOR 6 #define IRQ_QDEC_VECTOR 6 #define IRQ_UART_VECTOR 14 #define IRQ_TMR3_VECTOR 16 #define IRQ_TMR4_VECTOR 17 #define IRQ_TMR5_VECTOR 18 #define IRQ_SPI_VECTOR 20 #define IRQ_PORT_VECTOR 26 #define IRQ_DESPI_VECTOR 27 #define IRQ_I2C_VECTOR 29 #define IRQ_CTP_VECTOR 30 #define IRQ_TE_TICK_VECTOR 31 typedef struct { u8 vbg; //trim到0.6V的寄存器配置值 RI_BGTRIM, RTCCON8[28:24] u8 vbat; //trim到4.2V的寄存器配置值 RI_BGCH_TRIM, RTCCON8[14 10] u16 chg_icoef; //充电电流换算系数 u16 vbg_volt; //vbg目标值 u16 vbat_coef; u8 resv[4]; } sys_trim_t; extern sys_trim_t sys_trim; typedef void (*isr_t)(void); extern u16 tmr5ms_cnt; void sys_set_tmr_enable(bool tmr5ms_en, bool tmr1ms_en); u32 sys_get_rand_key(void); void xosc_init(void); /* * pr = 1, 高优先级中断, 中断入口函数isr放公共区且要加FIQ, 例如: * AT(.com_text.isr) FIQ * void timer3_isr(void) {} * * pr = 0, 低优先级中断,不用加FIQ, 函数放入公共区, 例如: * AT(.com_text.isr) * void timer3_isr(void) {} * * 中断函数需要尽量精简,否则影响系统效率。推荐用低优先级中断,需要很高响应速度时才用高优先级中断 */ bool sys_irq_init(int vector, int pr, isr_t isr); //初始化一个中断, pr为优先级 u16 get_random(u16 num); //获取[0, num-1]之间的随机数 u16 convert_uni2gbk(u16 code, u32 addr, u32 len); //输入utf16, 返回gbk编码, 找不到编码,使用'□' u8 utf8_char_size(u8 code); //返回UTF8占用几字节 u16 utf8_convert_to_unicode(u8 *in, u8 char_size); //UTF-8转成UTF-16 LE编码 uint8_t * bt_get_package_rf_param(u8 package); void vddio_voltage_configure(void); void dbg_clk_out(u32 type, u32 div); #endif // _API_SYS_H_