[技术问答] M0中断使能控制寄存器

[复制链接]
1393|8
 楼主| forget345 发表于 2015-6-5 21:40 | 显示全部楼层 |阅读模式
static __INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
{
  NVIC->ISER[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* enable interrupt */
}
为什么 NVIC->ISER[0] 不需要或操作?直接等于不会影响别的中断吗?是应为ISER 定义为数组的原因?为何?具体如何实现?
戈卫东 发表于 2015-6-6 07:00 | 显示全部楼层
这些寄存器是写1有效,写0无效——其它“Set”寄存器也都这样
 楼主| forget345 发表于 2015-6-6 09:04 | 显示全部楼层
正解是 清除中断使能是另一个寄存器
gaoyang9992006 发表于 2015-6-6 09:17 | 显示全部楼层
这个就这样实现的,想具体了解你就要把这几个寄存器都画出来然后试试各种情况下如何。
奥德赛 发表于 2015-6-6 21:08 | 显示全部楼层
就是这样写啊,直接等于貌似会有影响啊
小猫爱吃鱼 发表于 2015-6-9 23:24 | 显示全部楼层
我看了开始也不是太明白,后来慢慢就明白了
芙蓉洞 发表于 2015-6-10 08:36 | 显示全部楼层
试了一下,加不加或对别的都没有影响
gaoyang9992006 发表于 2015-6-11 16:44 | 显示全部楼层
这种方法写程序简单多了。
mintspring 发表于 2015-6-14 11:46 | 显示全部楼层
直接操作可能会影响到其他的功能吧,另外这个操作更直观。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

96

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部