mcu_ab568x/userboot240328/app/platform/libs/api_sys.h
2025-05-30 18:03:10 +08:00

62 lines
2.3 KiB
C

#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_