搜索
bottom↓
回复: 8

有關STM32F0的NVIC問題(跟中斷有關)

[复制链接]

出0入0汤圆

发表于 2018-10-12 17:40:17 | 显示全部楼层 |阅读模式
本帖最后由 陳聖文 于 2018-10-12 17:41 编辑

小弟正在研究NVIC
以下有兩條程式我無法在DATASHEET上找到他的相關資料
有關NVIC的相關寄存器
以下是紅字的寄存器就是無法在DATASHEET上找到的

  1. //設定其優先權
  2. __STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
  3. {
  4.   if((int32_t)(IRQn) < 0) {
  5.     SCB->SHP[_SHP_IDX(IRQn)] = ((uint32_t)(SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
  6.        (((priority << (8 - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));
  7.   }
  8.   else {
  9.     NVIC->IP[_IP_IDX(IRQn)]  = ((uint32_t)(NVIC->IP[_IP_IDX(IRQn)]  & ~(0xFFUL << _BIT_SHIFT(IRQn))) |
  10.        (((priority << (8 - __NVIC_PRIO_BITS)) & (uint32_t)0xFFUL) << _BIT_SHIFT(IRQn)));
  11.   }
  12. }
复制代码

NVIC->IP


  1. //設定啟用
  2. __STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)//---------------------------------------------------------------------------
  3. {
  4.   NVIC->ISER[0] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
  5. }
复制代码

NVIC->ISER[0]

以下附上我所使用的DATASHEET

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入20汤圆

发表于 2018-10-12 18:54:41 | 显示全部楼层
NVIC本质上是CM0内核组件,所以就是找资料也应该是去ARM找,而不是ST。虽然大部分单片机的手册都会提一嘴子NVIC的内容,因为太重要了。

具体这个问题,太久不搞不能直接给你答案,但是我知道答案在哪里,就是CortexM0权威指南里面。
CM3的权威指南我是翻的的滚瓜烂熟,但是CM0内核还是有些不一样的,建议自己去看~

出0入0汤圆

发表于 2018-10-12 19:21:34 | 显示全部楼层
NVIC是cortex内核定义的,stm32使用了其中一部份。

可以在STM32F0xx_StdPeriph_Lib_V1.5.0这个标准库里找到:


如下:
  1. typedef struct
  2. {
  3.   __IO uint32_t ISER[1];                 /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register           */
  4.        uint32_t RESERVED0[31];
  5.   __IO uint32_t ICER[1];                 /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register          */
  6.        uint32_t RSERVED1[31];
  7.   __IO uint32_t ISPR[1];                 /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register           */
  8.        uint32_t RESERVED2[31];
  9.   __IO uint32_t ICPR[1];                 /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register         */
  10.        uint32_t RESERVED3[31];
  11.        uint32_t RESERVED4[64];
  12.   __IO uint32_t IP[8];                   /*!< Offset: 0x300 (R/W)  Interrupt Priority Register              */
  13. }  NVIC_Type;
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2018-10-12 19:24:47 | 显示全部楼层
不好意思,上面鼠标定位错,是core_cm0.h这个文件里定义。

出0入0汤圆

发表于 2018-10-14 10:44:43 | 显示全部楼层
可以参考附件文档,希望有用

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2018-10-15 08:47:32 | 显示全部楼层
mangolu 发表于 2018-10-12 19:21
NVIC是cortex内核定义的,stm32使用了其中一部份。

可以在STM32F0xx_StdPeriph_Lib_V1.5.0这个标准库里找 ...

唔...
最主要還是想知道這裡面每個BITS是做啥的

出0入0汤圆

 楼主| 发表于 2018-10-15 08:48:33 | 显示全部楼层
Eric_Xue 发表于 2018-10-14 10:44
可以参考附件文档,希望有用


感謝大大的分享
這正是我需要的

出0入0汤圆

发表于 2018-10-17 20:51:05 来自手机 | 显示全部楼层
看寄存器定义说明

出0入0汤圆

 楼主| 发表于 2018-10-18 09:26:41 | 显示全部楼层
huangqi412 发表于 2018-10-17 20:51
看寄存器定义说明

...
我實在不想吐槽
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-18 18:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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