3480|4

63

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

程序总是自动重新执行,怎么回事? [复制链接]

用的2407,主程序如下:
main()
{
disable();
initial();
pwm_initial();
calu();
enable();
*EVAIMRA=*EVAIMRA | 0X0200;        /*使能定时器1下溢中断*/
*T1CON=*T1CON|0X0040;              /*开启定时器1*/
while(1)
{
  asm(\"nop\";                                  /*等待TIMER1下溢中断*/
}
}
硬件仿真时发现,程序只要一运行到calu()中的Ua、Ub处时,就又自动开始重头运行,calu()子程序如下,INITIAL和agg_add都是在程序开头#define了
#define  ang_add  2*3.1415926/200                     
#define INITIAL 0
void calu()      
{
int i;
for(i=0;i<200;i++)
{
  Ua=m*cos(INITIAL+i*ang_add);
  Ub=m*sin(INITIAL+i*ang_add);
}
}
是不是我的写法有问题啊?我在initial()中已经将看门狗用下面语句屏蔽了,应该不是看门狗的问题吧。baidu、goole了下,也没找到好的解决办法,请大侠们赐教。
*WDCR=0X06F;                       /*禁止看门狗*/

最新回复

我已经加大了,原来是100,现在改成256,还是有问题  详情 回复 发表于 2007-12-10 13:14
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

子程序应该没有问题

那个子程序应该没有问题,建议看看前面的初始化设置部分吧。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
1 想办法先 排除掉看门狗的问题,可以把函数包括中断都置为空操作,不作任何实质性工作
2 如果确定不是看门狗的问题,看看有没有破坏堆栈的地方(NULL指针、未初始化指针、数组越界、释放后又继续使用的指针等),比如Ua、 Ub是否越界
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
    注意软堆栈的设置!
   最好自己也定义一个_c_init
    可能会有用!
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

5
 
我已经加大了,原来是100,现在改成256,还是有问题
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表