CMake构建CH58x项目,脱离eclipse使用Clion或者Vscode编写代码。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

173 lines
3.9 KiB

/********************************** (C) COPYRIGHT *******************************
* File Name : CH57x_SYS.h
* Author : WCH
* Version : V1.2
* Date : 2021/11/17
* Description
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
* SPDX-License-Identifier: Apache-2.0
*******************************************************************************/
#ifndef __CH58x_SYS_H__
#define __CH58x_SYS_H__
#ifdef __cplusplus
extern "C" {
#endif
/**
* @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;
/**
* @brief ID类
*/
#define SYS_GetChipID() R8_CHIP_ID
/**
* @brief 访ID
*/
#define SYS_GetAccessID() R8_SAFE_ACCESS_ID
/**
* @brief
*
* @param sc - refer to SYS_CLKTypeDef
*/
void SetSysClock(SYS_CLKTypeDef sc);
/**
* @brief
*
* @return Hz
*/
uint32_t GetSysClock(void);
/**
* @brief
*
* @param i - refer to SYS_InfoStaTypeDef
*
* @return
*/
uint8_t SYS_GetInfoSta(SYS_InfoStaTypeDef i);
/**
* @brief
*
* @return refer to SYS_ResetStaTypeDef
*/
#define SYS_GetLastResetSta() (R8_RESET_STATUS & RB_RESET_FLAG)
/**
* @brief
*/
void SYS_ResetExecute(void);
/**
* @brief
*
* @param i - refer to SYS_InfoStaTypeDef
*/
#define SYS_ResetKeepBuf(d) (R8_GLOB_RESET_KEEP = d)
/**
* @brief
*
* @param pirqv -
*/
void SYS_DisableAllIrq(uint32_t *pirqv);
/**
* @brief
*
* @param irq_status -
*/
void SYS_RecoverIrq(uint32_t irq_status);
/**
* @brief (SYSTICK)
*
* @return
*/
uint32_t SYS_GetSysTickCnt(void);
/**
* @brief
*
* @param c -
*/
#define WWDG_SetCounter(c) (R8_WDOG_COUNT = c)
/**
* @brief 使
*
* @param s -
*/
void WWDG_ITCfg(FunctionalState s);
/**
* @brief
*
* @param s -
*/
void WWDG_ResetCfg(FunctionalState s);
/**
* @brief
*
* @return
*/
#define WWDG_GetFlowFlag() (R8_RST_WDOG_CTRL & RB_WDOG_INT_FLAG)
/**
* @brief
*/
void WWDG_ClearFlag(void);
/**
* @brief uS
*
* @param t -
*/
void mDelayuS(uint16_t t);
/**
* @brief mS
*
* @param t -
*/
void mDelaymS(uint16_t t);
#ifdef __cplusplus
}
#endif
#endif // __CH58x_SYS_H__