first commit
This commit is contained in:
commit
3f016f84d8
47 changed files with 13013 additions and 0 deletions
189
vendor/StdPeriphDriver/inc/CH59x_sys.h
vendored
Normal file
189
vendor/StdPeriphDriver/inc/CH59x_sys.h
vendored
Normal file
|
|
@ -0,0 +1,189 @@
|
|||
/********************************** (C) COPYRIGHT *******************************
|
||||
* File Name : CH59x_SYS.h
|
||||
* Author : WCH
|
||||
* Version : V1.2
|
||||
* Date : 2021/11/17
|
||||
* Description
|
||||
*********************************************************************************
|
||||
* Copyright (c) 2021 Nanjing Qinheng Microelectronics Co., Ltd.
|
||||
* Attention: This software (modified or not) and binary are used for
|
||||
* microcontroller manufactured by Nanjing Qinheng Microelectronics.
|
||||
*******************************************************************************/
|
||||
|
||||
#ifndef __CH59x_SYS_H__
|
||||
#define __CH59x_SYS_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief reset state 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 sys info state 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);
|
||||
|
||||
/**
|
||||
* @brief Enter safe access mode.
|
||||
*
|
||||
* @NOTE: After enter safe access mode, about 16 system frequency cycles
|
||||
* are in safe mode, and one or more secure registers can be rewritten
|
||||
* within the valid period. The safe mode will be automatically
|
||||
* terminated after the above validity period is exceeded.
|
||||
* if sys_safe_access_enable() is called,
|
||||
* you must call sys_safe_access_disable() before call sys_safe_access_enable() again.
|
||||
*/
|
||||
#define sys_safe_access_enable() do{volatile uint32_t mpie_mie;mpie_mie=__risc_v_disable_irq();SAFEOPERATE;\
|
||||
R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG1;R8_SAFE_ACCESS_SIG = SAFE_ACCESS_SIG2;SAFEOPERATE;
|
||||
|
||||
#define sys_safe_access_disable() R8_SAFE_ACCESS_SIG = 0;__risc_v_enable_irq(mpie_mie);SAFEOPERATE;}while(0)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // __CH59x_SYS_H__
|
||||
Loading…
Add table
Add a link
Reference in a new issue