打印
[综合信息]

HC32F46x 寄存器定义(裸机)

[复制链接]
2460|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2021-10-10 11:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
自己定义的底层寄存器地址




/*************************************************************************************************************
* 文件名      :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;                        //数据输入
        u16  Reserved1;
    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))))




使用特权

评论回复
沙发
tpgf|  楼主 | 2021-10-10 11:57 | 只看该作者

//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改写允许区域结束地址
        u32  Reserved1[10];
        vu32 UQID[3];                //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[16];        //外部管脚中断控制寄存器
        vu32 WUPEN;                        //停止模式唤醒事件使能寄存器
        vu32 EIFR;                        //外部管脚中断标志寄存器
        vu32 EICFR;                        //外部管脚中断标志清除寄存器
        vu32 SEL[128];                //中断事件选择寄存器
        vu32 VSSEL[16];                //向量共享中断选择寄存器
        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[4];                //DCU触发源选择寄存器
        vu32 DMA1_TRGSEL[4];        //DMA1传输启动触发源选择寄存器
        vu32 DMA2_TRGSEL[4];        //DMA2传输启动触发源选择寄存器
        vu32 DMA_TRGSELRC;                //DMA通道重置触发源选择寄存器
        vu32 TMR6_HTSSR[2];                //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[2];        //A/D1启动片内触发源选择寄存器
        vu32 ADC2_ITRGSELR[2];        //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[14];
    vu32 CMPAR[8];              //比较基准值寄存器
    u32 Reserved4[8];
    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[8];
    vu16 BCONR1;                     //缓存控制寄存器1
    u16 Reserved12[3];
        vu16 BCONR2;                     //缓存控制寄存器2
    u16 Reserved13[3];
        vu16 BCONR3;                     //缓存控制寄存器3
    u16 Reserved14[3];
        vu16 BCONR4;                     //缓存控制寄存器4
    u16 Reserved15[19];
    vu32 CCONR[8];                     //捕获控制寄存器
    u32 Reserved16[8];
    vu32 PCONR[8];                     //端口控制寄存器
}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)



使用特权

评论回复
板凳
tpgf|  楼主 | 2021-10-10 11:57 | 只看该作者
//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[2];        //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[8];        //SWDT状态 寄存器
}ICG_TypeDef;

#define ICG          ((ICG_TypeDef * const) ICG_BASE)











//RTC========================================================================================================
#define RTC_BASE                       (0x4004C000UL)      //寄存器基址

typedef struct
{
        vu8 CR0;                //控制寄存器0
        u8 Reserved1[3];
        vu8 CR1;                //控制寄存器1
        u8 Reserved2[3];
        vu8 CR2;                //控制寄存器2
        u8 Reserved3[3];
        vu8 CR3;                //控制寄存器3
        u8 Reserved4[3];
        vu8 SEC;                //秒计数寄存器
        u8 Reserved5[3];
        vu8 MIN;                //分计数寄存器
        u8 Reserved6[3];
        vu8 HOUR;                //时计数寄存器
        u8 Reserved7[3];
        vu8 WEEK;                //周计数寄存器
        u8 Reserved8[3];
        vu8 DAY;                //日计数寄存器
        u8 Reserved9[3];
        vu8 MON;                //月计数寄存器
        u8 Reserved10[3];
        vu8 YEAR;                //年计数寄存器
        u8 Reserved11[3];
        vu8 ALMMIN;                //分闹钟寄存器
        u8 Reserved12[3];
        vu8 ALMHOUR;        //时闹钟寄存器
        u8 Reserved13[3];
        vu8 ALMWEEK;        //周闹钟寄存器
        u8 Reserved14[3];
        vu8 ERRCRH;                //时钟误差补偿寄存器
        u8 Reserved15[3];
        vu8 ERRCRL;                //时钟误差补偿寄存器
}RTC_TypeDef;
#define RTC          ((RTC_TypeDef *) RTC_BASE)





#endif         //_HC32F46X_MAP_


使用特权

评论回复
地板
两只袜子| | 2021-10-10 17:13 | 只看该作者
用华大不多但不影响我好好学习,天天向上

使用特权

评论回复
5
martinhu| | 2021-10-11 09:13 | 只看该作者
驱动库里面,common文件夹下有个hc32f460.h,里面把寄存器都定义好了……

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1949

主题

15676

帖子

12

粉丝