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

2019-12-17 21:27发布

本帖最后由 陳聖文 于 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 STM32F030-F4_DATASHEET_779.pdf (11.46 MB, 下载次数: 3) 2018-10-12 17:39 上传 点击文件名下载附件
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
Error.Dan
1楼-- · 2019-12-17 23:56
NVIC本质上是CM0内核组件,所以就是找资料也应该是去ARM找,而不是ST。虽然大部分单片机的手册都会提一嘴子NVIC的内容,因为太重要了。

具体这个问题,太久不搞不能直接给你答案,但是我知道答案在哪里,就是CortexM0权威指南里面。
CM3的权威指南我是翻的的滚瓜烂熟,但是CM0内核还是有些不一样的,建议自己去看~
mangolu
2楼-- · 2019-12-18 04:11
 精彩回答 2  元偷偷看……
mangolu
3楼-- · 2019-12-18 04:37
不好意思,上面鼠标定位错,是core_cm0.h这个文件里定义。
Eric_Xue
4楼-- · 2019-12-18 09:28
可以参考附件文档,希望有用
陳聖文
5楼-- · 2019-12-18 12:33
mangolu 发表于 2018-10-12 19:21
NVIC是cortex内核定义的,stm32使用了其中一部份。

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

唔...
最主要還是想知道這裡面每個BITS是做啥的
陳聖文
6楼-- · 2019-12-18 13:19
Eric_Xue 发表于 2018-10-14 10:44
可以参考附件文档,希望有用


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

一周热门 更多>