#ifndef __CH57x_SYS_H__ #define __CH57x_SYS_H__ #ifdef __cplusplus extern "C" { #endif #include "CH579SFR.h" #include "core_cm0.h" /** * @brief rtc interrupt event define */ typedef enum { RST_STATUS_SW = 0, // 软件复位 RST_STATUS_RPOR, // 上电复位 RST_STATUS_WTR, // 看门狗超时复位 RST_STATUS_MR, // 外部手动复位 RST_STATUS_LRM0, // 唤醒复位-软复位引起 RST_STATUS_GPWSM, // 下电模式唤醒复位 RST_STATUS_LRM1, // 唤醒复位-看门狗引起 RST_STATUS_LRM2, // 唤醒复位-手动复位引起 }SYS_ResetStaTypeDef; /** * @brief rtc interrupt event define */ typedef enum { INFO_ROM_READ = 0, // FlashROM 代码和数据区 是否可读 INFO_RESET_EN = 2, // RST#外部手动复位输入功能是否开启 INFO_BOOT_EN, // 系统引导程序 BootLoader 是否开启 INFO_DEBUG_EN, // 系统仿真调试接口是否开启 INFO_LOADER, // 当前系统是否处于Bootloader 区 STA_SAFEACC_ACT, // 当前系统是否处于安全访问状态,否则RWA属性区域不可访问 }SYS_InfoStaTypeDef; #define SYS_GetChipID() R8_CHIP_ID /* 获取芯片ID类,一般为固定值 */ #define SYS_GetAccessID() R8_SAFE_ACCESS_ID /* 获取安全访问ID,一般为固定值 */ UINT8 SYS_GetInfoSta( SYS_InfoStaTypeDef i ); /* 获取当前系统信息状态 */ // refer to SYS_ResetStaTypeDef #define SYS_GetLastResetSta() (R8_RESET_STATUS&RB_RESET_FLAG) /* 获取系统上次复位状态 */ void SYS_ResetExecute( void ); /* 执行系统软件复位 */ #define SYS_ResetKeepBuf( d ) (R8_GLOB_RESET_KEEP = d) /* 不受手动复位、 软件复位、 看门狗复位或者普通唤醒复位的影响 */ void SYS_DisableAllIrq( PUINT32 pirqv); /* 关闭所有中断,并保留当前中断值 */ void SYS_RecoverIrq( UINT32 irq_status ); /* 恢复之前关闭的中断值 */ UINT32 SYS_GetSysTickCnt( void ); /* 获取当前系统(SYSTICK)计数值 */ #define WWDG_SetCounter( c ) (R8_WDOG_COUNT = c) /* 加载看门狗计数初值,递增型 */ void WWDG_ITCfg( UINT8 s ); /* 看门狗溢出中断使能 */ void WWDG_ResetCfg( UINT8 s ); /* 看门狗溢出复位使能 */ #define WWDG_GetFlowFlag() (R8_RST_WDOG_CTRL&RB_WDOG_INT_FLAG) /* 获取当前看门狗定时器溢出标志 */ void WWDG_ClearFlag(void); /* 清除看门狗中断标志,重新加载计数值也可清除 */ void mDelayuS( UINT16 t ); /* uS 延时 */ void mDelaymS( UINT16 t ); /* mS 延时 */ #ifdef __cplusplus } #endif #endif // __CH57x_SYS_H__