HC32F46x 寄存器定义(裸机)
自己定义的底层寄存器地址/*************************************************************************************************************
* 文件名 :hc32f46x_map.h
* 功能 :HC32F46X寄存器映射
* 作者 :cp1300@139.com
* 创建时间 :2021-06-10
* 最后修改时间:2021-06-10
* 详细:
*************************************************************************************************************/
#ifndef _HC32F46X_MAP_
#define _HC32F46X_MAP_
#include "typedef.h"
#include "hc32f46x.h"
//GPIO========================================================================================================
#define GPIO_BASE (0x40053800UL) //寄存器基址
#define GPIOA_BASE (GPIO_BASE + 0x0000)
#define GPIOB_BASE (GPIO_BASE + 0x0010)
#define GPIOC_BASE (GPIO_BASE + 0x0020)
#define GPIOD_BASE (GPIO_BASE + 0x0030)
#define GPIOE_BASE (GPIO_BASE + 0x0040)
#define GPIOH_BASE (GPIO_BASE + 0x0050)
//特殊寄存器
#define GPIO_SPCR *((vu16*)(GPIO_BASE+0x3F4))
//公共控制寄存器
#define GPIO_CCR *((vu16*)(GPIO_BASE+0x3F8))
//输入控制寄存器
#define GPIO_INAER *((vu16*)(GPIO_BASE+0x3FA))
//写保护
#define GPIO_WPR *((vu16*)(GPIO_BASE+0x3FC))
//通用控制寄存器
#define GPIO_CR_PA(n) *((vu16*)(GPIO_BASE+0x400+0x40*0+0x4*(n)))
#define GPIO_CR_PB(n) *((vu16*)(GPIO_BASE+0x400+0x40*1+0x4*(n)))
#define GPIO_CR_PC(n) *((vu16*)(GPIO_BASE+0x400+0x40*2+0x4*(n)))
#define GPIO_CR_PD(n) *((vu16*)(GPIO_BASE+0x400+0x40*3+0x4*(n)))
#define GPIO_CR_PE(n) *((vu16*)(GPIO_BASE+0x400+0x40*4+0x4*(n)))
#define GPIO_CR_PH(n) *((vu16*)(GPIO_BASE+0x400+0x40*5+0x4*(n)))
#define GPIO_CR_Px(group, n) *((vu16*)(GPIO_BASE+0x400+0x40*(group)+0x4*(n)))
//功能选择寄存器
#define GPIO_FSR_PA(n) *((vu16*)(GPIO_BASE+0x402+0x40*0+0x4*(n)))
#define GPIO_FSR_PB(n) *((vu16*)(GPIO_BASE+0x402+0x40*1+0x4*(n)))
#define GPIO_FSR_PC(n) *((vu16*)(GPIO_BASE+0x402+0x40*2+0x4*(n)))
#define GPIO_FSR_PD(n) *((vu16*)(GPIO_BASE+0x402+0x40*3+0x4*(n)))
#define GPIO_FSR_PE(n) *((vu16*)(GPIO_BASE+0x402+0x40*4+0x4*(n)))
#define GPIO_FSR_PH(n) *((vu16*)(GPIO_BASE+0x402+0x40*5+0x4*(n)))
#define GPIO_FSR_Px(group, n) *((vu16*)(GPIO_BASE+0x402+0x40*(group)+0x4*(n)))
//IO基本功能
typedef struct
{
vu16 IDR; //数据输入
u16Reserved1;
vu16 ODR; //数据输出
vu16 OER; //输出使能
vu16 OSR; //输出置位,写1有效
vu16 ORR; //输出复位,写1有效
vu16 OTR; //输出翻转,写1有效
}GPIO_TypeDef;
#define GPIOA ((GPIO_TypeDef *) GPIOA_BASE)
#define GPIOB ((GPIO_TypeDef *) GPIOB_BASE)
#define GPIOC ((GPIO_TypeDef *) GPIOC_BASE)
#define GPIOD ((GPIO_TypeDef *) GPIOD_BASE)
#define GPIOE ((GPIO_TypeDef *) GPIOE_BASE)
#define GPIOH ((GPIO_TypeDef *) GPIOH_BASE)
#define SYS_GPIO_CONFIG_Unlock() {GPIO_WPR = 0xA501;} //IO配置解锁
#define SYS_GPIO_CONFIG_Lock() {GPIO_WPR = 0xA500;} //IO配置上锁
//FCM========================================================================================================
#define FCM_BASE (0x40048400UL) //寄存器基址
typedef struct
{
vu32 LVR; //FCM下限比较值寄存器
vu32 UVR; //FCM上限比较值寄存器
vu32 CNTR; //FCM计数器值寄存器
vu32 STR; //FCM开始停止寄存器
vu32 MCCR; //FCM测量对象控制寄存器
vu32 RCCR; //FCM测量基准控制寄存器
vu32 RIER; //FCM中断复位控制寄存器
vu32 SR; //FCM标志寄存器
vu32 CLR; //FCM标志位清除寄存器
}FCM_TypeDef;
#define FCM ((FCM_TypeDef *) FCM_BASE)
//CMU时钟控制器========================================================================================================
#define CMU_BASE (0x40054000UL) //寄存器基址
#define CMU_XTALCFGR *((vu8*)(CMU_BASE+0x410)) //CMU_XTAL配置寄存器
#define CMU_XTALSTBCR *((vu8*)(CMU_BASE+0x0A2)) //CMU_XTAL安定配置寄存器
#define CMU_XTALCR *((vu8*)(CMU_BASE+0x032)) //CMU_XTAL控制寄存器
#define CMU_XTALSTDCR *((vu8*)(CMU_BASE+0x040)) //CMU_XTAL振荡故障控制寄存器
#define CMU_XTALSTDSR *((vu8*)(CMU_BASE+0x041)) //CMU_XTAL振荡故障状态寄存器
#define CMU_HRCTRM *((vu8*)(CMU_BASE+0x062)) //CMU_HRC校准寄存器
#define CMU_HRCCR *((vu8*)(CMU_BASE+0x036)) //CMU_HRC控制寄存器
#define CMU_MRCTRM *((vu8*)(CMU_BASE+0x061)) //CMU_MRC校准寄存器
#define CMU_MRCCR *((vu8*)(CMU_BASE+0x038)) //CMU_MRC控制寄存器
#define CMU_PLLCFGR *((vu32*)(CMU_BASE+0x100)) //CMU_MPLL配置寄存器
#define CMU_PLLCR *((vu8*)(CMU_BASE+0x02A)) //CMU_MPLL控制寄存器
#define CMU_UPLLCFGR *((vu32*)(CMU_BASE+0x104)) //CMU_UPLL配置寄存器
#define CMU_UPLLCR *((vu8*)(CMU_BASE+0x02E)) //CMU_UPLL控制寄存器
#define CMU_OSCSTBSR *((vu8*)(CMU_BASE+0x03C)) //CMU_时钟源安定状态寄存器
#define CMU_CKSWR *((vu8*)(CMU_BASE+0x026)) //CMU_系统时钟源切换寄存器
#define CMU_SCFGR *((vu32*)(CMU_BASE+0x020)) //CMU_时钟分频配置寄存器
#define CMU_UFSCKCFGR *((vu8*)(CMU_BASE+0x024)) //CMU_USBFS时钟配置寄存器
#define CMU_PERICKSEL *((vu16*)(CMU_BASE+0x010)) //CMU_AD/TRNG时钟配置寄存器
#define CMU_TPIUCKCFGR *((vu8*)(CMU_BASE+0x03F)) //CMU_调试时钟配置寄存器
#define CMU_MCO1CFGR *((vu8*)(CMU_BASE+0x03D)) //CMU_MCO1时钟输出配置寄存器
#define CMU_MCO2CFGR *((vu8*)(CMU_BASE+0x03E)) //CMU_MCO2时钟输出配置寄存器
#define CMU_XTAL32CR *((vu8*)(CMU_BASE+0x420)) //CMU_XTAL32控制寄存器
#define CMU_XTALC32CFGR *((vu8*)(CMU_BASE+0x421)) //CMU_XTAL32配置寄存器
#define CMU_XTAL32NFR *((vu8*)(CMU_BASE+0x425)) //CMU_XTAL32滤波寄存器
#define CMU_LRCCR *((vu8*)(CMU_BASE+0x427)) //CMU_LRC控制寄存器
#define CMU_LRCTRM *((vu8*)(CMU_BASE+0x429)) //CMU_LRC校准寄存器
//PWC电源控制========================================================================================================
#define PWR_BASE1 (0x40054400UL) //寄存器基址
#define PWR_PWRC0 *((vu8*)(PWR_BASE1+0x00)) //电源模式控制寄存器 0
#define PWR_PWRC1 *((vu8*)(PWR_BASE1+0x01)) //电源模式控制寄存器 1
#define PWR_PWRC2 *((vu8*)(PWR_BASE1+0x02)) //电源模式控制寄存器 2
#define PWR_PWRC3 *((vu8*)(PWR_BASE1+0x03)) //电源模式控制寄存器 3
#define PWR_PDWKE0 *((vu8*)(PWR_BASE1+0x04)) //掉电唤醒使能寄存器 0
#define PWR_PDWKE1 *((vu8*)(PWR_BASE1+0x05)) //掉电唤醒使能寄存器 1
#define PWR_PDWKE2 *((vu8*)(PWR_BASE1+0x06)) //掉电唤醒使能寄存器 2
#define PWR_PDWKES *((vu8*)(PWR_BASE1+0x07)) //掉电唤醒事件边沿选择寄存器
#define PWR_PDWKF0 *((vu8*)(PWR_BASE1+0x08)) //掉电唤醒标志寄存器 0
#define PWR_PDWKF1 *((vu8*)(PWR_BASE1+0x09)) //掉电唤醒标志寄存器 1
#define PWR_PWCMR *((vu8*)(PWR_BASE1+0x0A)) //电源监测寄存器
#define PWR_MDSWCR *((vu8*)(PWR_BASE1+0x0F)) //模式切换控制寄存器
#define PWR_PVDCR0 *((vu8*)(PWR_BASE1+0x12)) //PVD控制寄存器 0
#define PWR_PVDCR1 *((vu8*)(PWR_BASE1+0x13)) //PVD控制寄存器 0
#define PWR_PVDFCR *((vu8*)(PWR_BASE1+0x14)) //PVD滤波控制寄存器
#define PWR_PVDLCR *((vu8*)(PWR_BASE1+0x15)) //PVD电平控制寄存器
#define PWR_XTAL32CS *((vu8*)(PWR_BASE1+0x2B)) //XTAL32电流 控制寄存器
#define PWR_BASE2 (0x40054000UL) //寄存器基址
#define PWR_STPMCR *((vu16*)(PWR_BASE2+0x0C)) //STOP模式唤醒控制寄存器
#define PWR_RAMPC0 *((vu32*)(PWR_BASE2+0x14)) //RAM功耗控制寄存器 0
#define PWR_RAMOPM *((vu16*)(PWR_BASE2+0x18)) //RAM运行条件寄存器
#define PWR_PVDICR *((vu8*)(PWR_BASE2+0xE0)) //PVD中断控制寄存器
#define PWR_PVDDSR *((vu8*)(PWR_BASE2+0xE1)) //PVD检测状态寄存器
#define PWR_FPRC *((vu16*)(PWR_BASE2+0x3FE)) //功能保护控制寄存器
#define PWR_BASE3 (0x4004C400UL) //寄存器基址
#define PWR_WKTCR *((vu16*)(PWR_BASE3+0x00)) //唤醒计时 器控制寄存器
#define PWR_BASE4 (0x40048000UL) //寄存器基址
#define PWR_FCG0 *((vu32*)(PWR_BASE4+0x00)) //功能时钟控制 0
#define PWR_FCG1 *((vu32*)(PWR_BASE4+0x04)) //功能时钟控制 1
#define PWR_FCG2 *((vu32*)(PWR_BASE4+0x08)) //功能时钟控制 2
#define PWR_FCG3 *((vu32*)(PWR_BASE4+0x0C)) //功能时钟控制 3
#define PWR_FCG0PC *((vu32*)(PWR_BASE4+0x10)) //PWR_FCG0保护控制
//时钟控制寄存器写保护位定义
//#define PWR_FPRCB3_PVD (1<<3) //PVD相关功能配置解锁
//#define PWR_FPRCB1_PWR (1<<1) //电源相关功能配置解锁
//#define PWR_FPRCB0_CLOCK (1<<0) //时钟相关功能配置解锁
//#define SYS_PWR_CONFIG_Unlock() {PWR_FCG0PC = 0xA5A50001;} //PWR寄存器配置解锁
//#define SYS_PWR_CONFIG_Lock() {PWR_FCG0PC = 0xA5A50000;} //PWR寄存器配置上锁
/*
FPRCB0控制:
CMU_XTALCFGR,CMU_XTALSTBCR,CMU_XTALCR,CMU_XTALSTDCR, CMU_XTALSTDSR,CMU_HRCTRM,CMU_HRCCR,CMU_MRCTRM, CMU_MRCCR,CMU_PLLCFGR,CMU_PLLCR,
CMU_UPLLCFGR, CMU_UPLLCR,CMU_OSCSTBSR,CMU_CKSWR,CMU_SCFGR, CMU_UFSCKCFGR, CMU_TPIUCKCFGR,CMU_MCO1CFGR,CMU_MCO2CFGR, CMU_XTAL32CR,
CMU_XTALC32CFGR,CMU_XTAL32NFR, CMU_LRCCR,CMU_LRCTRM PWR_XTAL32CS
FPRCB1控制:
PWR_PWRC0 PWR_PWRC1 PWR_PWRC2 PWR_PWRC3 PWR_PDWKE0 PWR_PDWKE1 PWR_PDWKE2 PWR_PDWKES PWR_PDWKF0 PWR_PDWKF1
PWR_PWCMR CMU_PERICKSEL, CMU_I2SCKSEL,PWR_MDSWCR PWR_STPMCR PWR_RAMPC0 PWR_RAMOPM RMU_RSTF0
FPRCB3控制:
PWR_PVDCR0 PWR_PVDCR1 PWR_PVDFCR PWR_PVDLCR PWR_PVDICR PWR_PVDDSR
*/
//时钟与电源寄存器解锁
//#define CMU_REG_UNLOCK(x) {PWR_FPRC = 0xA500|((x)&0xFF);}
//时钟与电源寄存器上锁
//#define CMU_REG_LOCK(x) (PWR_FPRC = 0xA500|(PWR_FPRC & (~(x))))
//UART========================================================================================================
#define UART1_BASE (0x4001D000UL) //寄存器基址
#define UART2_BASE (0x4001D400UL) //寄存器基址
#define UART3_BASE (0x40021000UL) //寄存器基址
#define UART4_BASE (0x40021400UL) //寄存器基址
typedef struct
{
vu32 SR; //状态寄存器
vu32 DR; //数据寄存器
vu32 BRR; //波特率寄存器
vu32 CR1; //控制寄存器1
vu32 CR2; //控制寄存器2
vu32 CR3; //控制寄存器3
vu32 PR; //预分配寄存器
}UART_TypeDef;
#define UART1 ((UART_TypeDef *) UART1_BASE)
#define UART2 ((UART_TypeDef *) UART2_BASE)
#define UART3 ((UART_TypeDef *) UART3_BASE)
#define UART4 ((UART_TypeDef *) UART4_BASE)
//EFM FLASH控制========================================================================================================
#define EFM_BASE (0x40010400UL) //寄存器基址
typedef struct
{
vu32 FAPRT; //FLASH访问保护寄存器
vu32 FSTP; //FLASH停止 寄存器
vu32 FRMC; //FLASH读 模式 寄存器
vu32 FWMC; //FLASH擦写模式 寄存器
vu32 FSR; //FLASH状态寄存器
vu32 FSCLR; //FLASH状态 清除 寄存器
vu32 FITE; //FLASH中断许可寄存器
vu32 FSWP; //FLASH引导 交换 状态 寄存器
vu32 FPMTSW; //FLASH改写允许区域起始地址
vu32 FPMTEW; //FLASH改写允许区域结束地址
u32Reserved1;
vu32 UQID; //FLASHuniqueID寄存器
}EFM_TypeDef;
#define EFM ((EFM_TypeDef *) EFM_BASE)
#define SYS_EFM_CONFIG_Unlock() {EFM->FAPRT = 0x0123;EFM->FAPRT = 0x3210;} //EFM配置解锁
#define SYS_EFM_CONFIG_Lock() {EFM->FAPRT = 0x0000;} //EFM配置上锁
//中断控制器INTC控制========================================================================================================
#define INTC_BASE (0x40051000UL) //寄存器基址
typedef struct
{
vu32 NMICR; //NMI管脚不可屏蔽中断控制寄存器
vu32 NMIENR; //不可屏蔽中断使能寄存器
vu32 NMIFR; //不可屏蔽中断标志寄存器
vu32 NMICFR; //不可屏蔽中断标志清除寄存器
vu32 EIRQCR; //外部管脚中断控制寄存器
vu32 WUPEN; //停止模式唤醒事件使能寄存器
vu32 EIFR; //外部管脚中断标志寄存器
vu32 EICFR; //外部管脚中断标志清除寄存器
vu32 SEL; //中断事件选择寄存器
vu32 VSSEL; //向量共享中断选择寄存器
vu32 SWIER; //软件中断事件寄存器
vu32 EVTER; //事件使能寄存器
vu32 IER; //中断使能寄存器
}INTC_TypeDef;
#define INTC ((INTC_TypeDef *) INTC_BASE)
//#define INTSFTTRG *((vu32*)(0x40010800)) //外设事件触发寄存器
//通用定时器timer0========================================================================================================
#define TIMER0_U1_BASE (0x40024000UL) //寄存器基址
#define TIMER0_U2_BASE (0x40024400UL) //寄存器基址
typedef struct
{
vu32 CNTAR; //计数值寄存器
vu32 CNTBR; //计数值寄存器
vu32 CMPAR; //基准值寄存器
vu32 CMPBR; //基准值寄存器
vu32 BCONR; //基本控制寄存器
vu32 STFLR; //状态标志寄存器
}TIMER0_TypeDef;
#define TMR0_1 ((TIMER0_TypeDef *) TIMER0_U1_BASE)
#define TMR0_2 ((TIMER0_TypeDef *) TIMER0_U2_BASE)
//触发选择寄存器( TMR0_HTSSR 是一个 独立的寄存器,为 2个单元的 Timer0所共有,s
//#define TMR0_HTSSR *((vu32*)(0x40010840)) //触发选择寄存器
//自动运行系统AOS========================================================================================================
#define AOS_BASE (0x40010800UL) //寄存器基址
typedef struct
{
vu32 INTSFTTRG; //外设触发事件寄存器
vu32 DCU_TRGSEL; //DCU触发源选择寄存器
vu32 DMA1_TRGSEL; //DMA1传输启动触发源选择寄存器
vu32 DMA2_TRGSEL; //DMA2传输启动触发源选择寄存器
vu32 DMA_TRGSELRC; //DMA通道重置触发源选择寄存器
vu32 TMR6_HTSSR; //Timer6硬件触发事件选择寄存器
vu32 TMR0_HTSSR; //Timer0触发选择寄存器
vu32 PEVNTTRGSR12; //Event Port1,2触发源选择寄存器
vu32 PEVNTTRGSR34; //Event Port3,4触发源选择寄存器
vu32 TMRA_HTSSR0; //TimerA内部触发事件选择寄存器
vu32 TMRA_HTSSR1; //TimerA内部触发事件选择寄存器
vu32 OTS_TRG; //OTS触发源选择寄存器
vu32 ADC1_ITRGSELR; //A/D1启动片内触发源选择寄存器
vu32 ADC2_ITRGSELR; //A/D2启动片内触发源选择寄存器
vu32 AOS_COMTRG1; //公共触发源选择寄存器
vu32 AOS_COMTRG2; //公共触发源选择寄存器
}AOS_TypeDef;
#define AOS ((AOS_TypeDef *) AOS_BASE)
//通用定时器timerA========================================================================================================
#define TIMERA1_BASE (0x40015000UL) //寄存器基址
#define TIMERA2_BASE (0x40015400UL) //寄存器基址
#define TIMERA3_BASE (0x40015800UL) //寄存器基址
#define TIMERA4_BASE (0x40015C00UL) //寄存器基址
#define TIMERA5_BASE (0x40016000UL) //寄存器基址
#define TIMERA6_BASE (0x40016400UL) //寄存器基址
typedef struct
{
vu16 CNTER; //通用计数值寄存器
u16 Reserved1;
vu16 PERAR; //周期基准值寄存器-计数器到这个值就溢出
u16 Reserved2;
u32 Reserved3;
vu32 CMPAR; //比较基准值寄存器
u32 Reserved4;
vu16 BCSTR; //控制状态寄存器
u16 Reserved5;
vu16 HCONR; //硬件触发事件选择寄存器
u16 Reserved5_1;
vu16 HCUPR; //硬件递加事件选择寄存器
u16 Reserved6;
vu16 HCDOR; //硬件递减事件选择寄存器
u16 Reserved6_1;
vu16 ICONR; //中断控制寄存器
u16 Reserved7;
vu16 ECONR; //事件控制寄存器
u16 Reserved8;
vu16 FCONR; //滤波控制寄存器
u16 Reserved9;
vu16 STFLR; //状态寄存器
u16 Reserved10;
u32 Reserved11;
vu16 BCONR1; //缓存控制寄存器1
u16 Reserved12;
vu16 BCONR2; //缓存控制寄存器2
u16 Reserved13;
vu16 BCONR3; //缓存控制寄存器3
u16 Reserved14;
vu16 BCONR4; //缓存控制寄存器4
u16 Reserved15;
vu32 CCONR; //捕获控制寄存器
u32 Reserved16;
vu32 PCONR; //端口控制寄存器
}TMRA_TypeDef;
#define TMRA1 ((TMRA_TypeDef *) TIMERA1_BASE)
#define TMRA2 ((TMRA_TypeDef *) TIMERA2_BASE)
#define TMRA3 ((TMRA_TypeDef *) TIMERA3_BASE)
#define TMRA4 ((TMRA_TypeDef *) TIMERA4_BASE)
#define TMRA5 ((TMRA_TypeDef *) TIMERA5_BASE)
#define TMRA6 ((TMRA_TypeDef *) TIMERA6_BASE)
//通用串行接口SPI========================================================================================================
#define SPI1_BASE (0x4001C000UL) //寄存器基址
#define SPI2_BASE (0x4001C400UL) //寄存器基址
#define SPI3_BASE (0x40020000UL) //寄存器基址
#define SPI4_BASE (0x40020400UL) //寄存器基址
typedef struct
{
vu32 DR; //SPI数据寄存器
vu32 CR1; //SPI控制寄存器
u32 Reserved1;
vu32 CFG1; //SPI通信配置寄存器
u32 Reserved2;
vu32 SR; //SPI状态寄存器
vu32 CFG2; //SPI通信配置寄存器2
}SPI_TypeDef;
#define SPI1 ((SPI_TypeDef *) SPI1_BASE)
#define SPI2 ((SPI_TypeDef *) SPI2_BASE)
#define SPI3 ((SPI_TypeDef *) SPI3_BASE)
#define SPI4 ((SPI_TypeDef *) SPI4_BASE)
//DMA========================================================================================================
#define DMA1_BASE (0x40053000UL) //寄存器基址
#define DMA2_BASE (0x40053400UL) //寄存器基址
#define DMA1_Channel1_BASE (DMA1_BASE+0x40+0x40*0)
#define DMA1_Channel2_BASE (DMA1_BASE+0x40+0x40*1)
#define DMA1_Channel3_BASE (DMA1_BASE+0x40+0x40*2)
#define DMA1_Channel4_BASE (DMA1_BASE+0x40+0x40*3)
#define DMA2_Channel1_BASE (DMA2_BASE+0x40+0x40*0)
#define DMA2_Channel2_BASE (DMA2_BASE+0x40+0x40*1)
#define DMA2_Channel3_BASE (DMA2_BASE+0x40+0x40*2)
#define DMA2_Channel4_BASE (DMA2_BASE+0x40+0x40*3)
typedef struct
{
vu32 SAR; //传输源地址寄存器
vu32 DAR; //传输目标地址寄存器
vu32 DTCTL; //数据控制寄存器
vu32 RPT; //重复区域大小寄存器
//vu32 RPTB; //重复区域大小寄存器B
vu32 SNSEQCTL; //源设备不连续地址传输控制寄存器
//vu32 SNSEQCTLB; //源设备不连续地址传输控制寄存器 B
vu32 DNSEQCTL; //目标设备不连续地址传输控制寄存器
//vu32 DNSEQCTB; //目标设备不连续地址传输控制寄存器 B
vu32 LLP; //链指针寄存器
vu32 CTL; //通道控制寄存器
vu32 MONSAR; //传输源地址监视寄存器
vu32 MONDAR; //传输目标地址监视寄存器
vu32 MONDTCTL; //数据控制监视寄存器
vu32 MONRPT; //重复区域计数器监视寄存器
vu32 MONSNSEQCTL; //源设备不连续传输计数器监视寄存器
vu32 MONDNSEQCTL; //目标设备不连续传输计数器监视寄存器
//u32 Reserved1; //0x40字节对齐
}DMA_Channel_TypeDef;
typedef struct
{
vu32 EN; //DMA使能寄存器
vu32 INTSTAT0; //中断状态寄存器 0
vu32 INTSTAT1; //中断状态寄存器 1
vu32 INTMASK0; //中断屏蔽寄存器 0
vu32 INTMASK1; //中断屏蔽寄存器 1
vu32 INTCLR0; //中断复位寄存器 0
vu32 INTCLR1; //中断复位寄存器 1
vu32 CHEN; //通道使能寄存器
vu32 REQSTAT; //传输请求状态寄存器
vu32 CHSTAT; //传输中通道监视寄存器
vu32 RCFGCTL; //通道重置控制寄存器
}DMA_TypeDef;
#define DMA1 ((DMA_TypeDef *) DMA1_BASE)
#define DMA2 ((DMA_TypeDef *) DMA2_BASE)
#define DMA1_Channel1 ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE)
#define DMA1_Channel2 ((DMA_Channel_TypeDef *) DMA1_Channel2_BASE)
#define DMA1_Channel3 ((DMA_Channel_TypeDef *) DMA1_Channel3_BASE)
#define DMA1_Channel4 ((DMA_Channel_TypeDef *) DMA1_Channel4_BASE)
#define DMA2_Channel1 ((DMA_Channel_TypeDef *) DMA2_Channel1_BASE)
#define DMA2_Channel2 ((DMA_Channel_TypeDef *) DMA2_Channel2_BASE)
#define DMA2_Channel3 ((DMA_Channel_TypeDef *) DMA2_Channel3_BASE)
#define DMA2_Channel4 ((DMA_Channel_TypeDef *) DMA2_Channel4_BASE)
//#define DMA1_TRGSEL(ch) *((vu32*)(0x40010814+0x4*(ch))) //DMA1传输启动触发源选择寄存器
//#define DMA2_TRGSEL(ch) *((vu32*)(0x40010824+0x4*(ch))) //DMA2传输启动触发源选择寄存器
#define DMA_TRGSELRC *((vu32*)(0x40010834)) //通道重置触发源选择寄存器
//看门狗WDT SWDT========================================================================================================
#define WDT_BASE (0x40049000UL) //寄存器基址
#define SWDT_BASE (0x40049400UL) //寄存器基址
typedef struct
{
u32 Reserved1;
vu32 SR; //SWDT状态 寄存器
vu32 RR; //SWDT刷新 寄存器
}SWDT_TypeDef;
typedef struct
{
vu32 CR; //WDT控制寄存器
vu32 SR; //SWDT状态 寄存器
vu32 RR; //SWDT刷新 寄存器
}WDT_TypeDef;
#define SWDT ((SWDT_TypeDef *) SWDT_BASE)
#define WDT ((WDT_TypeDef *) WDT_BASE)
//初始化配置ICG========================================================================================================
#define ICG_BASE (0x00000400UL) //寄存器基址
typedef struct
{
vu32 DATA; //SWDT状态 寄存器
}ICG_TypeDef;
#define ICG ((ICG_TypeDef * const) ICG_BASE)
//RTC========================================================================================================
#define RTC_BASE (0x4004C000UL) //寄存器基址
typedef struct
{
vu8 CR0; //控制寄存器0
u8 Reserved1;
vu8 CR1; //控制寄存器1
u8 Reserved2;
vu8 CR2; //控制寄存器2
u8 Reserved3;
vu8 CR3; //控制寄存器3
u8 Reserved4;
vu8 SEC; //秒计数寄存器
u8 Reserved5;
vu8 MIN; //分计数寄存器
u8 Reserved6;
vu8 HOUR; //时计数寄存器
u8 Reserved7;
vu8 WEEK; //周计数寄存器
u8 Reserved8;
vu8 DAY; //日计数寄存器
u8 Reserved9;
vu8 MON; //月计数寄存器
u8 Reserved10;
vu8 YEAR; //年计数寄存器
u8 Reserved11;
vu8 ALMMIN; //分闹钟寄存器
u8 Reserved12;
vu8 ALMHOUR; //时闹钟寄存器
u8 Reserved13;
vu8 ALMWEEK; //周闹钟寄存器
u8 Reserved14;
vu8 ERRCRH; //时钟误差补偿寄存器
u8 Reserved15;
vu8 ERRCRL; //时钟误差补偿寄存器
}RTC_TypeDef;
#define RTC ((RTC_TypeDef *) RTC_BASE)
#endif //_HC32F46X_MAP_
用华大不多但不影响我好好学习,天天向上 驱动库里面,common文件夹下有个hc32f460.h,里面把寄存器都定义好了……
页:
[1]