野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12096|回复: 8

开关总中断问题

[复制链接]
发表于 2016-8-30 20:00:20 | 显示全部楼层 |阅读模式
#define CLI()      __set_PRIMASK(1)                /* 关闭总中断 */  
#define SEI() __set_PRIMASK(0)                                /* 开放总中断 */
这两个函数为什么后面的 __set_PRIMASK(1)        和 __set_PRIMASK(0)不能go to definition of“”呢?我在core_cm3.c中找到它了,
但是里面的汇编文件里面英文也不是说开关总中断啊?如下。请问视频中有讲这一段内容的吗
/**
* @brief  Set the Priority Mask value
*
* @param  priMask  PriMask
*
* Set the priority mask bit in the priority mask register
*/
void __set_PRIMASK(uint32_t priMask)
{
  __ASM volatile ("MSR primask, %0" : : "r" (priMask) );
}



回复

使用道具 举报

发表于 2016-8-30 21:11:34 | 显示全部楼层
Set the priority mask bit in the priority mask registe 设置优先级屏蔽寄存器的优先级屏蔽位。
qwe.png
回复 支持 反对

使用道具 举报

发表于 2016-8-30 23:05:26 来自手机 | 显示全部楼层
除了nmi和硬fault是关不了的,其他的都可以通过primask来开和关,难道还不是开和关闭总中断嘛。
回复 支持 反对

使用道具 举报

发表于 2016-8-30 23:06:17 来自手机 | 显示全部楼层
难道要把不能关掉的nmi和硬faul都关掉才算?
回复 支持 反对

使用道具 举报

发表于 2016-8-30 23:15:39 来自手机 | 显示全部楼层
或者可以说关闭和打开除了nmi和硬fault的所有中断,这样说就没有歧义。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-1 17:13:53 | 显示全部楼层
Yang_Guang 发表于 2016-8-30 21:11
Set the priority mask bit in the priority mask registe 设置优先级屏蔽寄存器的优先级屏蔽位。

谢谢回复,请问这个图片是来自我们的哪个手册?还是由英文翻译过来的?谢谢
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-1 17:15:40 | 显示全部楼层
fire 发表于 2016-8-30 23:05
除了nmi和硬fault是关不了的,其他的都可以通过primask来开和关,难道还不是开和关闭总中断嘛。

后来看了这个链接,感觉对这个开关总中断更了解些了:http://blog.csdn.net/zhzht19861011/article/details/8780863,刚开始主要是没在视频和手册上看到介绍,或者自己没有注意到
回复 支持 反对

使用道具 举报

发表于 2016-9-1 17:36:18 | 显示全部楼层
spligesh 发表于 2016-9-1 17:13
谢谢回复,请问这个图片是来自我们的哪个手册?还是由英文翻译过来的?谢谢

《CM3 权威指南》里面的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-1 18:55:31 | 显示全部楼层
fire 发表于 2016-8-30 23:06
难道要把不能关掉的nmi和硬faul都关掉才算?

找到了谢谢,正如视频中所说,要想深入了解中断,还是要看《CM3权威指南》的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-28 09:29 , Processed in 0.040346 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表