打印
[应用相关]

能否这样使用

[复制链接]
574|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
huangchui|  楼主 | 2016-9-26 22:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在版内搜索了一下关于“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)是不是开全局中断,能否这样使用,请大家帮忙看一下!谢谢!!
沙发
dengdc| | 2016-9-26 22:50 | 只看该作者
然后呢?你是怎么应对这个的呢

使用特权

评论回复
板凳
huangchui|  楼主 | 2016-9-26 22:50 | 只看该作者

__set_PRIMASK(1),
__set_PRIMASK(0);
这样使用可否

使用特权

评论回复
地板
heweibig| | 2016-9-26 22:50 | 只看该作者
在STM32上,强烈不建议关闭全局中断。

使用特权

评论回复
5
wuhany| | 2016-9-26 22:50 | 只看该作者

难道上电初始化也不用关吗?

使用特权

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

使用特权

评论回复
7
jiahy| | 2016-9-26 22:56 | 只看该作者
上电初始化的时候,默认就是关中断,不必再多此一举。

使用特权

评论回复
8
lizye| | 2016-9-26 22:59 | 只看该作者
这两个可以的:
__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
shimx| | 2016-9-26 23:04 | 只看该作者
固件中的函数都有哪些啊?

使用特权

评论回复
10
jiaxw| | 2016-9-26 23:05 | 只看该作者
进中断的时候一定要关中断

使用特权

评论回复
11
spark周| | 2016-9-26 23:05 | 只看该作者
个人觉得没有必要。ARM的内核和本身的8位机还是有所区别的。

使用特权

评论回复
12
huangchui|  楼主 | 2016-9-26 23:05 | 只看该作者
嗯,那我按大家的说法挨个排查一下,先结贴啦,谢谢哈

使用特权

评论回复
13
wahahaheihei| | 2016-9-27 08:19 | 只看该作者
看看技术手册是说的哪个寄存器操作的这个功能。

使用特权

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

本版积分规则

918

主题

12323

帖子

4

粉丝