OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9713|回复: 4

这样的一个程序为什么没有反应呢?

[复制链接]

4

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2012-7-8
在线时间
5 小时
发表于 2012-7-11 13:17:11 | 显示全部楼层 |阅读模式
下面的程序是让led0闪烁,串口输出微分方程结果,可是下载到板上一点反应都没有,哪里有错呢?

        #include <stm32f10x_lib.h>
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "math.h"
#include "led.h"

int main(void)
{
double p=20;
 double yout,A0=3.25,B=22,a=100,b=50,C=135,C1=C,C2=0.8*C,C3=0.25*C,C4=0.25*C, v0=6, e0=2.5,r1=0.56;
  double x[6]={-0.0164, -0.2593, -0.0244,-0.0055, 0.2361,0.0470},xdot[6]={0,0,0,0,0,0};
 double k1[6]={0,0,0,0,0,0},k2[6]={0,0,0,0,0,0},k3[6]={0,0,0,0,0,0},k4[6]={0,0,0,0,0,0},dt=0.001;
 u8 i=0,j=0;  
 Stm32_Clock_Init(9);
 delay_init(72);
 uart_init(72,9600);
 LED0=0;
 while(1)
 {
printf("ceshi");
   for(i=0;i<4;i++)
{
xdot[0]=x[1];
xdot[1]=A0*a*2*e0/(1+exp(r1*(v0-(x[2]-x[4]))))-2*a*x[1]-a*a*x[0];
xdot[2]=x[3];
xdot[3]=A0*a*(p+C2*2*e0/(1+exp(r1*(v0-C1*x[0]))))-2*a*x[3]-a*a*x[2];
xdot[4]=x[5];
xdot[5]=B*b*C4*2*e0/(1+exp(r1*(v0-C3*x[0])))-2*b*x[5]-b*b*x[4];
if(i==0)
{
  for(j=0;j<6;j++)
    {
   k1[j]=xdot[j];
x[j]=x[j]+xdot[j]*dt/2;
   }
}

if(i==1)
{
  for(j=0;j<6;j++)
    {
   k2[j]=xdot[j];
x[j]=x[j]+xdot[j]*dt/2;
   }
}

 
if(i==2)
{
  for(j=0;j<6;j++)
    {
   k3[j]=xdot[j];
x[j]=x[j]+xdot[j]*dt;
   }
}

if(i==3)
{
  for(j=0;j<6;j++)
    {
   k4[j]=xdot[j];
x[j]=x[j]+(k1[j]+k2[j]*2+k3[j]*2+k4[j])*dt/6;
   }
}

yout=x[2]-x[4];
printf("you5=%f",yout);
LED0=!LED0;
   delay_ms(1000); 
}
}
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2012-7-8
在线时间
5 小时
 楼主| 发表于 2012-7-11 20:12:27 | 显示全部楼层
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-7-11 21:38:15 | 显示全部楼层
软件仿真跟踪一下就知道怎么回事了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
60
金钱
60
注册时间
2012-7-8
在线时间
5 小时
 楼主| 发表于 2012-7-15 17:49:33 | 显示全部楼层
如果把变量和数组减少一些,不带后面的运算部分,果可以运行的,但是如果变量或数组增加一些就没有任何反应了,这是为什么呢?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2012-7-15 18:53:37 | 显示全部楼层
回复【4楼】mabaiwang:
---------------------------------
内存溢出,堆栈小了.或者你的数组太大了.放全局变量.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-22 12:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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