打印
[信息]

能否这样使用

[复制链接]
800|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
supernan|  楼主 | 2015-9-29 20:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在版内搜索了一下关于“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)是不是开全局中断,能否这样使用,请大家帮忙看一下!谢谢!!
沙发
houcs| | 2015-9-29 20:52 | 只看该作者
没见过,帮你顶一下

使用特权

评论回复
板凳
supernan|  楼主 | 2015-9-29 20:52 | 只看该作者
__set_PRIMASK(1),
__set_PRIMASK(0);
这样使用可否

使用特权

评论回复
地板
liuzaiy| | 2015-9-29 20:53 | 只看该作者
在STM32上,强烈不建议关闭全局中断。

使用特权

评论回复
5
yinxiangh| | 2015-9-29 20:53 | 只看该作者
难道上电初始化也不用关吗?

使用特权

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

使用特权

评论回复
7
liuzaiy| | 2015-9-29 20:54 | 只看该作者
上电初始化的时候,默认就是关中断,不必再多此一举。

使用特权

评论回复
8
pangb| | 2015-9-29 20:54 | 只看该作者
这两个可以的:
__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里面声明的   必须要引用这个头文件的

使用特权

评论回复
9
supernan|  楼主 | 2015-9-29 20:54 | 只看该作者
嗯,好的,我晓得了

使用特权

评论回复
10
稳稳の幸福| | 2015-9-29 20:55 | 只看该作者
我也跟着学了学,感谢各位大神。

使用特权

评论回复
11
仙女山| | 2015-9-29 22:02 | 只看该作者
我觉得可以这样设置吧

使用特权

评论回复
12
yiyigirl2014| | 2015-9-29 23:10 | 只看该作者
固件中的函数都有哪些啊?

使用特权

评论回复
13
C洛达尔多| | 2015-9-30 08:39 | 只看该作者
进中断的时候一定要关中断

使用特权

评论回复
14
dingsujie| | 2015-9-30 09:14 | 只看该作者
个人觉得没有必要。ARM的内核和本身的8位机还是有所区别的。

使用特权

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

本版积分规则

730

主题

10412

帖子

6

粉丝