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

[复制链接]
18982|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
香水城 发表于 2008-8-15 12:14 | 显示全部楼层

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

这是沿用了8051的概念,在STM32的环境中这是一种很不好的管理方式。
 楼主| rwdx 发表于 2008-8-15 12:55 | 显示全部楼层

re

to 香水城:
    我现在是要在用户程序模式下关断中断,不是在中断处理程序中,使用中断优先级的方式能实现吗?
    使用另外几个朋友的那种方式在stm32环境中是否会导致什么问题发生?
香水城 发表于 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 ;开异常
yongwong9901 发表于 2017-12-1 10:21 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

24

主题

85

帖子

1

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