OpenEdv-开源电子网

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

程序运行不稳定可能是那些方面的原因,怎么解决?

[复制链接]

2

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2013-7-11
在线时间
0 小时
发表于 2013-7-15 21:28:18 | 显示全部楼层 |阅读模式

stm32程序运行不稳定可能是那些方面的原因,怎么解决?
主程序如下
#include <stm32f10x_lib.h>
#include "sys.h"
#include "usart.h"  
#include "delay.h" 
#include "SEG.h"
#include "led.h"
#include "BEEPER.h"
#include "key.h"
#include "exti.h"
 void display(unsigned int aa,unsigned int bb,unsigned int cc,unsigned int dd)
 {      
    unsigned int dis_code[4][10]=
 {
 {0x3f0e,0x060e,0x5b0e,0x4f0e,0x660e,0x6d0e,0x7d0e,0x070e,0x7f0e,0x6f0e},//表示第一位(最高位)分别为123456789
 {0xbf0d,0x860d,0xdb0d,0xcf0d,0xe60d,0xed0d,0xfd0d,0x870d,0xff0d,0xef0d},//表示百位分别为123456789,且后加点
 {0x3f0b,0x060b,0x5b0b,0x4f0b,0x660b,0x6d0b,0x7d0b,0x070b,0x7f0b,0x6f0b},//表示十位分别为123456789
    {0x3f07,0x0607,0x5b07,0x4f07,0x6607,0x6d07,0x7d07,0x0707,0x7f07,0x6f07} //表示个位分别为123456789
    };     
 GPIOD->ODR=dis_code[0][aa];
 delay_ms(1);
  GPIOD->ODR=dis_code[1][bb];
 delay_ms(1);
    GPIOD->ODR=dis_code[2][cc];
 delay_ms(1);
    GPIOD->ODR=dis_code[3][dd];
 delay_ms(1);
}
 
int main(void)
{
    void display(unsigned int aa,unsigned int bb,unsigned int cc,unsigned int dd);
 unsigned int i=0,j=0,k=0,t=0,a=0,b=0,n,choose=0;
 Stm32_Clock_Init(9); //系统时钟设置
 delay_init(72);      //延时初始化     
 SEG_Init();
    KEY_Init();
 LED_Init();
 BEPPER_Init() ;
 
  while(1)
  {
       do{
      if(choose==0)
      a++;
      if(a==10){b++;a=0;}
      if(b==10){i++;b=0;}
      if(i==10){j++;i=0;}
      if(j==6) {k++;j=0;}
      if(k==10){t++;k=0;}
      if(t==10){t=0;}
      /*if((i==1)&&(j==1)&&(k==0)&&(t==0))
                  BEEPER=0;
                  if((i==3)&&(j==1)&&(k==0)&&(t==0))
            BEEPER=1;*/   
         n=KEY_Scan();
      display(t,k,j,i);
       } 
       while(n==0);
         switch(n)
      { case 4://sw3 停止
     n=0;
      LED1=1;
      LED2=1;
      LED3=1;
     choose=0;
     break;
    
         case 2:
      i++;  //自加 sw4
      n=0;
      break; 
     
      case 3:
      i--;  //为case 2 是停止中断
      n=0;
      break;
   
      case 1:
      n=0;
      choose=1;
      LED1=0;
      LED2=0;
      LED3=0;
      break;
        }  
  }       
}

 

 


    

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-15 21:36:08 | 显示全部楼层
怎么个不稳定法?
这么说,谁知到怎么回事啊。。。具体点啊。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2013-7-11
在线时间
0 小时
 楼主| 发表于 2013-7-16 21:50:21 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
该程序可以利用按键实现数的加减,但有时候管用有时候不行
回复 支持 反对

使用道具 举报

2

主题

5

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2013-7-11
在线时间
0 小时
 楼主| 发表于 2013-7-16 21:51:46 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
还有数码显示在加减的过程中可能最后一位不显示
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-7-16 22:59:18 | 显示全部楼层
果然不稳定,呵呵.
有没仿真器,可以跟踪下代码看看.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-18 05:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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