OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7076|回复: 6

关于NVIC相关的寄存器NVIC_IPRx的register map

[复制链接]

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2015-7-31
在线时间
7 小时
发表于 2015-10-1 12:06:50 | 显示全部楼层 |阅读模式
5金钱
NVIC_IPRx的偏移地址是Address offset: 0x00- 0x0B,但是为什么下面的map显示有20个32位寄存器,这么多个是怎么寻址的?下面的那段说明看的不是很明白,望大神指教,关于NVIC相关的寄存器操作学习方面能够有什么心得和建议不吝跟本鸟分享下吗,求?!

最佳答案

查看完整内容[请看2#楼]

回复【4楼】alonejhon: --------------------------------- 因为并没有用到这么多空间。 已便后续添加其他新的寄存器进来。 这叫未雨绸缪,谁知道以后会不会增加?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-10-1 12:06:51 | 显示全部楼层
回复【4楼】alonejhon:
---------------------------------
因为并没有用到这么多空间。
已便后续添加其他新的寄存器进来。

这叫未雨绸缪,谁知道以后会不会增加?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-10-1 23:03:18 | 显示全部楼层
没接触过,帮顶......
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2015-7-31
在线时间
7 小时
 楼主| 发表于 2015-10-2 10:40:33 | 显示全部楼层
__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
{
  if(IRQn < 0) {
    SCB->SHP[((uint32_t)(IRQn) & 0xF)-4] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff); } /* set riority for Cortex-M  System Interrupts */
  else {
    NVIC->IP[(uint32_t)(IRQn)] = ((priority << (8 - __NVIC_PRIO_BITS)) & 0xff);    }        /* set riority for device specific Interrupts  */
}

core_cm4.h里的这段程序该怎么理解呢?
回复

使用道具 举报

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2015-7-31
在线时间
7 小时
 楼主| 发表于 2015-10-2 10:42:01 | 显示全部楼层
typedef struct
{
  __IO uint32_t ISER[8];                 /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register           */
       uint32_t RESERVED0[24];
  __IO uint32_t ICER[8];                 /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register         */
       uint32_t RSERVED1[24];
  __IO uint32_t ISPR[8];                 /*!< Offset: 0x100 (R/W)  Interrupt Set ending Register          */
       uint32_t RESERVED2[24];
  __IO uint32_t ICPR[8];                 /*!< Offset: 0x180 (R/W)  Interrupt Clear ending Register        */
       uint32_t RESERVED3[24];
  __IO uint32_t IABR[8];                 /*!< Offset: 0x200 (R/W)  Interrupt Active bit Register           */
       uint32_t RESERVED4[56];
  __IO uint8_t  IP[240];                 /*!< Offset: 0x300 (R/W)  Interrupt riority Register (8Bit wide) */
       uint32_t RESERVED5[644];
  __O  uint32_t STIR;                    /*!< Offset: 0xE00 ( /W)  Software Trigger Interrupt Register     */
}  NVIC_Type;
为什么要在这个结构体里保留这么多空间?求大神指教!
回复

使用道具 举报

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2015-7-31
在线时间
7 小时
 楼主| 发表于 2015-10-2 10:43:21 | 显示全部楼层
大神只需轻轻一点,本鸟受益匪浅
回复

使用道具 举报

6

主题

20

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2015-7-31
在线时间
7 小时
 楼主| 发表于 2015-10-7 16:54:15 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
我也这么想,谢过原子哥
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-25 09:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表