📄 lpc_syscontrol.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 + -