hal_map.h
来自「最新版IAR FOR ARM(EWARM)5.11中的代码例子」· C头文件 代码 · 共 401 行 · 第 1/2 页
H
401 行
//-----------------------------------------------------------------------------
// HAL_MAP FOR SpearNet
//-----------------------------------------------------------------------------
// DATE: 19/06/05
// REVISION: 1.5
//
// History:
// rev 1.5 - DMC_TypeDef structure updated, VJ
//-----------------------------------------------------------------------------
#ifndef HAL_MAP_H
#define HAL_MAP_H
//-----------------------------------------------------------------------------
#include "hal_type.h"
//-----------------------------------------------------------------------------
// Clock
//-----------------------------------------------------------------------------
#define FREG_OSC (u32)(25000000)
#define FD (u32)48 /* Feedback Divider */
#define PRE (u32)25 /* Pre Divider */
#define POST (u32)1 /* Post Divider */
//SYSCLK = ((u32)2 * FD * FREG_OSC) / PRE / ((u32)2<<POST)
#define SYSCLK (u32)(48000000)
//-----------------------------------------------------------------------------
// SpearNet BASE ADDRESSES
//-----------------------------------------------------------------------------
#define APB_BASE 0x30000000 /* APB bridge Base Address */
#define IC_BASE (APB_BASE + 0x0000) /* Interrupt Controller */
#define GPT_BASE (APB_BASE + 0x0400) /* General Purpose Timers */
#define WD_BASE (APB_BASE + 0x0800) /* Watch Dog Timers */
#define RTC_BASE (APB_BASE + 0x0C00) /* Real Time Clock */
#define GPIO_BASE (APB_BASE + 0x1000) /* General Purpose I/Os */
#define I2C_BASE (APB_BASE + 0x1400) /* I2C */
#define UART_BASE (APB_BASE + 0x1800) /* UART */
#define CR_BASE (APB_BASE + 0x1C00) /* Configuration Registers */
#define DMA_CGP_BASE (APB_BASE + 0x2000) /* DMA Controller General Purpose */
#define SMC_BASE (APB_BASE + 0x2400) /* Static Memory Controller */
#define DMC_BASE (APB_BASE + 0x2800) /* Dynamic Memory Controller */
#define USB_HC_BASE (APB_BASE + 0x2C00) /* USB Host Controller */
#define DMA_MAC_BASE (APB_BASE + 0x3000) /* DMA MAC */
#define MAC_EC_BASE (APB_BASE + 0x3400) /* MAC Ethernet Controller */
//-----------------------------------------------------------------------------
// Interrupt Controller (32bit registers)
//-----------------------------------------------------------------------------
typedef volatile struct
{
vu32 CONTROL; //(0000) RW
vu32 IRQ_STATUS; //(0004) RO
vu32 FIQ_STATUS; //(0008) RO
vu32 PENDING; //(000C) RO
vu32 CONFIG_1; //(0010) RW
vu32 CONFIG_2; //(0014) RW
vu32 EMPTY1; //(0018) RO
vu32 EMPTY2; //(001C) RO
vu32 ENABLE; //(0020) RW
vu32 EMPTY3; //(0024) RO
vu32 EMPTY4; //(0028) RO
vu32 EMPTY5; //(002C) RO
vu32 SOFT_INTERRUPT; //(0030) RW
} IC_TypeDef;
//-----------------------------------------------------------------------------
// General Purpose Timers (16bit registers, 32bit aligned)
//-----------------------------------------------------------------------------
typedef volatile struct
{
vu32 CONTROL; //(0000) RW
vu32 STATUS_INT_ACK; //(0004) RO for STATUS, RW for INT_ACK
vu32 COMPARE; //(0008) RW
vu32 COUNT; //(000C) RO
vu32 COUNT_REDGE; //(0010) RO
vu32 COUNT_fEDGE; //(0014) RO
} GPT_TypeDef;
//-----------------------------------------------------------------------------
// Watch Dog Timers (16bit registers, 32bit aligned)
//-----------------------------------------------------------------------------
typedef volatile struct
{
vu32 CONTROL; //(0000) RW
vu32 STATUS; //(0004) RO
vu32 MAX_CNT; //(0008) RW
vu32 COUNTER; //(000C) RO
} WD_TypeDef;
//-----------------------------------------------------------------------------
// Real Time Clock
//-----------------------------------------------------------------------------
typedef volatile struct
{
vu32 TIME; //(0000) RW
vu32 DATE; //(0004) RW
vu32 ALARM_TIME; //(0008) RW
vu32 ALARM_DATE; //(000C) RW
vu32 CONTROL; //(0010) RW
vu32 STATUS; //(0014) RO
} RTC_TypeDef;
//-----------------------------------------------------------------------------
// GPIO (8bit registers)
//-----------------------------------------------------------------------------
typedef volatile struct
{
vu8 DIR; //(0000) RW
vu8 EMPTY1[3]; //(0001..0003)
vu8 DIN; //(0004) RO
vu8 EMPTY2[11]; //(0005..000F)
vu8 DOUT0; //(0010) WO
vu8 EMPTY3[3]; //(0011..0013)
vu8 DOUT1; //(0014) WO
vu8 EMPTY4[3]; //(0015..0017)
vu8 DOUT2; //(0018) WO
vu8 EMPTY5[3]; //(0019..001B)
vu8 DOUT3; //(001C) WO
vu8 EMPTY6[3]; //(001D..001F)
vu8 DOUT4; //(0020) WO
vu8 EMPTY7[3]; //(0021..0023)
vu8 DOUT5; //(0024)WO
} GPIO_TypeDef;
//-----------------------------------------------------------------------------
// I2C (8bit registers, 32bit aligned)
//-----------------------------------------------------------------------------
typedef volatile struct
{
vu32 CR; //(0000) RW
vu32 SR1; //(0004) RW
vu32 SR2; //(0008) RW
vu32 CCR; //(000C) RW
vu32 OAR; //(0010) RW
vu32 EMPTY1; //(0014) RO
vu32 DR; //(0018) RW
} I2C_TypeDef;
//-----------------------------------------------------------------------------
// UART (16bit registers)
//-----------------------------------------------------------------------------
typedef volatile struct
{
vu16 BRR; //(0000) RW Baud Rate Register
vu16 EMPTY1; //(0002)
vu16 TBR; //(0004) WO Transmit Buffer Register
vu16 EMPTY2; //(0006)
vu16 RBR; //(0008) RO Receive Buffer Register
vu16 EMPTY3; //(000A)
vu16 CR; //(000C) RW Control Register
vu16 EMPTY4; //(000E)
vu16 IER; //(0010) RW Interrrut Enable Register
vu16 EMPTY5; //(0012)
vu16 SR; //(0014) RO Status Register
vu16 EMPTY6; //(0016)
vu16 GTR; //(0018) RW Guard Time Register
vu16 EMPTY7; //(001A)
vu16 TOR; //(001C) RW Time Out Register
vu16 EMPTY8; //(001E)
vu16 TRR; //(0020) WO Transmit Reset Register
vu16 EMPTY9; //(0022)
vu16 RRR; //(0024) WO Receive Reset Register
} UART_TypeDef;
//-----------------------------------------------------------------------------
// Configuration Registers (8bit registers, 32bit aligned)
//-----------------------------------------------------------------------------
typedef volatile struct
{
vu32 FW_CFG; //(0000)
vu32 HW_CFG; //(0004)
vu32 GLOBAL_CONTROL; //(0008)
vu32 GLOBAL_STATUS; //(000C)
vu32 SHRAM_TEST_CTRL; //(0010)
vu32 SHRAM_TEST_STATUS; //(0014)
} CR_TypeDef;
//-----------------------------------------------------------------------------
// DMA Controller General Purpose (16bit registers, 32bit aligned)
//-----------------------------------------------------------------------------
// DMA channels CH0, CH1, CH2 and CH3
typedef volatile struct
{
vu32 DMASourceLow; //(0000) RW
vu32 DMASourceHigh; //(0004) RW
vu32 DMADestLo; //(0008) RW
vu32 DMADestHigh; //(000C) RW
vu32 DMAMax; //(0010) RW
vu32 DMACtrl; //(0014) RW
vu32 DMASoCurrLo; //(0018) RO
vu32 DMASoCurrHigh; //(001C) RO
vu32 DMADeCurrLo; //(0020) RO
vu32 DMADeCurrHigh; //(0024) RO
vu32 DMATCnt; //(0028) RO
} DMA_TypeDef;
// DMA Mask & Clear & Status
typedef volatile struct
{
vu32 DMAMask; //(0000) RW
vu32 DMAClr; //(0004) RW
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?