找回密码
 注册
关于网站域名变更的通知
查看: 634|回复: 4
打印 上一主题 下一主题

为什么在RH850 的EI中断函数里关闭开启中断程序跑飞?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-11-2 10:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
在RH850 F1K的EI中断函数里,使用DI和EI指令关闭开启中断,程序反复进入中断多次(有时几千次,有时几万次)后异常。程序里有3个中断,一个OSTM,一个是CAN接收中断(在CAN接收中断函数里,开启关闭中断),一个是CAN发送完成中断。OSTM中断优先级最高 。
. |. g7 A/ z) X7 d, G. Q常常有以下三种情况:
. C! H0 k8 a$ K6 D# S2 \1)程序从复位地址运行(不是复位),sp值异常(超出RAM地址)。
2 u* y8 F! a" y2)程序运行在某一段程序中出不来,sp值异常(超出RAM地址)。$ l; q3 d7 T& C
3)程序一直运行在中断(CAN RX)最后一条指令,原因是EIPC地址与PC地址一样。
8 e/ t+ C( H5 J& i- N8 J, U' m5 o请各位大侠帮忙指导一下,为什么在中断里关闭开启中断会有这样的问题。在中断函数里如何关闭中断?
% ]% |0 f: f+ G2 [

该用户从未签到

2#
发表于 2022-11-2 11:23 | 只看该作者
在中断里打开和关闭中断是啥操作?

该用户从未签到

3#
发表于 2022-11-2 13:28 | 只看该作者
为什么会想着在中断里面,开关中断?

该用户从未签到

4#
 楼主| 发表于 2022-11-2 13:30 | 只看该作者
补充几点:
2 X8 [( y1 g% X6 h" i; ~1、在循坏里加__DI()和__EI(),程序正常;
# I1 j5 L% }6 E+ n+ O9 l! O* U2、在OSTM里加__DI()和__EI()也正常
: A) l" A/ ~( p% x1 y$ d3、在CAN接收中断函数加__DI()和__EI(),DI和EI中间没有任何代码运行一段时间(CAN上一直有报文发送)也会跑飞。
; L: J% D  _3 h4、将去掉CAN接收中断的_DI()和__EI(),程序一切正常。

点评

我认为在中断里面开关中断本身就不合理,也不需要。  详情 回复 发表于 2022-11-2 13:51

该用户从未签到

5#
发表于 2022-11-2 13:51 | 只看该作者
niubility 发表于 2022-11-2 13:30+ r9 X5 S1 {; `7 R5 n+ |6 Y
补充几点:0 ~) B; f: U. N" {$ {$ m+ k3 W1 S3 {
1、在循坏里加__DI()和__EI(),程序正常;
5 b9 u1 j6 Y8 u2、在OSTM里加__DI()和__EI()也正常
+ \( U& P! a. x- t, g4 j. s
我认为在中断里面开关中断本身就不合理,也不需要。! L" g7 v9 w7 p. j6 ?& b
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-18 22:32 , Processed in 0.093750 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

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