1 
2 
3 
4 #ifndef __CH57x_SYS_H__
5 #define __CH57x_SYS_H__
6 
7 #ifdef __cplusplus
8  extern "C" {
9 #endif
10 
11 #include "CH579SFR.h"
12 #include "core_cm0.h"
13 
14 
15 
16 /**
17   * @brief  rtc interrupt event define
18   */
19 typedef enum
20 {
21     RST_STATUS_SW = 0,          // 软件复位
22     RST_STATUS_RPOR,            // 上电复位
23     RST_STATUS_WTR,             // 看门狗超时复位
24     RST_STATUS_MR,              // 外部手动复位
25     RST_STATUS_LRM0,            // 唤醒复位-软复位引起
26     RST_STATUS_GPWSM,           // 下电模式唤醒复位
27     RST_STATUS_LRM1,            //  唤醒复位-看门狗引起
28     RST_STATUS_LRM2,            //  唤醒复位-手动复位引起
29 
30 }SYS_ResetStaTypeDef;
31 
32 /**
33   * @brief  rtc interrupt event define
34   */
35 typedef enum
36 {
37     INFO_ROM_READ = 0,          // FlashROM 代码和数据区 是否可读
38     INFO_RESET_EN = 2,          // RST#外部手动复位输入功能是否开启
39     INFO_BOOT_EN,               // 系统引导程序 BootLoader 是否开启
40     INFO_DEBUG_EN,              // 系统仿真调试接口是否开启
41     INFO_LOADER,                // 当前系统是否处于Bootloader 区
42     STA_SAFEACC_ACT,            // 当前系统是否处于安全访问状态,否则RWA属性区域不可访问
43 
44 }SYS_InfoStaTypeDef;
45 
46 
47 #define SYS_GetChipID()             R8_CHIP_ID                                  /* 获取芯片ID类,一般为固定值 */
48 #define SYS_GetAccessID()           R8_SAFE_ACCESS_ID                           /* 获取安全访问ID,一般为固定值 */
49 UINT8 SYS_GetInfoSta( SYS_InfoStaTypeDef i );                                   /* 获取当前系统信息状态 */
50 // refer to SYS_ResetStaTypeDef
51 #define SYS_GetLastResetSta()       (R8_RESET_STATUS&RB_RESET_FLAG)             /* 获取系统上次复位状态 */
52 void SYS_ResetExecute( void );                                                  /* 执行系统软件复位 */
53 #define SYS_ResetKeepBuf( d )       (R8_GLOB_RESET_KEEP = d)                    /* 不受手动复位、 软件复位、 看门狗复位或者普通唤醒复位的影响 */
54 
55 void SYS_DisableAllIrq( PUINT32 pirqv);                                         /* 关闭所有中断,并保留当前中断值 */
56 void SYS_RecoverIrq( UINT32 irq_status );                                       /* 恢复之前关闭的中断值 */
57 UINT32 SYS_GetSysTickCnt( void );                                               /* 获取当前系统(SYSTICK)计数值 */
58 
59 #define  WWDG_SetCounter( c )       (R8_WDOG_COUNT = c)                         /* 加载看门狗计数初值,递增型 */
60 void  WWDG_ITCfg( UINT8 s );                            /* 看门狗溢出中断使能 */
61 void  WWDG_ResetCfg( UINT8 s );                         /* 看门狗溢出复位使能 */
62 #define  WWDG_GetFlowFlag()         (R8_RST_WDOG_CTRL&RB_WDOG_INT_FLAG)         /* 获取当前看门狗定时器溢出标志 */
63 void WWDG_ClearFlag(void);                                                      /* 清除看门狗中断标志,重新加载计数值也可清除 */
64 
65 
66 void mDelayuS( UINT16 t );      /* uS 延时 */
67 void mDelaymS( UINT16 t );      /* mS 延时 */
68 
69 
70 
71 #ifdef __cplusplus
72 }
73 #endif
74 
75 #endif  // __CH57x_SYS_H__
76 
77