• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

关于STM32 NVIC 中断优先级分组 谁知道 为什么

平凡心飞翔 2018-07-12 浏览量:1470

谁知道 为什么 NVIC设置 中断优先级分组时   SCB->AIRCR 要或上 0X05FA0000;  吗???


捕获.PNG捕1获.PNG

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • SCB_AIRCR是应用中断和复位控制寄存器,[31:16]位是识别码,用以保护此寄存器不会被意外修改。写入时,要写0x05FA到 [31:16],否则写入将被忽略
    • 发布于 2018-07-13
    • 举报
    • 评论 2
    • 0
    • 0
平凡心飞翔 回复了 捷波:原来是这样 好 回复
捷波 回复了 平凡心飞翔:感觉有用的话,选为最佳答案吧!谢谢! 回复

其他答案 数量:7
  • 0x05FA0000   =  0000 0101    1111 1010    0000 0000   0000 0000


    你设置的的优先级组 值  与 0x05FA0000  按位或关系。

    也就是说,你只能修改bit值为0 的位,

    bit值为1 的,不论你设置的是1 还是0 最后与MASK或关系之后,都为1.



    • 发布于2018-07-13
    • 举报
    • 评论 1
    • 0
    • 0
平凡心飞翔 回复了 川楠 :后来去查了 context 手册找到答案了 谢谢 回复

  • 内核规定就是这样的,必须这样操作。


    AIRCR这个寄存器是STM32的内核cm3内部的寄存器,所以在stm32的参考手册上是没有的。你查不到。在cm3的权威指南手册上就有的。

    0x05FA 是访问钥匙:任何对该寄存器的写操作,都必须同时把 0x05FA 写入此段,否则写操作被忽略。若读取此半字,则 0xFA05。

    你看看cm3权威指南手册的第112页。

    QQ截图20180715114028.png

    • 发布于2018-07-15
    • 举报
    • 评论 2
    • 0
    • 0
平凡心飞翔 回复了 奔跑的黑蚂蚁 :对 谢谢后来我去查了下 就是这样 回复
奔跑的黑蚂蚁 回复了 奔跑的黑蚂蚁 :那不给个最佳么? 回复

  • 根据数据手册,stm32就是要先分组再进行操作的,这个是官方规定
    • 发布于2018-07-23
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个是内核规定的,用户必须这样操作
    • 发布于2018-07-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 官方规定你必须写,否则会忽略写操作
    • 发布于2018-07-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 这种是寄存器操作要求的,具体为什么要查寄存器手册了
    • 发布于2018-07-28
    • 举报
    • 评论 0
    • 0
    • 0

  • 具体可以参阅stm32官方手册中对与外部中断配置位的要求,按照官方的规定来设置比较好。
    • 发布于2018-07-30
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

关于STM32 NVIC 中断优先级分组 谁知道 为什么