打印
[MCU]

在结尾加EINT

[复制链接]
219|12
手机看帖
扫描二维码
随时随地手机跟帖
沙发
llia| | 2020-4-12 17:12 | 只看该作者
对啊,全局中断不是在主函数中已开了吗?

使用特权

评论回复
板凳
liliang9554| | 2020-4-12 17:15 | 只看该作者


这与编译器对中断的处理有关,一般的RET不会对特殊寄存器做处理。

使用特权

评论回复
地板
huangchui| | 2020-4-12 17:20 | 只看该作者

你说的是中断返回指令吧,有了这条命令,中断就可以返回到主程序的那个被中断的位置了继续执行了。

使用特权

评论回复
5
zhenykun| | 2020-4-12 17:24 | 只看该作者
可能是在中断的开始关闭了全局中断,然后结束的时候在打开。

使用特权

评论回复
6
zhenykun| | 2020-4-12 17:28 | 只看该作者


这样做的目的就是什么

使用特权

评论回复
7
yszong| | 2020-4-12 17:31 | 只看该作者
因为在中断函数中执行的程序过多,可能在执行的过程中,再次触发中断置位,从而影响正在执行的程序

使用特权

评论回复
8
wuhany| | 2020-4-12 17:35 | 只看该作者
嗯,所以在中断的开头先关闭中断,在中断函数结尾再加上EINT打开中断

使用特权

评论回复
9
shimx| | 2020-4-12 17:38 | 只看该作者
是啊,你看看程序是不是这个样子写的?

使用特权

评论回复
10
spark周| | 2020-4-12 17:41 | 只看该作者
CCS中中断函数中可以不写EINT的,一般来说进入中断时CCS自动帮你把中断关闭了,退出中断时会自动把中断打开,这些在C语言的时候都看不见的,你直接看汇编就能看到

使用特权

评论回复
11
zhaoxqi| | 2020-4-12 17:46 | 只看该作者
这个和编译器有关吧,不同的编译器可能就不需要

使用特权

评论回复
12
supernan| | 2020-4-12 17:49 | 只看该作者
加这个有备无患的

使用特权

评论回复
13
zhanghqi|  楼主 | 2020-4-12 17:52 | 只看该作者
其实还是不大明白,我再琢磨琢磨吧,多谢了哈

使用特权

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

本版积分规则

852

主题

11757

帖子

5

粉丝