123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- #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_UART_VECTOR 14
- #define IRQ_TMR3_VECTOR 16
- #define IRQ_TMR4_VECTOR 17
- #define IRQ_TMR5_VECTOR 18
- #define IRQ_PORT_VECTOR 26
- #define IRQ_SPI_VECTOR 20
- #define IRQ_I2C_VECTOR 30
- #define SW_RST_DC_IN 1
- #define SW_RST_QTEST_NORMAL 2
- #define SW_RST_QTEST_ONLY_PAIR 3
- #define SW_RST_FLAG 4 //不管什么情况,直接复位
- #define SW_RST_DAC_SYNC 5 //DAC sync
- #if HLW_UI
- #define SW_RST_CLEAR_PAIRLIST 6
- #endif // HLW_UI
- typedef void (*isr_t)(void);
- //clk_out type
- enum {
- DBG_CLK_NO,
- DBG_CLK_XOSC,
- DBG_CLK_XOSC_32K,
- DBG_CLK_OSC32K,
- DBG_CLK_PLL0DIV2,
- DBG_CLK_XOSC_X2CLK,
- DBG_CLK_PLL1DIV2,
- DBG_CLK_RC2M,
- DBG_CLK_RTC_RC2M,
- DBG_CLK_SYS_CLK,
- DBG_CLK_BT_CLK,
- DBG_CLK_PLL_TS_CLKO,
- DBG_CLK_DAC_CLKPP,
- DBG_CLK_TKA_OUT,
- };
- void sys_clk_output(u32 type, u32 mapping); //输出时钟, mapping参考CLKOMAP_xx
- extern u16 tmr5ms_cnt;
- int64_t __divdi3(int64_t num, int64_t den);
- int mul_r(int x, int y, int frat);
- int s_abs(int x);
- u32 sys_get_rc2m_rtc_clk(void);
- void sys_set_tmr_enable(bool tmr5ms_en, bool tmr1ms_en);
- void sys_set_tmr_tick(bool tick_en);
- u32 sys_get_rand_key(void);
- void sys_run_loop(void);
- void xosc_init(void);
- bool sys_irq_init(int vector, int pr, isr_t isr); //初始化一个中断, pr为优先级
- u16 get_random(u16 num); //获取[0, num-1]之间的随机数
- void sys_clk_output(u32 type, u32 mapping); //输出时钟 type: 0->xosc26m, 1->x26m_13m, 2->12m, 3->24m
- 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编码
- u32 sys_rst_init(bool wko10s_rst);
- void sw_reset_kick(u8 source);
- u8 sw_reset_source_get(void);
- void set_uart0_baud(u32 baud);
- void set_uart1_baud(u32 baud);
- void set_uart1_baud_rc2m_clk(u32 baud);
- void sys_pe4_power_gate_set(u8 on); //PE4供电开关
- bool bt_get_ft_trim_value(void *rf_param);
- void fs_lock(void);
- void fs_unlock(void);
- bool spiflash_read_kick(void *buf, u32 addr, uint len);
- bool spiflash_read_wait(void);
- void spiflash_lock(void);
- void spiflash_unlock(void);
- #define anc_alg_enter_critical() fs_lock()
- #define anc_alg_exit_critical() fs_unlock()
- //lv0: just sleep
- //lv1: sleep with nomal xosc
- //lv2: sleep with lowpwr xosc
- //lv3: sleep with lowpwr buck
- //lv4: sleep with lowpwr ldo
- void sys_sleep_proc_lv(u8 lpclk_type, uint level);
- void sys_sleep_proc_lv0(void);
- u8 crc8_maxim(u8 *buf, u8 length);
- extern const u8 crc8_tbl[256];
- extern const uint16_t libs_version;
- #define LIBS_VERSION libs_version
- //vusb 5v reset
- #define vusb_reset_set_time(nsec) {VBRSTCON = ((nsec * 33) << 20);} //vusb delay n second
- #define vusb_reset_kick_mode(x) {VBRSTCON = (VBRSTCON & ~(1<<30)) | ((x)<<30);} //0:vusb HW kick, 1:soft kick
- #define vusb_reset_soft_start_kick() {RTCCPND |= BIT(30);} // soft start kick
- #define vusb_reset_clr() {RTCCPND = 3 << 28;} //clr counter and pending, disable
- #define vusb_reset_en(x) {RTCCON = (RTCCON & ~(1<<6)) | ((x)<<6);} //0:reset disable, 1:reset enable
- //vusb 4s reset
- #define vusb4s_reset_is_recover() ((bool)(RTCCON12 & (3 << 30))) //VUSB拔出后是否恢复4S复位功能标志
- #define vusb4s_reset_recover_clr() RTCCON10 = BIT(31) //清除恢复4S复位功能标志
- #define vusb4s_reset_dis() RTCCON12 |= 3 << 2;vusb4s_reset_recover_clr() //关闭VUSB4S复位
- #define vusb4s_reset_en() vusb4s_reset_recover_clr(); RTCCON12 &= ~(3 << 2); RTCCON11 |= BIT(4) //打开VUSB4S复位和拔出恢复功能
- #define vusb4s_reset_clr_cnt() RTCCON10 = BIT(15) //清除VUSB4S计数
- #endif // _API_SYS_H_
|