哪位高手帮忙看看,4位数码管静态显示没问题,动态也能切换。但是我要实现从9999递减到0,可程序
仿真时能递减,但烧录到板子上只9999--9998---9999-9998.。。。。。这样循环?哪位帮忙分析一下,谢谢!
int
timeCheck;
int main(void)
{
int a=9999;
int aj;
GPIO_Num_Init();
delay_ms(200);
GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);//???λ?
while(1)
{
for( TImeCheck = 0; TImeCheck<60; TImeCheck++ )
{
aj=a;
delay_ms(50);
DisPlayNum(aj);
}
TImeCheck=0;
delay_ms(5000);
a--;
GPIO_SetBits(GPIOA,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);
}
}
void DisPlayNum(int n)
{
if (n < 10000)
{
int i;
int s;
s=n;
i=0;
for (i=0;i<5;i++)
{
GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_10|GPIO_Pin_11);
switch (i)
{
case 0:
GPIO_ResetBits(GPIOB,GPIO_Pin_11); //GPIO_Write(GPIOE,table[n % 10]); n=n/10;
break;
case 1:
GPIO_ResetBits(GPIOB,GPIO_Pin_10); //GPIO_Write(GPIOE,table[n % 10]); n=n/10;
break;
case 2:
GPIO_ResetBits(GPIOB,GPIO_Pin_1);
break;
case 3:
GPIO_ResetBits(GPIOB,GPIO_Pin_0); //GPIO_Write(GPIOE,table[n % 10]); n=n/10;
break;
}
switch (s%10)
{
case 0:
GPIO_Write(GPIOA,table[0]);
break;
case 1:
GPIO_Write(GPIOA,table[1]);
break;
case 2:
GPIO_Write(GPIOA,table[2]);
break;
case 3:
GPIO_Write(GPIOA,table[3]);
break;
case 4:
GPIO_Write(GPIOA,table[4]);
break;
case 5:
GPIO_Write(GPIOA,table[5]);
break;
case 6:
GPIO_Write(GPIOA,table[6]);
break;
case 7:
GPIO_Write(GPIOA,table[7]);
break;
case 8:
GPIO_Write(GPIOA,table[8]);
break;
case 9:
GPIO_Write(GPIOA,table[9]);
break;
//default:
//???????IO?????
//break;
}
delay_ms(2000);
s=s/10;
if(s==0) break;
}
}
}
上面的程序没有问题,是烧录的时候stm32看门狗没有设置,造成反复重启。已解决。
一周热门 更多>