NVIC的大问题!

2019-03-23 18:33发布

我用的库中NVIC_Type是这样定义的:
typedef struct
        {
                __IO u32 ISER[8];                      /* 偏移: 0x000;  中断使能寄存器                 */
                                 u32 RESERVED0[24];                                   
                __IO u32 ICER[8];                      /* 偏移: 0x080;  中断清除使能寄存器             */
                                 u32 RSERVED1[24];                                    
                __IO u32 ISPR[8];                      /* 偏移: 0x100;  中断挂起寄存器                 */
                                 u32 RESERVED2[24];                                   
                __IO u32 ICPR[8];                      /* 偏移: 0x180;  中断清除挂起寄存器             */
                                 u32 RESERVED3[24];                                   
                __IO u32 IABR[8];                      /* 偏移: 0x200;  Interrupt Active bit Register  */
                                 u32 RESERVED4[56];                                   
                __IO u8  IP[240];                      /* 偏移: 0x300    中断优先级寄存器(8Bit wide)    */
                                 u32 RESERVED5[644];                                 
                __O  u32 STIR;                         /* 偏移: 0xE00    软件触发中断寄存器             */
        }  NVIC_Type;
而很多资料中的定义是
typedef struct
{
vu32 ISER[2];
u32 RESERVED0[30];
vu32 ICER[2];
u32 RSERVED1[30];
vu32 ISPR[2];
u32 RESERVED2[30];
vu32 ICPR[2];
u32 RESERVED3[30];
vu32 IABR[2];
u32 RESERVED4[62];
vu32 IPR[15];
}
那么可以看出前者的中断优先级寄存器,每个中断占用四个字节(32bit),后者占用一个字节。那么前者的32bit怎么用呢?那四位值还在[10:8]的位置上吗?

此帖出自小平头技术问答
0条回答

一周热门 更多>