打印

STM32如何关所有中断????

[复制链接]
17819|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
rwdx|  楼主 | 2008-8-14 22:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32如何关所有中断????
沙发
fan_fan| | 2008-8-15 11:08 | 只看该作者

关所有中断

在ARM的一篇手册里有下面一段话是关于PRIMASK寄存器的,在ST提供的文件CortexM3_Macro.s文件中有对这个寄存器操作的宏定义。

使用特权

评论回复
板凳
香水城| | 2008-8-15 11:20 | 只看该作者

STM32没有关闭所有中断的概念,但~~~~~~~

STM32没有关闭所有中断的概念,但可以通过提高CPU响应中断的优先级别达到相同的目的。因为STM32(Cortex-M3)中具有中断嵌套优先级的概念,所以不建议通过变更CPU响应中断的优先级而屏蔽关闭所有中断,用户应该通过安排相应的中断优先级来达到屏蔽部分中断的目的。

使用特权

评论回复
地板
everbright| | 2008-8-15 11:44 | 只看该作者

使用汇编如下

CPU_IntDis
        CPSID   I
        BX      LR

使用特权

评论回复
5
香水城| | 2008-8-15 12:14 | 只看该作者

再次强调,不建议使用这种关断所有中断的管理方式

这是沿用了8051的概念,在STM32的环境中这是一种很不好的管理方式。

使用特权

评论回复
6
rwdx|  楼主 | 2008-8-15 12:55 | 只看该作者

re

to 香水城:
    我现在是要在用户程序模式下关断中断,不是在中断处理程序中,使用中断优先级的方式能实现吗?
    使用另外几个朋友的那种方式在stm32环境中是否会导致什么问题发生?

使用特权

评论回复
7
香水城| | 2008-8-15 14:07 | 只看该作者

5楼提供的方法就是通过提高CPU的中断响应优先级实现的关断

这几个操作是把CPU的中断响应优先级提高到-1和-2,因为没有任何中断的优先级高于0,所以这几个操作可以关断所有中断: 

CPSID I ;PRIMASK=1, ;关中断
CPSIE I ;PRIMASK=0, ;开中断
CPSID F ;FAULTMASK=1, ;关异常
CPSIE F ;FAULTMASK=0 ;开异常

使用特权

评论回复
8
yongwong9901| | 2017-12-1 10:21 | 只看该作者
mark!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

85

帖子

1

粉丝