本帖最后由 hotpower 于 2010-10-22 23:45 编辑
-
- /*--------------------------------------------------------------------------
- 文 件 名 : NUC1xxcfg.h
- 创 建 人 : Cortex-M0菜鸟HotPower@163.com
- 创 建 日 期 : 2010.10.18 18:18
- 最近修改日期 : 2010.10.22 23:38
- 创 建 地 点 : 西安大雁塔村队部
- 版 本 号 : V1.03 (红杏版)
- 修 改 原 因 :
- 说 明 :
- 备 注 : 本头文件风格归属于菜农的《红杏出墙》系列,堪称“红杏级别”
- 将本文件拷贝到...\NUC1xxBSP\CMSIS\CM0内。
- -------------------------------------------------------------------------------*/
- #ifndef __NUC1xxcfg_H__
- #define __NUC1xxcfg_H__
- #ifdef __cplusplus
- extern "C" {
- #endif
- #if defined (__CC_ARM)
- #pragma anon_unions
- #endif
- typedef volatile unsigned int NU_REG;// Hardware register definition
- #define __noinit__ __attribute__((zero_init))//变量不初始化为0
- typedef enum
- {
- __0 = (NU_REG)0,
- __1 = (NU_REG)1,
- __2 = (NU_REG)2,
- __3 = (NU_REG)3,
- __4 = (NU_REG)4,
- __5 = (NU_REG)5,
- __6 = (NU_REG)6,
- __7 = (NU_REG)7,
- __8 = (NU_REG)8,
- __9 = (NU_REG)9,
- __10 = (NU_REG)10,
- __11 = (NU_REG)11,
- __12 = (NU_REG)12,
- __13 = (NU_REG)13,
- __14 = (NU_REG)14,
- __15 = (NU_REG)15,
- __16 = (NU_REG)16,
- __17 = (NU_REG)17,
- __18 = (NU_REG)18,
- __19 = (NU_REG)19,
- __20 = (NU_REG)20,
- __21 = (NU_REG)21,
- __22 = (NU_REG)22,
- __23 = (NU_REG)23,
- __24 = (NU_REG)24,
- __25 = (NU_REG)25,
- __26 = (NU_REG)26,
- __27 = (NU_REG)27,
- __28 = (NU_REG)28,
- __29 = (NU_REG)29,
- __30 = (NU_REG)30,
- __31 = (NU_REG)31
- }Number_enum;
- typedef volatile struct
- {
- NU_REG Bit0: 1;
- NU_REG Bit1: 1;
- NU_REG Bit2: 1;
- NU_REG Bit3: 1;
- NU_REG Bit4: 1;
- NU_REG Bit5: 1;
- NU_REG Bit6: 1;
- NU_REG Bit7: 1;
- NU_REG Bit8: 1;
- NU_REG Bit9: 1;
- NU_REG Bit10: 1;
- NU_REG Bit11: 1;
- NU_REG Bit12: 1;
- NU_REG Bit13: 1;
- NU_REG Bit14: 1;
- NU_REG Bit15: 1;
- NU_REG Bit16: 1;
- NU_REG Bit17: 1;
- NU_REG Bit18: 1;
- NU_REG Bit19: 1;
- NU_REG Bit20: 1;
- NU_REG Bit21: 1;
- NU_REG Bit22: 1;
- NU_REG Bit23: 1;
- NU_REG Bit24: 1;
- NU_REG Bit25: 1;
- NU_REG Bit26: 1;
- NU_REG Bit27: 1;
- NU_REG Bit28: 1;
- NU_REG Bit29: 1;
- NU_REG Bit30: 1;
- NU_REG Bit31: 1;
- }NU_BITs;
- //===============================================//
- typedef volatile struct
- {
- NU_REG Pin0: 1;
- NU_REG Pin1: 1;
- NU_REG Pin2: 1;
- NU_REG Pin3: 1;
- NU_REG Pin4: 1;
- NU_REG Pin5: 1;
- NU_REG Pin6: 1;
- NU_REG Pin7: 1;
- NU_REG Pin8: 1;
- NU_REG Pin9: 1;
- NU_REG Pin10: 1;
- NU_REG Pin11: 1;
- NU_REG Pin12: 1;
- NU_REG Pin13: 1;
- NU_REG Pin14: 1;
- NU_REG Pin15: 1;
- NU_REG Pin16: 1;
- NU_REG Pin17: 1;
- NU_REG Pin18: 1;
- NU_REG Pin19: 1;
- NU_REG Pin20: 1;
- NU_REG Pin21: 1;
- NU_REG Pin22: 1;
- NU_REG Pin23: 1;
- NU_REG Pin24: 1;
- NU_REG Pin25: 1;
- NU_REG Pin26: 1;
- NU_REG Pin27: 1;
- NU_REG Pin28: 1;
- NU_REG Pin29: 1;
- NU_REG Pin30: 1;
- NU_REG Pin31: 1;
- }NU_PINs;
- //============================================
- typedef volatile union
- {
- __IO NU_REG Regs;
- __IO NU_BITs Bits;
- }NU_REG_BITs;
- typedef volatile union
- {
- __IO NU_REG Regs;
- __IO NU_PINs Bits;
- }NU_REG_PINs;
- typedef struct
- {
- __IO NU_REG RESERVED:16;
- __IO NU_REG OFFD0:1;
- __IO NU_REG OFFD1:1;
- __IO NU_REG OFFD2:1;
- __IO NU_REG OFFD3:1;
- __IO NU_REG OFFD4:1;
- __IO NU_REG OFFD5:1;
- __IO NU_REG OFFD6:1;
- __IO NU_REG OFFD7:1;
- __IO NU_REG OFFD8:1;
- __IO NU_REG OFFD9:1;
- __IO NU_REG OFFD10:1;
- __IO NU_REG OFFD11:1;
- __IO NU_REG OFFD12:1;
- __IO NU_REG OFFD13:1;
- __IO NU_REG OFFD14:1;
- __IO NU_REG OFFD15:1;
- } NU_GPIO_OFFD;
- typedef volatile union
- {
- NU_REG Regs;
- GPIO_PMD_T Bits;
- }NU_GPIO_PMD_T;
- typedef volatile union
- {
- NU_REG Regs;
- NU_GPIO_OFFD Bits;
- }NU_GPIO_OFFD_T;
- //----------------------------------------------------//
- //改造GPIO为结构(不占用空间)
- typedef struct
- {
- NU_GPIO_PMD_T PMD;//模式控制(0输入1输出2开漏3准双向)
- NU_GPIO_OFFD_T OFFD;//数字使能(高16位)
- NU_REG_PINs DOUT;//数据输出值(低16位)
- NU_REG_PINs DMASK;//数据输出写屏蔽
- NU_REG_PINs PIN;//管脚数值(低16位)
- NU_REG_PINs DBEN;//防反弹使能
- NU_REG_PINs IMD;//中断模式控制(0边沿触发中断1电平触发中断)
- NU_REG_BITs IEN;//中断使能(高16位上升沿或高电平,低16位下降沿或低电平)
- NU_REG_PINs ISRC;//中断源标志
- NU_REG RESERVED[7];//保留,为了构造GPIO结构数组
- } NU_GPIO_T;
- typedef struct {
- union {
- __IO NU_GPIO_T Px[5];//GPIOs.Px[0].DOUT.Regs |= 1;GPIOs.Px[0].DOUT.Bits.Pin0 = 1;
- struct {
- __IO NU_GPIO_T PA;//GPIOs.PA.DOUT.Regs |=1;GPIOs.PA.DOUT.Bits.Pin0=1;
- __IO NU_GPIO_T PB;//GPIOs.PB.DOUT.Regs |=2;GPIOs.PB.DOUT.Bits.Pin1=1;
- __IO NU_GPIO_T PC;//GPIOs.PC.DOUT.Regs |=4;GPIOs.PC.DOUT.Bits.Pin2=1;
- __IO NU_GPIO_T PD;//GPIOs.PD.DOUT.Regs |=8;GPIOs.PD.DOUT.Bits.Pin3=1;
- __IO NU_GPIO_T PE;//GPIOs.PE.DOUT.Regs |=16;GPIOs.PE.DOUT.Bits.Pin4=1;
- };
- };
- }NUS_GPIO, *NUPS_GPIO;
- #define NU_BASE_GPIO ((NUPS_GPIO) GPIOA_BASE)//定义硬件结构指针(硬件地址)
- #define GPIOs (*NU_BASE_GPIO)//定位全局结构变量GPIOs
- //----------------------------------------------------//
- #define GPIOAs (*((NU_GPIO_T *) GPIOA_BASE))//定位全局结构变量GPIOAs
- #define GPIOBs (*((NU_GPIO_T *) GPIOB_BASE))//定位全局结构变量GPIOBs
- #define GPIOCs (*((NU_GPIO_T *) GPIOC_BASE))//定位全局结构变量GPIOCs
- #define GPIODs (*((NU_GPIO_T *) GPIOD_BASE))//定位全局结构变量GPIODs
- #define GPIOEs (*((NU_GPIO_T *) GPIOE_BASE))//定位全局结构变量GPIOEs
- //----------------------------------------------------//
- #define GPIOx(x) ((NU_GPIO_T *) (GPIOA_BASE + x * 0x0040))
- #define Px(x) ((NU_GPIO_T *) (GPIOA_BASE + x * 0x0040))
- #define SPIx(x) ((SPI_T *) (SPI0_BASE + (x & 1) * 0x4000) + ((x >> 1) * 0x100000))
- #define TIMERx(x) ((TIMER_T *)(TIMER0_BASE + (x & 1) * 0x0020) + ((x >> 1) * 0x100000))
- #define I2Cx(x) ((I2C_T *) (I2C0_BASE + x * 0x100000))
- #define PWMx(x) ((PWM_T *) (PWMA_BASE + x * 0x100000))
- #define PDMAx(x) ((PDMA_T *) (PDMA0_BASE + x * 0x0100))
- #define UARTx(x) ((UART_T *) (UART0_BASE + (x & 1) * 0x100000) + ((x >> 1) * 0x104000))
- #define Ux(x) ((UART_T *) (UART0_BASE + (x & 1) * 0x100000) + ((x >> 1) * 0x104000))
- #ifdef __cplusplus
- }
- #endif
- #endif /* __NUC1xxcfg_H__ */
|