[信息] stm全局中断问题

[复制链接]
9952|9
 楼主| wanghaibo1026 发表于 2012-2-18 13:53 | 显示全部楼层 |阅读模式
STM, ic, rim, se, vi
在版内搜索了一下关于“stm全局中断问题”,得到的答案是利用固件库中函数NVIC_SETPRIMASK()和NVIC_RESETPRIMASK()来开关全局中断,于是继续寻找这两个函数,发现在两个函数在使stm32f10x_nvic.c中,但是我V3.0的库中只找到了有关的misc.c,但misc.c仍然没有“NVIC_SETPRIMASK()和NVIC_RESETPRIMASK()”这两个函数,于是继续寻找,发现一个帖子中,香版主说,这两个功能已经合并到core_cm3.c和core_cm3.h,于是看了一下,对应的宏定义__enable_irq()和__disable_irq(),但是这两文件在定义在ICC_AMR(IAR编译环境)下,如果我使用另外一个函数__set_PRIMASK(1) :是不是关全局中断,__set_PRIMASK(0)是不是开全局中断,能否这样使用,请大家帮忙看一下!谢谢!!
 楼主| wanghaibo1026 发表于 2012-2-18 15:32 | 显示全部楼层
自己顶一下,
 楼主| wanghaibo1026 发表于 2012-2-20 09:14 | 显示全部楼层
__set_PRIMASK(1),
__set_PRIMASK(0);
这样使用可否
香水城 发表于 2012-2-20 09:39 | 显示全部楼层
在STM32上,强烈不建议关闭全局中断。
高建明 发表于 2012-2-20 12:36 | 显示全部楼层
难道上电初始化也不用关吗?
 楼主| wanghaibo1026 发表于 2012-2-20 12:52 | 显示全部楼层
我只是在初始化开始时,关闭全局中断(__set_PRIMASK(1),
), 初始化结束后,开全局中断(__set_PRIMASK(0);
),这样操作是否可以?
 楼主| wanghaibo1026 发表于 2012-2-20 12:55 | 显示全部楼层
对于这种全局中断操作的不利影响真的不是很清楚,还请香版主指点一下,谢谢!!!
香水城 发表于 2012-2-20 13:27 | 显示全部楼层
难道上电初始化也不用关吗?
高建明 发表于 2012-2-20 12:36


上电初始化的时候,默认就是关中断,不必再多此一举。
sky8023 发表于 2014-11-17 15:44 | 显示全部楼层
这两个可以的:
__disable_irq();
__enable_irq();
static __INLINE void __enable_fault_irq()         { __ASM ("cpsie f"); }
static __INLINE void __disable_fault_irq()        { __ASM ("cpsid f"); }
是在core_cm3.h里面声明的   必须要引用这个头文件的
kekeke 发表于 2014-12-29 21:13 | 显示全部楼层

在STM32上,强烈不建议关闭全局中断
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

68

帖子

1

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