⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rccu.h

📁 STR71X ARM 启动代码, 与网上的大多数移植代码有些不一样
💻 H
📖 第 1 页 / 共 2 页
字号:
/****************************************Copyright (c)**************************************************
**                                      
**                                          
**                               杭州央海软件科技有限公司
**
**                                 http://www.osmcu.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日
;**-------------------------------------------------------------------------------------------------------
;** 修 改 人: 
;** 日   期: 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -