feat:新建项目文件
BLV主机C1P模块
This commit is contained in:
133
Peripheral/inc/ch564_rcc.h
Normal file
133
Peripheral/inc/ch564_rcc.h
Normal file
@@ -0,0 +1,133 @@
|
||||
/********************************** (C) COPYRIGHT *******************************
|
||||
* File Name : ch564_rcc.h
|
||||
* Author : WCH
|
||||
* Version : V1.0.0
|
||||
* Date : 2024/05/05
|
||||
* Description : This file contains all the functions prototypes for the
|
||||
* RCC firmware library.
|
||||
*********************************************************************************
|
||||
* 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 __CH564_RCC_H
|
||||
#define __CH564_RCC_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
#include "ch564.h"
|
||||
|
||||
#define RCC_UNLOCK_SAFE_ACCESS() \
|
||||
({ \
|
||||
R8_SAFE_ACCESS_SIG = 0x57; \
|
||||
R8_SAFE_ACCESS_SIG = 0xA8; \
|
||||
__NOP(); \
|
||||
})
|
||||
|
||||
#define RCC_LOCK_SAFE_ACCESS() ({ R8_SAFE_ACCESS_SIG = 0x0; })
|
||||
#define RCC_GET_ID_SAFELY() (R8_SAFE_ACCESS_ID)
|
||||
#define RCC_CLEAR_WDOG() ({ R8_WDOG_CLEAR = 0; })
|
||||
|
||||
#define HSI_ON() (R32_EXTEN_CTLR1 |= RB_HSION)
|
||||
#define HSE_ON() (R32_EXTEN_CTLR1 |= RB_HSEON)
|
||||
#define HSE_GET_STTATEUS() ((R32_EXTEN_CTLR1 & 0x8000) != 0 ? 1 : 0)
|
||||
#define HSI_OFF() (R32_EXTEN_CTLR1 &= ~RB_HSION)
|
||||
#define HSE_OFF() (R32_EXTEN_CTLR1 &= ~RB_HSEON)
|
||||
#define USB_PLL_ON() \
|
||||
{ \
|
||||
RCC_UNLOCK_SAFE_ACCESS(); \
|
||||
R32_EXTEN_CTLR0 |= (RB_USBPLLON); \
|
||||
RCC_LOCK_SAFE_ACCESS(); \
|
||||
}
|
||||
#define USB_PLL_OFF() \
|
||||
{ \
|
||||
RCC_UNLOCK_SAFE_ACCESS(); \
|
||||
R32_EXTEN_CTLR0 &= ~(RB_USBPLLON); \
|
||||
RCC_LOCK_SAFE_ACCESS(); \
|
||||
}
|
||||
#define USB_PLL_MUL_15 0x0000c000
|
||||
#define USB_PLL_MUL_16 0x00008000
|
||||
#define USB_PLL_MUL_20 0x00004000
|
||||
#define USB_PLL_MUL_24 0x00000000
|
||||
#define USB_PLL_MUL_SELECT(USB_PLL_MUL) \
|
||||
{ \
|
||||
RCC_UNLOCK_SAFE_ACCESS(); \
|
||||
R32_EXTEN_CTLR0 &= ~USB_PLL_MUL_15; \
|
||||
R32_EXTEN_CTLR0 |= (USB_PLL_MUL); \
|
||||
RCC_LOCK_SAFE_ACCESS(); \
|
||||
}
|
||||
#define USB_PLL_SOURCE_HSI 0x00000060
|
||||
#define USB_PLL_SOURCE_HSE 0x00000020
|
||||
#define USB_PLL_SOURCE_ETH_PLL_OUT 0x00000040
|
||||
#define USB_PLL_SOURCE_SELECT(USB_PLL_SOURCE) \
|
||||
{ \
|
||||
RCC_UNLOCK_SAFE_ACCESS(); \
|
||||
R32_EXTEN_CTLR0 &= ~USB_PLL_SOURCE_HSI; \
|
||||
R32_EXTEN_CTLR0 |= (USB_PLL_SOURCE); \
|
||||
RCC_LOCK_SAFE_ACCESS(); \
|
||||
}
|
||||
|
||||
#define CLKSEL_HSI() \
|
||||
{ \
|
||||
R32_EXTEN_CTLR1 &= ~(RB_CLKSEL); \
|
||||
}
|
||||
#define CLKSEL_HSE() \
|
||||
{ \
|
||||
R32_EXTEN_CTLR1 |= (RB_CLKSEL); \
|
||||
}
|
||||
#define USB_PLL_ON() \
|
||||
{ \
|
||||
RCC_UNLOCK_SAFE_ACCESS(); \
|
||||
R32_EXTEN_CTLR0 |= (RB_USBPLLON); \
|
||||
RCC_LOCK_SAFE_ACCESS(); \
|
||||
}
|
||||
#define USB_PLL_OFF() \
|
||||
{ \
|
||||
RCC_UNLOCK_SAFE_ACCESS(); \
|
||||
R32_EXTEN_CTLR0 &= ~(RB_USBPLLON); \
|
||||
RCC_LOCK_SAFE_ACCESS(); \
|
||||
}
|
||||
#define SYSCLK_SOURCE_USBPLL 0
|
||||
#define SYSCLK_SOURCE_HSI_HSE 1
|
||||
#define SYSCLK_SOURCE_SELECT(SYSCLK_SOURCE) \
|
||||
{ \
|
||||
RCC_UNLOCK_SAFE_ACCESS(); \
|
||||
((SYSCLK_SOURCE) == SYSCLK_SOURCE_HSI_HSE) ? (R32_EXTEN_CTLR0 |= (RB_SW)) : (R32_EXTEN_CTLR0 &= ~(RB_SW)); \
|
||||
RCC_LOCK_SAFE_ACCESS(); \
|
||||
}
|
||||
|
||||
#define RCC_GET_GLOB_RST_KEEP() (R8_GLOB_RESET_KEEP)
|
||||
#define RCC_SET_GLOB_RST_KEEP(val) (R8_GLOB_RESET_KEEP = (val);)
|
||||
#define RCC_SET_PLL_SYS_OUT_DIV(val) \
|
||||
({ \
|
||||
RCC_UNLOCK_SAFE_ACCESS(); \
|
||||
R8_PLL_OUT_DIV = 0x04 | ((val) << 4); \
|
||||
RCC_LOCK_SAFE_ACCESS(); \
|
||||
})
|
||||
#define RCC_FLASH_CLK_PRE_DIV(sta) \
|
||||
({ \
|
||||
RCC_UNLOCK_SAFE_ACCESS(); \
|
||||
((sta) == ENABLE) ? (R32_EXTEN_CTLR0 |= 0x00200000) : (R32_EXTEN_CTLR0 &= ~0x00200000) RCC_LOCK_SAFE_ACCESS(); \
|
||||
})
|
||||
|
||||
typedef enum
|
||||
{
|
||||
Code16k_Data128k = 0x0,
|
||||
Code48k_Data96k = 0x1,
|
||||
Code80k_Data64k = 0x2
|
||||
} GlobMem_Cfg;
|
||||
|
||||
void RCC_SetGlobalMemCFG(GlobMem_Cfg Cfg);
|
||||
void RCC_LockPort(uint8_t globport, FunctionalState NewSTA);
|
||||
void RCC_GlobleRstCFG(uint8_t cfg, FunctionalState NewSTA);
|
||||
void RCC_SlpClkOff(volatile uint8_t *reg, uint8_t slpclk, FunctionalState NewSTA);
|
||||
void RCC_SlpWakeCtrl(uint8_t slpwake, FunctionalState NewSTA);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user