2024-12-02 16:26:55 +08:00
|
|
|
|
/********************************** (C) COPYRIGHT *******************************
|
2025-02-21 14:38:41 +08:00
|
|
|
|
* File Name : CH58x_SYS.h
|
2024-12-02 16:26:55 +08:00
|
|
|
|
* Author : WCH
|
|
|
|
|
* Version : V1.2
|
|
|
|
|
* Date : 2021/11/17
|
2025-02-21 14:38:41 +08:00
|
|
|
|
* Description : head file(ch585/ch584)
|
2024-12-02 16:26:55 +08:00
|
|
|
|
*********************************************************************************
|
|
|
|
|
* 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.
|
|
|
|
|
*******************************************************************************/
|
|
|
|
|
|
2025-02-21 14:38:41 +08:00
|
|
|
|
#ifndef __CH58x_SYS_H__
|
|
|
|
|
#define __CH58x_SYS_H__
|
2024-12-02 16:26:55 +08:00
|
|
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
|
extern "C" {
|
|
|
|
|
#endif
|
|
|
|
|
|
2025-02-21 14:38:41 +08:00
|
|
|
|
typedef void (*MachineMode_Call_func)(void);
|
|
|
|
|
|
2024-12-02 16:26:55 +08:00
|
|
|
|
/**
|
|
|
|
|
* @brief rtc interrupt event define
|
|
|
|
|
*/
|
|
|
|
|
typedef enum
|
|
|
|
|
{
|
|
|
|
|
RST_STATUS_SW = 0, // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|
|
|
|
RST_STATUS_RPOR, // <20>ϵ縴λ
|
|
|
|
|
RST_STATUS_WTR, // <20><><EFBFBD>Ź<EFBFBD><C5B9><EFBFBD>ʱ<EFBFBD><CAB1>λ
|
|
|
|
|
RST_STATUS_MR, // <20>ⲿ<EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>λ
|
|
|
|
|
RST_STATUS_LRM0, // <20><><EFBFBD>Ѹ<EFBFBD>λ-<2D><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|
|
|
|
RST_STATUS_GPWSM, // <20>µ<EFBFBD>ģʽ<C4A3><CABD><EFBFBD>Ѹ<EFBFBD>λ
|
|
|
|
|
RST_STATUS_LRM1, // <09><><EFBFBD>Ѹ<EFBFBD>λ-<2D><><EFBFBD>Ź<EFBFBD><C5B9><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
RST_STATUS_LRM2, // <09><><EFBFBD>Ѹ<EFBFBD>λ-<2D>ֶ<EFBFBD><D6B6><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
} SYS_ResetStaTypeDef;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief rtc interrupt event define
|
|
|
|
|
*/
|
|
|
|
|
typedef enum
|
|
|
|
|
{
|
|
|
|
|
INFO_ROM_READ = 0, // FlashROM <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ƿ<EFBFBD><C7B7>ɶ<EFBFBD>
|
|
|
|
|
INFO_RESET_EN = 2, // RST#<23>ⲿ<EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD>λ<EFBFBD><CEBB><EFBFBD>빦<EFBFBD><EBB9A6><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
INFO_BOOT_EN, // ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BootLoader <20>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
INFO_DEBUG_EN, // ϵͳ<CFB5><CDB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Խӿ<D4BD><D3BF>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
INFO_LOADER, // <20><>ǰϵͳ<CFB5>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>Bootloader <20><>
|
|
|
|
|
STA_SAFEACC_ACT, // <20><>ǰϵͳ<CFB5>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ڰ<EFBFBD>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RWA<57><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɷ<F2B2BBBF><C9B7><EFBFBD>
|
|
|
|
|
|
|
|
|
|
} SYS_InfoStaTypeDef;
|
|
|
|
|
|
2025-04-12 13:58:43 +08:00
|
|
|
|
/**
|
|
|
|
|
* @brief IWDG_KR_Key
|
|
|
|
|
*/
|
|
|
|
|
typedef enum
|
|
|
|
|
{
|
|
|
|
|
KEY_UNPROTECT = 0x5555, //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
KEY_RELOADING_COUNT = 0xAAAA, //<2F><>װ<EFBFBD>ؼ<EFBFBD><D8BC><EFBFBD>ֵ
|
|
|
|
|
KEY_START_IWDG = 0xCCCC //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD>
|
|
|
|
|
} IWDG_KR_Key;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief IWDG Prescaler factor
|
|
|
|
|
*/
|
|
|
|
|
typedef enum
|
|
|
|
|
{
|
|
|
|
|
IWDG_PR_4 = 0, // 4<><34>Ƶ
|
|
|
|
|
IWDG_PR_8, // 8<><38>Ƶ
|
|
|
|
|
IWDG_PR_16, // 16<31><36>Ƶ
|
|
|
|
|
IWDG_PR_32, // 32<33><32>Ƶ
|
|
|
|
|
IWDG_PR_64, // 64<36><34>Ƶ
|
|
|
|
|
IWDG_PR_128, // 128<32><38>Ƶ
|
|
|
|
|
IWDG_PR_256, // 256<35><36>Ƶ
|
|
|
|
|
IWDG_PR_512 // 512<31><32>Ƶ
|
|
|
|
|
} IWDG_32K_PR;
|
|
|
|
|
|
2024-12-02 16:26:55 +08:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ȡоƬID<EFBFBD>࣬һ<EFBFBD><EFBFBD>Ϊ<EFBFBD>̶<EFBFBD>ֵ
|
|
|
|
|
*/
|
|
|
|
|
#define SYS_GetChipID() R8_CHIP_ID
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ID<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>Ϊ<EFBFBD>̶<EFBFBD>ֵ
|
|
|
|
|
*/
|
|
|
|
|
#define SYS_GetAccessID() R8_SAFE_ACCESS_ID
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
* @param sc - ϵͳʱ<EFBFBD><EFBFBD>Դѡ<EFBFBD><EFBFBD> refer to SYS_CLKTypeDef
|
|
|
|
|
*/
|
|
|
|
|
void SetSysClock(SYS_CLKTypeDef sc);
|
|
|
|
|
|
2025-02-21 14:38:41 +08:00
|
|
|
|
/**
|
|
|
|
|
* @brief ע<EFBFBD><EFBFBD><EFBFBD><EFBFBD>еģʽִ<EFBFBD>к<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD>еģʽ<EFBFBD>µ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
* @param func - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڻ<EFBFBD>еģʽ<EFBFBD><EFBFBD>ִ<EFBFBD>еĺ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
void MachineMode_Call(MachineMode_Call_func func);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief ʹ<EFBFBD><EFBFBD>Ԥȡָ<EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
void SYS_EnablePI(void);
|
|
|
|
|
|
2024-12-02 16:26:55 +08:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰϵͳʱ<EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
* @return Hz
|
|
|
|
|
*/
|
|
|
|
|
uint32_t GetSysClock(void);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰϵͳ<EFBFBD><EFBFBD>Ϣ״̬
|
|
|
|
|
*
|
|
|
|
|
* @param i - refer to SYS_InfoStaTypeDef
|
|
|
|
|
*
|
|
|
|
|
* @return <EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
uint8_t SYS_GetInfoSta(SYS_InfoStaTypeDef i);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ȡϵͳ<EFBFBD>ϴθ<EFBFBD>λ״̬
|
|
|
|
|
*
|
|
|
|
|
* @return refer to SYS_ResetStaTypeDef
|
|
|
|
|
*/
|
|
|
|
|
#define SYS_GetLastResetSta() (R8_RESET_STATUS & RB_RESET_FLAG)
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief ִ<EFBFBD><EFBFBD>ϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|
|
|
|
*/
|
|
|
|
|
void SYS_ResetExecute(void);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD><EFBFBD>Ѹ<EFBFBD>λ<EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
* @param i - refer to SYS_InfoStaTypeDef
|
|
|
|
|
*/
|
|
|
|
|
#define SYS_ResetKeepBuf(d) (R8_GLOB_RESET_KEEP = d)
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD>ر<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>ж<EFBFBD>ֵ
|
|
|
|
|
*
|
|
|
|
|
* @param pirqv - <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ֵ
|
|
|
|
|
*/
|
|
|
|
|
void SYS_DisableAllIrq(uint32_t *pirqv);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD>ָ<EFBFBD>֮ǰ<EFBFBD>رյ<EFBFBD><EFBFBD>ж<EFBFBD>ֵ
|
|
|
|
|
*
|
|
|
|
|
* @param irq_status - <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ֵ
|
|
|
|
|
*/
|
|
|
|
|
void SYS_RecoverIrq(uint32_t irq_status);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰϵͳ(SYSTICK)<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
*
|
|
|
|
|
* @return <EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
*/
|
|
|
|
|
uint32_t SYS_GetSysTickCnt(void);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ؿ<EFBFBD><EFBFBD>Ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
* @param c - <EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
*/
|
|
|
|
|
#define WWDG_SetCounter(c) (R8_WDOG_COUNT = c)
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʹ<EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
* @param s - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>ж<EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
void WWDG_ITCfg(FunctionalState s);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
* @param s - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD>λ
|
|
|
|
|
*/
|
|
|
|
|
void WWDG_ResetCfg(FunctionalState s);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ǰ<EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|
|
|
|
*
|
|
|
|
|
* @return <EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|
|
|
|
*/
|
|
|
|
|
#define WWDG_GetFlowFlag() (R8_RST_WDOG_CTRL & RB_WDOG_INT_FLAG)
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD><EFBFBD>жϱ<EFBFBD>־<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD>ؼ<EFBFBD><EFBFBD><EFBFBD>ֵҲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
void WWDG_ClearFlag(void);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief uS <EFBFBD><EFBFBD>ʱ
|
|
|
|
|
*
|
|
|
|
|
* @param t - ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
void mDelayuS(uint16_t t);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief mS <EFBFBD><EFBFBD>ʱ
|
|
|
|
|
*
|
|
|
|
|
* @param t - ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
void mDelaymS(uint16_t t);
|
|
|
|
|
|
2025-04-12 13:58:43 +08:00
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ȡд<EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
|
|
|
|
*
|
|
|
|
|
* @return 1:<EFBFBD><EFBFBD>ֹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӧ<EFBFBD>ֶ<EFBFBD>; 0:<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
#define IWDG_WR_Protect() (R32_IWDG_CFG >> 30 & 0x01)
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*
|
|
|
|
|
* @return COUNT
|
|
|
|
|
*/
|
|
|
|
|
#define IWDG_Count_Get() ((R32_IWDG_CFG >> 16) & 0xFFF)
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD>üĴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>־<EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>Ч
|
|
|
|
|
*
|
|
|
|
|
* @return 1:<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; 0:<EFBFBD>Ĵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
#define IWDG_PVU_Get() (R32_IWDG_CFG >> 15 & 0x01)
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ź<EFBFBD>/<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/ι<EFBFBD><EFBFBD>/<EFBFBD><EFBFBD>װ<EFBFBD>ؼ<EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
*
|
|
|
|
|
* @param kr - <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
|
|
|
|
|
*/
|
|
|
|
|
void IWDG_KR_Set(IWDG_KR_Key kr);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ԥ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>Ч
|
|
|
|
|
*
|
|
|
|
|
* @param pr - <EFBFBD><EFBFBD>Ƶϵ<EFBFBD><EFBFBD>
|
|
|
|
|
*/
|
|
|
|
|
void IWDG_PR_Set(IWDG_32K_PR pr);
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>д<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD>Ч
|
|
|
|
|
*
|
|
|
|
|
* @param rlr - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>װ<EFBFBD><EFBFBD>ֵ
|
|
|
|
|
*/
|
|
|
|
|
void IWDG_RLR_Set(uint16_t rlr);
|
|
|
|
|
|
2024-12-02 16:26:55 +08:00
|
|
|
|
/**
|
|
|
|
|
* @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
|
|
|
|
|
|
2025-02-21 14:38:41 +08:00
|
|
|
|
#endif // __CH58x_SYS_H__
|