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;
}
}
}
|