📄 rccu.h
字号:
/****************************************Copyright (c)**************************************************
**
**
** 杭州央海软件科技有限公司
**
** http://www.armgcc.com
**
**--------------文件信息--------------------------------------------------------------------------------
** 文 件 名: rccu.h
** 创 建 人: 罗辉联
** 创建日期: 2006年5月10日
** 描 述: 该文件包含了所有GPIO功能函数原型与所需要的常量
**
**--------------历史版本--------------------------------------------------------------------------------
** 创 建 人: 罗辉联
** 版 本: V1.0
** 日 期: 2006年5月10日
** 描 述: 原始版本
**
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
#ifndef __RCCU_H
#define __RCCU_H
#include "cpu_cfg.h"
#ifdef __cplusplus
extern "C" {
#endif
#if EN_ARM_RCCU > 0 //决定是否编译该文件
/************************************** 宏定义,常量定义 ******************************************/
// Main Oscillator Frequency value = 16 Mhz
#define RCCU_MAIN_OSC 16000000
// RTC Oscillator Frequency value = 32 768 Hz
#define RCCU_RTC_OSC 32768
#define RCCU_DIV2_MASK 0x00008000
#define RCCU_DIV2_INDEX 0x0F
#define RCCU_FACT_MASK 0x0003
#define RCCU_FACT1_MASK 0x0003
#define RCCU_FACT2_MASK 0x0300
#define RCCU_FACT2_INDEX 0x08
#define RCCU_MX_MASK 0x00000030
#define RCCU_MX_INDEX 0x04
#define RCCU_DX_MASK 0x00000007
#define RCCU_FREEN_MASK 0x00000080
#define RCCU_CSU_CKSEL_MASK 0x00000001
#define RCCU_CK2_16_MASK 0x00000008
#define RCCU_CKAF_SEL_MASK 0x00000004
#define RCCU_LOCK_MASK 0x00000002
#define RCCU_USBEN_MASK 0x0100
#define RCCU_USBEN_INDEX 0x08
#define RCCU_RESETSOURCES_MASK 0x000006E0
/************************************** 枚举类型定义 *******************************************/
typedef enum {
RCCU_DEFAULT=0x00,
RCCU_RCLK_2 =0x01,
RCCU_RCLK_4 =0x02,
RCCU_RCLK_8 =0x03
} RCCU_CLOCK_DIV_T;
typedef enum {
RCCU_PLL1_OUTPUT,
RCCU_CLOCK2_16,
RCCU_CLOCK2,
RCCU_RTC_CLOCK
} RCCU_RCLK_CLOCKS_T;
typedef enum {
RCCU_MUL_12=0x01,
RCCU_MUL_16=0x03,
RCCU_MUL_20=0x00,
RCCU_MUL_28=0x02
} RCCU_PLL_MUL_T;
typedef enum {
RCCU_DIV_1=0x00,
RCCU_DIV_2=0x01,
RCCU_DIV_3=0x02,
RCCU_DIV_4=0x03,
RCCU_DIV_5=0x04,
RCCU_DIV_6=0x05,
RCCU_DIV_7=0x06
} RCCU_PLL_DIV_T;
typedef enum {
RCCU_PLL2_OUTPUT = 0x01,
RCCU_USBCK = 0x00
} RCCU_USB_CLOCKS_T;
typedef enum {
RCCU_CLK2,
RCCU_RCLK,
RCCU_MCLK,
RCCU_PCLK,
RCCU_FCLK
} RCCU_ClOCKS_T;
typedef enum {
RCCU_PLL1_LOCK_IT = 0x0080,
RCCU_CKAF_IT = 0x0100,
RCCU_CK2_16_IT = 0x0200,
RCCU_STOP_IT = 0x0400
} RCCU_INTERRUPTS_T;
typedef enum {
RCCU_PLL1_LOCK = 0x0002,
RCCU_CKAF_ST = 0x0004,
RCCU_PLL1_LOCK_I = 0x0800,
RCCU_CKAF_I = 0x1000,
RCCU_CK2_16_I = 0x2000,
RCCU_STOP_I = 0x4000
} RCCU_FLAGS_T;
typedef enum {
RCCU_EXTERNAL_RESET = 0x00000000,
RCCU_SOFTWARE_RESET = 0x00000020,
RCCU_WDG_RESET = 0x00000040,
RCCU_RTCALARM_RESET = 0x00000080,
RCCU_LVD_RESET = 0x00000200,
RCCU_WKP_RESET = 0x00000400
}RCCU_RESETSOURCES_T;
/************************************** 结构体类型定义 ******************************************/
/********************************** 全局外部函数原型声明 *****************************************/
/*********************************************************************************************************
;** 函数名称: RCCU_CKDIV2Config
;** 功能描述: Enables/Disables CK管脚输入的时钟2分频
;**
;** 参 数: new_status:可配置为ENABLE 或 DISABLE
;**
;** 返 回 值: 无
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline void RCCU_CKDIV2Config(CONFIG_STATUS_T new_status)
{
if (new_status == ENABLE)
RCCU_CFR |= RCCU_DIV2_MASK;
else
RCCU_CFR &= ~RCCU_DIV2_MASK;
}
/*********************************************************************************************************
;** 函数名称: RCCU_CKDIV2StatusObtain
;** 功能描述: Gets the Div2 Flag status
;**
;** 参 数: 无
;**
;** 返 回 值: Div2 Flag status:RESET 或 SET
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
inline FLAG_STATUS_T RCCU_CKDIV2StatusObtain(void)
{
return (RCCU_CFR & RCCU_DIV2_MASK) == 0 ? RESET : SET;
}
/*********************************************************************************************************
;** 函数名称: RCCU_PLL1Config
;** 功能描述: 配置 PLL1的 div 和 mul 系数
;**
;** 参 数: new_mul:(RCCU_MUL_12, RCCU_MUL_16, RCCU_MUL_20, RCCU_MUL_28)
;** new_div:(RCCU_DIV_1, RCCU_DIV_2, RCCU_DIV_3, RCCU_DIV_4, RCCU_DIV_5, RCCU_DIV_6, RCCU_DIV_7)
;**
;** 返 回 值: 无
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void RCCU_PLL1Config(RCCU_PLL_MUL_T new_mul, RCCU_PLL_DIV_T new_div);
/*********************************************************************************************************
;** 函数名称: RCCU_RCLKConfig
;** 功能描述: 选择RCLK的时钟源
;**
;** 参 数: new_clock:(RCCU_PLL1_OUTPU, RCCU_CLOCK2_16, RCCU_CLOCK2, RCCU_RTC_CLOCK)
;**
;** 返 回 值: 无
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
void RCCU_RCLKConfig(RCCU_RCLK_CLOCKS_T new_clock);
/*********************************************************************************************************
;** 函数名称: RCCU_RCLKObtain
;** 功能描述: 获取系统PCLK选择的时钟源
;**
;** 参 数: 无
;**
;** 返 回 值: RCCU_RTC_CLOCK RCCU_CLOCK2_16 RCCU_PLL1_OUTPUT RCCU_CLOCK2
;**
;** 作 者: 罗辉联
;** 日 期: 2006年5月10日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人:
;** 日 期:
;**------------------------------------------------------------------------------------------------------
;********************************************************************************************************/
RCCU_RCLK_CLOCKS_T RCCU_RCLKObtain(void);
/*********************************************************************************************************
;** 函数名称: RCCU_MCLKConfig
;** 功能描述: Selects the division factor for RCLK to obtain the MCLK clock for the CPU
;**
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -