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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
在RH850 F1K的EI中断函数里,使用DI和EI指令关闭开启中断,程序反复进入中断多次(有时几千次,有时几万次)后异常。程序里有3个中断,一个OSTM,一个是CAN接收中断(在CAN接收中断函数里,开启关闭中断),一个是CAN发送完成中断。OSTM中断优先级最高 。  |# j4 W6 ~) q7 l/ F
常常有以下三种情况:
" Q3 ^% @$ v' e( T7 O' ^* S1)程序从复位地址运行(不是复位),sp值异常(超出RAM地址)。0 T$ o# `( I0 L- Y/ N2 F8 ~
2)程序运行在某一段程序中出不来,sp值异常(超出RAM地址)。5 B9 l! ~3 K/ Z5 P8 Y
3)程序一直运行在中断(CAN RX)最后一条指令,原因是EIPC地址与PC地址一样。5 |. P* [' B- }
请各位大侠帮忙指导一下,为什么在中断里关闭开启中断会有这样的问题。在中断函数里如何关闭中断?& Q# R" |* K" L4 A' y6 v  R! Y) B; V

该用户从未签到

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

该用户从未签到

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

该用户从未签到

4#
 楼主| 发表于 2022-11-2 13:30 | 只看该作者
补充几点:$ j: u: W" @# c8 A4 `2 g: \
1、在循坏里加__DI()和__EI(),程序正常;9 J. E# Q7 o; e. O3 C, P+ P  e
2、在OSTM里加__DI()和__EI()也正常
" b, h2 u# W& W/ T+ x* W3、在CAN接收中断函数加__DI()和__EI(),DI和EI中间没有任何代码运行一段时间(CAN上一直有报文发送)也会跑飞。; W% g# c- r- h6 P; P; I
4、将去掉CAN接收中断的_DI()和__EI(),程序一切正常。

点评

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

该用户从未签到

5#
发表于 2022-11-2 13:51 | 只看该作者
niubility 发表于 2022-11-2 13:30
. W4 o9 T( S: g. B# s补充几点:1 T$ e- g" E% L* Q
1、在循坏里加__DI()和__EI(),程序正常;# S" w' [3 t, g. N# l
2、在OSTM里加__DI()和__EI()也正常

7 h% l2 ?7 R/ C9 @( G8 b我认为在中断里面开关中断本身就不合理,也不需要。
0 a, N( {+ N) j2 l/ N' \* E
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-3 10:48 , Processed in 0.109375 second(s), 27 queries , Gzip On.

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

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

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