|
发表于 2010-12-6 00:22:56
|
显示全部楼层
回复【432楼】machao
回复【431楼】hotpower 菜农
马潮教授:
俺已将nuc1xx和m05x的头文件做完。
由于它们都属于cortex-m0,前者无ebi接口,后者无usb,rtc,i2s,can等模块。
故后者是前者的一个子集。
前者用了很多的时间,后者只用了不到两个小时,几乎是全部转抄。
所以俺准备将其和合为一个通用的头文件,内部自动识别。
-----------------------------------------------------------------------
谢谢你的捧场。
我喜欢从最底层开始玩(熟悉)东西。比如先做转换板,下载器等。
开始还是以直接寄存器操作为主,这样可以更加了解芯片的特点和使用的方法与技巧。
比如下面的pwm初始化代码:
//pwm设置:使用b组4个pwm(4/5/6/7)输出p2.4/p2.5/p2.6/p2.7
......
-----------------------------------------------------------------------
马潮教授:
今天没空,俺保留自己的观点。
新版的PWM是这样的:
//----------------------------------------------------//
typedef enum
{
PWM_PPR_CP01 = 0,//PWM定时器0&1的时钟预分频0
PWM_PPR_CP23 = 8,//PWM定时器2&3的时钟预分频2
PWM_PPR_DZI01 = 16,//PWM0与PWM1的死区间隔寄存器
PWM_PPR_DZI23 = 24//PWM2与PWM3的死区间隔寄存器
}NU_PWM_PPR_ENUM;
typedef enum
{
PWM_PPR03_CP01 = 0,//PWM定时器0&1的时钟预分频0
PWM_PPR03_CP23 = 8,//PWM定时器2&3的时钟预分频2
PWM_PPR03_DZI01 = 16,//PWM0与PWM1的死区间隔寄存器
PWM_PPR03_DZI23 = 24//PWM2与PWM3的死区间隔寄存器
}NU_PWM_PPR03_ENUM;
typedef volatile union
{
NU_REG Regs;
PWM_PPR_T Bits;
}NU_PWM_PPR_T;
//----------------------------------------------------//
typedef enum
{
PWM_PPR47_CP45 = 0,//PWM定时器4&5的时钟预分频0
PWM_PPR47_CP67 = 8,//PWM定时器6&7的时钟预分频2
PWM_PPR47_DZI45 = 16,//PWM4与PWM5的死区间隔寄存器
PWM_PPR47_DZI67 = 24//PWM6与PWM7的死区间隔寄存器
}NU_PWM_PPR47_ENUM;
typedef struct
{
__IO NU_REG CP45:8;
__IO NU_REG CP67:8;
__IO NU_REG DZI45:8;
__IO NU_REG DZI67:8;
}NU_PWM_PPR_Bits;
typedef volatile union
{
NU_REG Regs;
NU_PWM_PPR_Bits Bits;
}NU_PWM_PPR47_T;
//----------------------------------------------------//
typedef enum
{
PWM_CSR_CSR0 = 0,//定时器0时钟源选择
PWM_CSR_CSR1 = 4,//定时器1时钟源选择
PWM_CSR_CSR2 = 8,//定时器2时钟源选择
PWM_CSR_CSR3 = 12//定时器3时钟源选择
}NU_PWM_CSR_ENUM;
typedef enum
{
PWM_CSR03_CSR0 = 0,//定时器0时钟源选择
PWM_CSR03_CSR1 = 4,//定时器1时钟源选择
PWM_CSR03_CSR2 = 8,//定时器2时钟源选择
PWM_CSR03_CSR3 = 12//定时器3时钟源选择
}NU_PWM_CSR03_ENUM;
typedef volatile union
{
NU_REG Regs;
PWM_CSR_T Bits;
}NU_PWM_CSR_T;
//----------------------------------------------------//
typedef enum
{
PWM_CSR47_CSR4 = 0,//定时器4时钟源选择
PWM_CSR47_CSR5 = 4,//定时器5时钟源选择
PWM_CSR47_CSR6 = 8,//定时器6时钟源选择
PWM_CSR47_CSR7 = 12//定时器7时钟源选择
}NU_PWM_CSR47_ENUM;
typedef struct
{
__IO NU_REG CSR4:3;
__I NU_REG RESERVE0:1;
__IO NU_REG CSR5:3;
__I NU_REG RESERVE1:1;
__IO NU_REG CSR6:3;
__I NU_REG RESERVE2:1;
__IO NU_REG CSR7:3;
__I NU_REG RESERVE3:17;
}NU_PWM_CSR47_Bits;
typedef volatile union
{
NU_REG Regs;
NU_PWM_CSR47_Bits Bits;
}NU_PWM_CSR47_T;
//----------------------------------------------------//
typedef enum
{
PWM_PCR_CH0EN = 0,//PWM定时器0使能/禁止
PWM_PCR_CH0INV = 2,//PWM定时器0反向打开/关闭
PWM_PCR_CH0MOD = 3,//PWM定时器0自动加载/单触发模式选择
PWM_PCR_DZEN01 = 4,//死区发生器0使能/禁止
PWM_PCR_DZEN23 = 5,//死区发生器2使能/禁止
PWM_PCR_CH1EN = 8,//PWM定时器1使能/禁止
PWM_PCR_CH1INV = 10,//PWM定时器1反向打开/关闭
PWM_PCR_CH1MOD = 11,//PWM定时器1自动重载/单触发模式选择
PWM_PCR_CH2EN = 16,//PWM定时器2使能/禁止
PWM_PCR_CH2INV = 18,//PWM定时器2反向打开/关闭
PWM_PCR_CH2MOD = 19,//PWM定时器2自动重载/单触发模式选择
PWM_PCR_CH3EN = 24,//PWM定时器3使能/禁止
PWM_PCR_CH3INV = 26,//PWM定时器3反向打开/关闭
PWM_PCR_CH3MOD = 27,//PWM定时器3自动重载/单触发模式选择
}NU_PWM_PCR_ENUM;
typedef enum
{
PWM_PCR03_CH0EN = 0,//PWM定时器0使能/禁止
PWM_PCR03_CH0INV = 2,//PWM定时器0反向打开/关闭
PWM_PCR03_CH0MOD = 3,//PWM定时器0自动加载/单触发模式选择
PWM_PCR03_DZEN01 = 4,//死区发生器0使能/禁止
PWM_PCR03_DZEN23 = 5,//死区发生器2使能/禁止
PWM_PCR03_CH1EN = 8,//PWM定时器1使能/禁止
PWM_PCR03_CH1INV = 10,//PWM定时器1反向打开/关闭
PWM_PCR03_CH1MOD = 11,//PWM定时器1自动重载/单触发模式选择
PWM_PCR03_CH2EN = 16,//PWM定时器2使能/禁止
PWM_PCR03_CH2INV = 18,//PWM定时器2反向打开/关闭
PWM_PCR03_CH2MOD = 19,//PWM定时器2自动重载/单触发模式选择
PWM_PCR03_CH3EN = 24,//PWM定时器3使能/禁止
PWM_PCR03_CH3INV = 26,//PWM定时器3反向打开/关闭
PWM_PCR03_CH3MOD = 27,//PWM定时器3自动重载/单触发模式选择
}NU_PWM_PCR03_ENUM;
typedef volatile union
{
NU_REG Regs;
PWM_PCR_T Bits;
}NU_PWM_PCR_T;
//----------------------------------------------------//
typedef enum
{
PWM_PCR47_CH4EN = 0,//PWM定时器4使能/禁止
PWM_PCR47_CH4INV = 2,//PWM定时器4反向打开/关闭
PWM_PCR47_CH4MOD = 3,//PWM定时器4自动加载/单触发模式选择
PWM_PCR47_DZEN45 = 4,//死区发生器4使能/禁止
PWM_PCR47_DZEN67 = 5,//死区发生器6使能/禁止
PWM_PCR47_CH5EN = 8,//PWM定时器5使能/禁止
PWM_PCR47_CH5INV = 10,//PWM定时器5反向打开/关闭
PWM_PCR47_CH5MOD = 11,//PWM定时器5自动重载/单触发模式选择
PWM_PCR47_CH6EN = 16,//PWM定时器6使能/禁止
PWM_PCR47_CH6INV = 18,//PWM定时器6反向打开/关闭
PWM_PCR47_CH6MOD = 19,//PWM定时器6自动重载/单触发模式选择
PWM_PCR47_CH7EN = 24,//PWM定时器7使能/禁止
PWM_PCR47_CH7INV = 26,//PWM定时器7反向打开/关闭
PWM_PCR47_CH7MOD = 27,//PWM定时器7自动重载/单触发模式选择
}NU_PWM_PCR47_ENUM;
typedef struct
{
__IO NU_REG CH4EN:1;
__I NU_REG RESERVE0:1;
__IO NU_REG CH4INV:1;
__IO NU_REG CH4MOD:1;
__IO NU_REG DZEN45:1;
__IO NU_REG DZEN67:1;
__I NU_REG RESERVE1:2;
__IO NU_REG CH5EN:1;
__I NU_REG RESERVE2:1;
__IO NU_REG CH5INV:1;
__IO NU_REG CH5MOD:1;
__I NU_REG RESERVE3:4;
__IO NU_REG CH6EN:1;
__I NU_REG RESERVE4:1;
__IO NU_REG CH6INV:1;
__IO NU_REG CH6MOD:1;
__I NU_REG RESERVE5:4;
__IO NU_REG CH7EN:1;
__I NU_REG RESERVE6:1;
__IO NU_REG CH7INV:1;
__IO NU_REG CH7MOD:1;
__I NU_REG RESERVE7:4;
}NU_PWM_PCR47_Bits;
typedef volatile union
{
NU_REG Regs;
NU_PWM_PCR47_Bits Bits;
}NU_PWM_PCR47_T;
//----------------------------------------------------//
typedef enum
{
PWM_PBCR_BCn = 0
}NU_PWM_PBCR_NUM;
typedef volatile union
{
NU_REG Regs;
PWM_PBCR_T Bits;
}NU_PWM_PBCR_T;
//----------------------------------------------------//
typedef enum
{
PWM_PIER_PWMIE0 = 0,//PWM定时器0中断使能
PWM_PIER_PWMIE1 = 1,//PWM定时器1中断使能
PWM_PIER_PWMIE2 = 2,//PWM定时器2中断使能
PWM_PIER_PWMIE3 = 3 //PWM定时器3中断使能
}NU_PWM_PIER_NUM;
typedef enum
{
PWM_PIER03_PWMIE0 = 0,//PWM定时器0中断使能
PWM_PIER03_PWMIE1 = 1,//PWM定时器1中断使能
PWM_PIER03_PWMIE2 = 2,//PWM定时器2中断使能
PWM_PIER03_PWMIE3 = 3 //PWM定时器3中断使能
}NU_PWM_PIER03_NUM;
typedef volatile union
{
NU_REG Regs;
PWM_PIER_T Bits;
}NU_PWM_PIER_T;
//----------------------------------------------------//
typedef enum
{
PWM_PIER47_PWMIE4 = 0,//PWM定时器4中断使能
PWM_PIER47_PWMIE5 = 1,//PWM定时器5中断使能
PWM_PIER47_PWMIE6 = 2,//PWM定时器6中断使能
PWM_PIER47_PWMIE7 = 3 //PWM定时器7中断使能
}NU_PWM_PIER47_NUM;
typedef struct
{
__IO NU_REG PWMIE4:1;
__IO NU_REG PWMIE5:1;
__IO NU_REG PWMIE6:1;
__IO NU_REG PWMIE7:1;
__I NU_REG RESERVE:28;
}NU_PWM_PIER47_Bits;
typedef volatile union
{
NU_REG Regs;
NU_PWM_PIER47_Bits Bits;
}NU_PWM_PIER47_T;
//----------------------------------------------------//
typedef enum
{
PWM_PIIR_PWMIF0 = 0,//PWM定时器0中断标志
PWM_PIIR_PWMIF1 = 1,//PWM定时器1中断标志
PWM_PIIR_PWMIF2 = 2,//PWM定时器2中断标志
PWM_PIIR_PWMIF3 = 3 //PWM定时器3中断标志
}NU_PWM_PIIR_NUM;
typedef enum
{
PWM_PIIR03_PWMIF0 = 0,//PWM定时器0中断标志
PWM_PIIR03_PWMIF1 = 1,//PWM定时器1中断标志
PWM_PIIR03_PWMIF2 = 2,//PWM定时器2中断标志
PWM_PIIR03_PWMIF3 = 3 //PWM定时器3中断标志
}NU_PWM_PIIR03_NUM;
typedef volatile union
{
NU_REG Regs;
PWM_PIIR_T Bits;
}NU_PWM_PIIR_T;
//----------------------------------------------------//
typedef enum
{
PWM_PIIR47_PWMIF4 = 0,//PWM定时器4中断标志
PWM_PIIR47_PWMIF5 = 1,//PWM定时器5中断标志
PWM_PIIR47_PWMIF6 = 2,//PWM定时器6中断标志
PWM_PIIR47_PWMIF7 = 3 //PWM定时器7中断标志
}NU_PWM_PIIR47_NUM;
typedef struct
{
__IO NU_REG PWMIF5:1;
__IO NU_REG PWMIF6:1;
__IO NU_REG PWMIF7:1;
__IO NU_REG PWMIF8:1;
__I NU_REG RESERVE:28;
}NU_PWM_PIIR47_Bits;
typedef volatile union
{
NU_REG Regs;
NU_PWM_PIIR47_Bits Bits;
}NU_PWM_PIIR47_T;
//----------------------------------------------------//
typedef enum
{
PWM_CCR0_INV0 = 0,//通道0反向打开/关闭
PWM_CCR0_CRL_IE0 = 1,//通道0向上计数中断使能
PWM_CCR0_CFL_IE0 = 2,//通道0向下计数中断使能
PWM_CCR0_CAPCH0EN = 3,//捕捉器通道0传输使能/禁止
PWM_CCR0_CAPIF0 = 4,//捕捉器0中断标志
PWM_CCR0_CRLRI0 = 6,//捕捉器通道0传输使能/禁止
PWM_CCR0_CFLRI0 = 7,//CFLR0锁定方向标志位
PWM_CCR0_INV1 = 16,//通道1反向打开/关闭
PWM_CCR0_CRL_IE1 = 17,//通道1向上计数中断使能
PWM_CCR0_CFL_IE1 = 18,//通道1向下计数中断使能
PWM_CCR0_CAPCH1EN = 19,//捕捉器通道1传输使能/禁止
PWM_CCR0_CAPIF1 = 20,//捕捉器1中断标志
PWM_CCR0_CRLRI1 = 22,//CRLR1锁定方向标志位
PWM_CCR0_CFLRI1 = 23//CFLR1锁定方向标志位
}NU_PWM_CCR0_NUM;
typedef volatile union
{
NU_REG Regs;
PWM_CCR0_T Bits;
}NU_PWM_CCR0_T;
//----------------------------------------------------//
typedef enum
{
PWM_CCR4_INV4 = 0,//通道4反向打开/关闭
PWM_CCR4_CRL_IE4 = 1,//通道4向上计数中断使能
PWM_CCR4_CFL_IE4 = 2,//通道4向下计数中断使能
PWM_CCR4_CAPCH4EN = 3,//捕捉器通道4传输使能/禁止
PWM_CCR4_CAPIF4 = 4,//捕捉器4中断标志
PWM_CCR4_CRLRI4 = 6,//捕捉器通道4传输使能/禁止
PWM_CCR4_CFLRI4 = 7,//CFLR4锁定方向标志位
PWM_CCR4_INV5 = 16,//通道5反向打开/关闭
PWM_CCR4_CRL_IE5 = 17,//通道5向上计数中断使能
PWM_CCR4_CFL_IE5 = 18,//通道5向下计数中断使能
PWM_CCR4_CAPCH5EN = 19,//捕捉器通道1传输使能/禁止
PWM_CCR4_CAPIF5 = 20,//捕捉器5中断标志
PWM_CCR4_CRLRI5 = 22,//CRLR5锁定方向标志位
PWM_CCR4_CFLRI5 = 23//CFLR5锁定方向标志位
}NU_PWM_CCR4_NUM;
typedef struct
{
__IO NU_REG INV4:1;
__IO NU_REG CRL_IE4:1;
__IO NU_REG CFL_IE4:1;
__IO NU_REG CAPCH4EN:1;
__IO NU_REG CAPIF4:1;
__I NU_REG RESERVE4:1;
__IO NU_REG CRLRI4:1;
__IO NU_REG CFLRI4:1;
__I NU_REG RESERVE1:8;
__IO NU_REG INV5:1;
__IO NU_REG CRL_IE5:1;
__IO NU_REG CFL_IE5:1;
__IO NU_REG CAPCH5EN:1;
__IO NU_REG CAPIF5:1;
__I NU_REG RESERVE2:1;
__IO NU_REG CRLRI5:1;
__IO NU_REG CFLRI5:1;
__I NU_REG RESERVE3:8;
}NU_PWM_CCR4_Bits;
typedef volatile union
{
NU_REG Regs;
NU_PWM_CCR4_Bits Bits;
}NU_PWM_CCR4_T;
//----------------------------------------------------//
typedef enum
{
PWM_CCR2_INV2 = 0,//通道2反向打开/关闭
PWM_CCR2_CRL_IE2 = 1,//通道2向上计数中断使能
PWM_CCR2_CFL_IE2 = 2,//通道2向下计数中断使能
PWM_CCR2_CAPCH2EN = 3,//捕捉器通道2传输使能/禁止
PWM_CCR2_CAPIF2 = 4,//捕捉器2中断标志
PWM_CCR2_CRLRI2 = 6,//CRLR2锁定方向标志位
PWM_CCR2_CFLRI2 = 7,//CFLR2锁定方向标志位
PWM_CCR2_INV3 = 16,//通道3反向打开/关闭
PWM_CCR2_CRL_IE3 = 17,//通道3向上计数中断使能
PWM_CCR2_CFL_IE3 = 18,//通道3向下计数中断使能
PWM_CCR2_CAPCH3EN = 19,//捕捉器通道3传输使能/禁止
PWM_CCR2_CAPIF3 = 20,//捕捉器3中断标志
PWM_CCR2_CRLRI3 = 22,//CRLR3锁定方向标志位
PWM_CCR2_CFLRI3 = 23//CFLR3锁定方向标志位
}NU_PWM_CCR2_NUM;
typedef volatile union
{
NU_REG Regs;
PWM_CCR2_T Bits;
}NU_PWM_CCR2_T;
//----------------------------------------------------//
typedef enum
{
PWM_CCR6_INV6 = 0,//通道6反向打开/关闭
PWM_CCR6_CRL_IE6 = 1,//通道6向上计数中断使能
PWM_CCR6_CFL_IE6 = 2,//通道6向下计数中断使能
PWM_CCR6_CAPCH6EN = 3,//捕捉器通道6传输使能/禁止
PWM_CCR6_CAPIF6 = 4,//捕捉器6中断标志
PWM_CCR6_CRLRI6 = 6,//捕捉器通道6传输使能/禁止
PWM_CCR6_CFLRI6 = 7,//CFLR6锁定方向标志位
PWM_CCR6_INV7 = 16,//通道7反向打开/关闭
PWM_CCR6_CRL_IE7 = 17,//通道7向上计数中断使能
PWM_CCR6_CFL_IE7 = 18,//通道7向下计数中断使能
PWM_CCR6_CAPCH7EN = 19,//捕捉器通道7传输使能/禁止
PWM_CCR6_CAPIF7 = 20,//捕捉器7中断标志
PWM_CCR6_CRLRI7 = 22,//CRLR7锁定方向标志位
PWM_CCR6_CFLRI7 = 23//CFLR7锁定方向标志位
}NU_PWM_CCR6_NUM;
typedef struct
{
__IO NU_REG INV6:1;
__IO NU_REG CRL_IE6:1;
__IO NU_REG CFL_IE6:1;
__IO NU_REG CAPCH6EN:1;
__IO NU_REG CAPIF6:1;
__I NU_REG RESERVE4:1;
__IO NU_REG CRLRI6:1;
__IO NU_REG CFLRI6:1;
__I NU_REG RESERVE1:8;
__IO NU_REG INV7:1;
__IO NU_REG CRL_IE7:1;
__IO NU_REG CFL_IE7:1;
__IO NU_REG CAPCH7EN:1;
__IO NU_REG CAPIF7:1;
__I NU_REG RESERVE2:1;
__IO NU_REG CRLRI7:1;
__IO NU_REG CFLRI7:1;
__I NU_REG RESERVE3:8;
}NU_PWM_CCR6_Bits;
typedef volatile union
{
NU_REG Regs;
NU_PWM_CCR6_Bits Bits;
}NU_PWM_CCR6_T;
//----------------------------------------------------//
typedef enum
{
PWM_POE_PWM0 = 0,//PWM0输出使能寄存器
PWM_POE_PWM1 = 1,//PWM1输出使能寄存器
PWM_POE_PWM2 = 2,//PWM2输出使能寄存器
PWM_POE_PWM3 = 3 //PWM3输出使能寄存器
}NU_PWM_POE_NUM;
typedef enum
{
PWM_POE03_PWM0 = 0,//PWM0输出使能寄存器
PWM_POE03_PWM1 = 1,//PWM1输出使能寄存器
PWM_POE03_PWM2 = 2,//PWM2输出使能寄存器
PWM_POE03_PWM3 = 3 //PWM3输出使能寄存器
}NU_PWM_POE03_NUM;
typedef volatile union
{
NU_REG Regs;
PWM_POE_T Bits;
}NU_PWM_POE_T;
//----------------------------------------------------//
typedef enum
{
PWM_POE47_PWM4 = 0,//PWM4输出使能寄存器
PWM_POE47_PWM5 = 1,//PWM5输出使能寄存器
PWM_POE47_PWM6 = 2,//PWM6输出使能寄存器
PWM_POE47_PWM7 = 3 //PWM7输出使能寄存器
}NU_PWM_POE47_NUM;
typedef struct
{
__IO NU_REG PWM4:1;
__IO NU_REG PWM5:1;
__IO NU_REG PWM6:1;
__IO NU_REG PWM7:1;
__I NU_REG RESERVE:28;
}NU_PWM_POE47_Bits;
typedef volatile union
{
NU_REG Regs;
NU_PWM_POE47_Bits Bits;
}NU_PWM_POE47_T;
//----------------------------------------------------//
typedef enum
{
PWM_CAPENR03_PWM0_PA12 = 0,//捕捉通道0从GPA12输入
PWM_CAPENR03_PWM1_PA13 = 1,//捕捉通道1从GPA13输入
PWM_CAPENR03_PWM2_PA14 = 2,//捕捉通道3从GPA14输入
PWM_CAPENR03_PWM3_PA15 = 3 //捕捉通道4从GPA15输入
}NU_PWM_CAPENR03_NUM;
typedef struct
{
__IO NU_REG PWM0_PA12:1;
__IO NU_REG PWM1_PA13:1;
__IO NU_REG PWM2_PA14:1;
__IO NU_REG PWM3_PA15:1;
__I NU_REG RESERVE:28;
}NU_PWM_CAPENR03_Bits;
typedef volatile union
{
NU_REG Regs;
NU_PWM_CAPENR03_Bits Bits;
}NU_PWM_CAPENR03_T;
//----------------------------------------------------//
typedef enum
{
PWM_CAPENR47_PWM4_PA11 = 0,//捕捉通道4从GPA11输入
PWM_CAPENR47_PWM5_PA5 = 1,//捕捉通道5从GPA5输入
PWM_CAPENR47_PWM6_PA0 = 2,//捕捉通道6从GPA0输入
PWM_CAPENR47_PWM7_PA1 = 3 //捕捉通道7从GPA1输入
}NU_PWM_CAPENR47_NUM;
typedef struct
{
__IO NU_REG PWM4_PA11:1;
__IO NU_REG PWM5_PA5:1;
__IO NU_REG PWM6_PA0:1;
__IO NU_REG PWM7_PA1:1;
__I NU_REG RESERVE:28;
}NU_PWM_CAPENR47_Bits;
typedef volatile union
{
NU_REG Regs;
NU_PWM_CAPENR47_Bits Bits;
}NU_PWM_CAPENR47_T;
//----------------------------------------------------//
typedef struct
{
union{
__IO NU_PWM_PPR_T PPR;//PWM0~3或PWM4~7预分频寄存器
__IO NU_PWM_PPR_T PPR03;//PWM0~3预分频寄存器
__IO NU_PWM_PPR47_T PPR47;//PWM4~7预分频寄存器
};
union{
__IO NU_PWM_CSR_T CSR;//PWM0~3或PWM4~7时钟选择寄存器
__IO NU_PWM_CSR_T CSR03;//PWM0~3时钟选择寄存器
__IO NU_PWM_CSR47_T CSR47;//PWM4~7时钟选择寄存器
};
union{
__IO NU_PWM_PCR_T PCR;//PWM0~3或PWM4~7控制寄存器
__IO NU_PWM_PCR_T PCR03;//PWM0~3控制寄存器
__IO NU_PWM_PCR47_T PCR47;//PWM4~7控制寄存器
};
union{
__IO NU_REG_BITs CNR0;//PWM0计数器寄存器
__IO NU_REG_BITs CNR4;//PWM4计数器寄存器
};
union{
__IO NU_REG_BITs CMR0;//PWM0比较寄存器
__IO NU_REG_BITs CMR4;//PWM4比较寄存器
};
union{
__IO NU_REG_BITs PDR0;//PWM0数据寄存器
__IO NU_REG_BITs PDR4;//PWM4数据寄存器
};
union{
__IO NU_REG_BITs CNR1;//PWM1计数器寄存器
__IO NU_REG_BITs CNR5;//PWM5计数器寄存器
};
union{
__IO NU_REG_BITs CMR1;//PWM1比较寄存器
__IO NU_REG_BITs CMR5;//PWM5比较寄存器
};
union{
__IO NU_REG_BITs PDR1;//PWM1数据寄存器
__IO NU_REG_BITs PDR5;//PWM5数据寄存器
};
union{
__IO NU_REG_BITs CNR2;//PWM2计数器寄存器
__IO NU_REG_BITs CNR6;//PWM6计数器寄存器
};
union{
__IO NU_REG_BITs CMR2;//PWM2比较寄存器
__IO NU_REG_BITs CMR6;//PWM6比较寄存器
};
union{
__IO NU_REG_BITs PDR2;//PWM2数据寄存器
__IO NU_REG_BITs PDR6;//PWM6数据寄存器
};
union{
__IO NU_REG_BITs CNR3;//PWM3计数器寄存器
__IO NU_REG_BITs CNR7;//PWM7计数器寄存器
};
union{
__IO NU_REG_BITs CMR3;//PWM3比较寄存器
__IO NU_REG_BITs CMR7;//PWM7比较寄存器
};
union{
__IO NU_REG_BITs PDR3;//PWM3数据寄存器
__IO NU_REG_BITs PDR7;//PWM7数据寄存器
};
__IO NU_PWM_PBCR_T PBCR;
union{
__IO NU_PWM_PIER_T PIER;//PWM0~3或PWM4~7中断使能寄存器
__IO NU_PWM_PIER_T PIER03;//PWM0~3中断使能寄存器
__IO NU_PWM_PIER47_T PIER47;//PWM4~7中断使能寄存器
};
union{
__IO NU_PWM_PIIR_T PIIR;//PWM0~3或PWM4~7中断标志寄存器
__IO NU_PWM_PIIR_T PIIR03;//PWM0~3中断标志寄存器
__IO NU_PWM_PIIR47_T PIIR47;//PWM4~7中断标志寄存器
__IO NU_PWM_PIIR_T PIFR;//PWM0~3或PWM4~7中断标志寄存器
__IO NU_PWM_PIIR_T PIFR03;//PWM0~3中断标志寄存器
__IO NU_PWM_PIIR47_T PIFR47;//PWM4~7中断标志寄存器
};
__I NU_REG RESERVE1[2];
union{
__IO NU_PWM_CCR0_T CCR0;//捕捉控制寄存器01
__IO NU_PWM_CCR4_T CCR4;//捕捉控制寄存器45
__IO NU_PWM_CCR0_T CCR1;//捕捉控制寄存器01
__IO NU_PWM_CCR4_T CCR5;//捕捉控制寄存器45
__IO NU_PWM_CCR0_T CCR01;//捕捉控制寄存器01
__IO NU_PWM_CCR4_T CCR45;//捕捉控制寄存器45
};
union{
__IO NU_PWM_CCR2_T CCR2;//捕捉控制寄存器23
__IO NU_PWM_CCR6_T CCR6;//捕捉控制寄存器67
__IO NU_PWM_CCR2_T CCR3;//捕捉控制寄存器23
__IO NU_PWM_CCR6_T CCR7;//捕捉控制寄存器67
__IO NU_PWM_CCR2_T CCR23;//捕捉控制寄存器23
__IO NU_PWM_CCR6_T CCR67;//捕捉控制寄存器67
};
union{
__IO NU_REG_BITs CRLR0;//捕捉上升沿锁存寄存器0
__IO NU_REG_BITs CRLR4;//捕捉上升沿锁存寄存器4
};
union{
__IO NU_REG_BITs CFLR0;//捕捉下降沿锁存寄存器0
__IO NU_REG_BITs CFLR4;//捕捉下降沿锁存寄存器4
};
union{
__IO NU_REG_BITs CRLR1;//捕捉上升沿锁存寄存器1
__IO NU_REG_BITs CRLR5;//捕捉上升沿锁存寄存器5
};
union{
__IO NU_REG_BITs CFLR1;//捕捉下降沿锁存寄存器1
__IO NU_REG_BITs CFLR5;//捕捉下降沿锁存寄存器5
};
union{
__IO NU_REG_BITs CRLR2;//捕捉上升沿锁存寄存器2
__IO NU_REG_BITs CRLR6;//捕捉上升沿锁存寄存器6
};
union{
__IO NU_REG_BITs CFLR2;//捕捉下降沿锁存寄存器2
__IO NU_REG_BITs CFLR6;//捕捉下降沿锁存寄存器6
};
union{
__IO NU_REG_BITs CRLR3;//捕捉上升沿锁存寄存器3
__IO NU_REG_BITs CRLR7;//捕捉上升沿锁存寄存器7
};
union{
__IO NU_REG_BITs CFLR3;//捕捉下降沿锁存寄存器3
__IO NU_REG_BITs CFLR7;//捕捉下降沿锁存寄存器7
};
union{
__IO NU_REG_BITs CAPENR;//捕捉输入使能寄存器
__IO NU_PWM_CAPENR03_T CAPENR03;//捕捉输入03使能寄存器
__IO NU_PWM_CAPENR47_T CAPENR47;//捕捉输入47使能寄存器
};
union{
__IO NU_PWM_POE_T POE;//PWM输出使能寄存器
__IO NU_PWM_POE_T POE03;//PWM输出03使能寄存器
__IO NU_PWM_POE47_T POE47;//PWM输出47使能寄存器
};
}NU_PWM_T;
//----------------------------------------------------//
#define PWM03s (*((NU_PWM_T *) PWMA_BASE))//定位全局结构变量PWM03s
#define PWM47s (*((NU_PWM_T *) PWMB_BASE))//定位全局结构变量PWM47s
//----------------------------------------------------//
#define PWM0s (*((NU_PWM_T *) PWMA_BASE))//定位全局结构变量PWM0s
#define PWM1s (*((NU_PWM_T *) PWMA_BASE))//定位全局结构变量PWM`s
#define PWM2s (*((NU_PWM_T *) PWMA_BASE))//定位全局结构变量PWM2s
#define PWM3s (*((NU_PWM_T *) PWMA_BASE))//定位全局结构变量PWM3s
#define PWM4s (*((NU_PWM_T *) PWMB_BASE))//定位全局结构变量PWM4s
#define PWM5s (*((NU_PWM_T *) PWMB_BASE))//定位全局结构变量PWM5s
#define PWM6s (*((NU_PWM_T *) PWMB_BASE))//定位全局结构变量PWM6s
#define PWM7s (*((NU_PWM_T *) PWMB_BASE))//定位全局结构变量PWM7s
//----------------------------------------------------//
#define PWMx(x) ((NU_PWM_T *) PWMA_BASE + ((x >> 4) * 0x100000))
//----------------------------------------------------// |
|