打印
[STM8]

请教各位前辈, 32位变量被中断骚扰 ??

[复制链接]
2130|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
yurulin|  楼主 | 2011-1-7 23:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yurulin 于 2011-1-7 23:24 编辑

uint16 moniliangruanjianjizhun(uint16 a,uint16 b) //模拟量软件基准计算
{
unsigned long int c,d;
if(a>=b) a=0xffff;
else
{
  //_asm("sim"); //禁止中断后计算正常
  c=a; d=c<<16; d-=c; //==d=c*0xffff;
  c=b; d=d/c;
  a=d;
  //_asm("rim");//禁止中断后计算正常
}
return(a);
}

//如上程序,32位长整数计算会被中断骚扰, 当添加如上禁止中断后计算正常,
//请问要如何解决??  (32位运行要很长时间,我的程序不能禁止中断这么长时间)
沙发
mcuisp| | 2011-1-7 23:44 | 只看该作者
嗯,这个是老问题了。

使用特权

评论回复
板凳
ayb_ice| | 2011-1-8 11:54 | 只看该作者
不会吧,中断没有使用全局变量啊

使用特权

评论回复
地板
yurulin|  楼主 | 2011-1-8 15:45 | 只看该作者
是局部变量(unsigned long int c,d;)被中断骚扰的,  这个应该是编译器的问题吧,
各位前辈指点下,这个要怎么解决??

使用特权

评论回复
5
yurulin|  楼主 | 2011-1-10 15:56 | 只看该作者
等待回答中....

使用特权

评论回复
6
yurulin|  楼主 | 2011-1-10 21:50 | 只看该作者
还是没人回答

使用特权

评论回复
7
berry2006| | 2011-1-22 10:35 | 只看该作者
我也碰到了同样的问题,期待回答

使用特权

评论回复
8
luke_lu| | 2011-1-22 22:59 | 只看该作者
在中断函数入口要加一个符号的

使用特权

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

本版积分规则

17

主题

68

帖子

1

粉丝