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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在RH850 F1K的EI中断函数里,使用DI和EI指令关闭开启中断,程序反复进入中断多次(有时几千次,有时几万次)后异常。程序里有3个中断,一个OSTM,一个是CAN接收中断(在CAN接收中断函数里,开启关闭中断),一个是CAN发送完成中断。OSTM中断优先级最高 。
& j& t. d4 c% s. }& ]常常有以下三种情况:
- Z7 P2 M3 u" F1)程序从复位地址运行(不是复位),sp值异常(超出RAM地址)。
9 `' t. b4 h: d  |0 @( J2)程序运行在某一段程序中出不来,sp值异常(超出RAM地址)。
( F3 j" N/ b: ]9 W( S3)程序一直运行在中断(CAN RX)最后一条指令,原因是EIPC地址与PC地址一样。
' o2 ?2 I8 C4 ^# Z( p- C0 g) y  U请各位大侠帮忙指导一下,为什么在中断里关闭开启中断会有这样的问题。在中断函数里如何关闭中断?
0 t3 f! h" e! Y

该用户从未签到

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

该用户从未签到

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

该用户从未签到

4#
 楼主| 发表于 2022-11-2 13:30 | 只看该作者
补充几点:5 U& T& n1 g6 [8 T2 ?( g; [
1、在循坏里加__DI()和__EI(),程序正常;! l3 m% ?% d7 G" s8 _3 v; f& ~  P
2、在OSTM里加__DI()和__EI()也正常
9 H8 ?' R! P8 W: X0 @; m( E* ?/ W5 a3、在CAN接收中断函数加__DI()和__EI(),DI和EI中间没有任何代码运行一段时间(CAN上一直有报文发送)也会跑飞。
: N; c5 w; X' x1 y8 ^% J$ H4、将去掉CAN接收中断的_DI()和__EI(),程序一切正常。

点评

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

该用户从未签到

5#
发表于 2022-11-2 13:51 | 只看该作者
niubility 发表于 2022-11-2 13:30' h# b9 b, I+ G3 B' [+ t
补充几点:
  V" L0 W0 R. u" A1、在循坏里加__DI()和__EI(),程序正常;+ {7 |, \) D# j( b2 H  E
2、在OSTM里加__DI()和__EI()也正常
1 e/ I( g5 Y+ J2 e
我认为在中断里面开关中断本身就不合理,也不需要。+ h2 b, ~% \& _9 j
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-28 01:49 , Processed in 0.140625 second(s), 27 queries , Gzip On.

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

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

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