stm32直接驱动数码管显示递减,为什么只循环一次9999---9998-----9999--9998---...

2019-07-17 07:55发布

哪位高手帮忙看看,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;
                        
                        }
                 }
        

}  

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
2条回答
121e
2019-07-17 12:55
发错地方了,实在不好意思!以前调试过一段时间的labview用于485通讯,所以发习惯了。

上面的程序没有问题,是烧录的时候stm32看门狗没有设置,造成反复重启。已解决。

一周热门 更多>