打印
[信息]

stm全局中断问题

[复制链接]
8689|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上,强烈不建议关闭全局中断。

使用特权

评论回复
5
高建明| | 2012-2-20 12:36 | 只看该作者
难道上电初始化也不用关吗?

使用特权

评论回复
6
wanghaibo1026|  楼主 | 2012-2-20 12:52 | 只看该作者
我只是在初始化开始时,关闭全局中断(__set_PRIMASK(1),
), 初始化结束后,开全局中断(__set_PRIMASK(0);
),这样操作是否可以?

使用特权

评论回复
7
wanghaibo1026|  楼主 | 2012-2-20 12:55 | 只看该作者
对于这种全局中断操作的不利影响真的不是很清楚,还请香版主指点一下,谢谢!!!

使用特权

评论回复
8
香水城| | 2012-2-20 13:27 | 只看该作者
难道上电初始化也不用关吗?
高建明 发表于 2012-2-20 12:36


上电初始化的时候,默认就是关中断,不必再多此一举。

使用特权

评论回复
9
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里面声明的   必须要引用这个头文件的

使用特权

评论回复
10
kekeke| | 2014-12-29 21:13 | 只看该作者

在STM32上,强烈不建议关闭全局中断

使用特权

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

本版积分规则

18

主题

68

帖子

1

粉丝