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

📄 lpc_syscontrol.h

📁 IAR下编译LPC214X的模板及示例文件
💻 H
字号:
#ifndef __LPC_SYSCONTROL_H
#define __LPC_SYSCONTROL_H

/*************************************************************************
使用IAR EW4.4平台编译: LPC214X的PLL频率,系统频率及外部中断初始化模块头文件
**************************************************************************/

#include "includes.h"

/* 晶振频率的范围: 10MHz ~ 25MHz */
#define Fosc_MIN            10000000L
#define Fosc_MAX            25000000L

/* 内核频率的范围: 10MHz ~ MCU allowed frequency */
#define Fcclk_MIN           10000000L
#define Fcclk_MAX           60000000L

/* 电流控制振荡器的频率范围: 156MHz ~ 320MHz */
#define Fcco_MIN            156000000L
#define Fcco_MAX            320000000L

#define PLLFEED_DATA1       0xAA
#define PLLFEED_DATA2       0x55

/* PLL PLLCON register bit descriptions */
#define PLLCON_ENABLE_BIT   0
#define PLLCON_CONNECT_BIT  1

/* PLL PLLSTAT register bit descriptions */
#define PLLSTAT_ENABLE_BIT  8
#define PLLSTAT_CONNECT_BIT 9
#define PLLSTAT_LOCK_BIT    10

/* PM Peripheral Type */
#define PC_TIMER0           0x2
#define PC_TIMER1           0x4
#define PC_UART0            0x8
#define PC_UART1            0x10
#define PC_PWM0             0x20
#define PC_I2C              0x80
#define PC_SPI0             0x100
#define PC_RTC              0x200

// 外部中断编号
typedef enum {
    EXTINT0 = 0,  
    EXTINT1,
    EXTINT2
} LPC_SysControl_ExtInt_Chanel_t;

// 内存重映射模式控制位
typedef enum {
    BOOT_LOADER = 0,  
    USER_FLASH,
    USER_RAM
} LPC_SysControl_RemapMode_t;

// Memory Accelerator Module Operating Mode
typedef enum {
    VPBDIV4 = 0,    // Pclk = 1/4 Pcclk
    VPBDIV1,      // Pclk = Pcclk
    VPBDIV2     // Pclk = 1/2 Pcclk
} LPC_SysControl_VPBDiv_t;

// Memory Accelerator Module Operating Mode
typedef enum {
    MAM_PARTIALLY = 1,
    MAM_FULL
} LPC_SysControl_MAMMode_t;

// 电源管理控制位
typedef enum {
    PM_STANDARD = 0,
    PM_IDLE,  
    PM_POWERDOWN
} LPC_SysControl_PMMode_t;

// 外部中断触发类型
typedef enum {
    LEVEL_LOW = 0,  
    LEVEL_HIGH,
    EDGE_RISING,
    EDGE_FALLING
} LPC_SysControl_EXTINTTriggerType_t;

// MAM fetch cycles
// SysClock<20MHz: MAMTIM can be 001
// 20MHz<SysClock<40MHz: suggest 2 cycle
// 40MHz<SysClock: suggest 3 cycle
typedef enum {
    MAMCycle1 = 1,  
    MAMCycle2,
    MAMCycle3,
    MAMCycle4,
    MAMCycle5,
    MAMCycle6,
    MAMCycle7
} LPC_SysControl_MAMCycle_t;

typedef struct {
  LPC_SysControl_MAMMode_t Mode;
  LPC_SysControl_MAMCycle_t Cycle;
} LPC_SysControl_MAMConfig_t;

typedef struct {
  Int32U Fosc;   // Crystal Oscillator Frequency
  Int32U Fcclk;    // PLL output frequency (also processor clock frequency)
  Int32U Fpclk;    // Peripheral frequency

  LPC_SysControl_RemapMode_t RemapMode;
  LPC_SysControl_VPBDiv_t VPBDivider;

  bool MAMEnable;
  LPC_SysControl_MAMConfig_t MAMConfig;
} LPC_Syscontrol_Config_t;

// Declare API functions
Int32S SYS_Init (Int32U Fosc, Int32U Fcclk,
                LPC_SysControl_VPBDiv_t VPBDivider,
                LPC_SysControl_RemapMode_t RemapMode,
                Int32U PortDir0, Int32U Port0,
                Int32U PortDir1, Int32U Port1);
Int32U SYS_GetFpclk (void);

Int32S PM_SetMode (LPC_SysControl_PMMode_t Mode);
Int32S PM_OpenPeripheral (Int32U DevType);
Int32S PM_ClosePeripheral (Int32U DevType);
Int32S EXTINT_Init (LPC_SysControl_ExtInt_Chanel_t ExtIntNum,
                          bool WakeupEnable);

#endif //__LPC_SYSCONTROL_H

⌨️ 快捷键说明

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