数码管&按键
手有点抖,很紧张,第一次上优酷,望理解。
	
/**   
  ******************************************************************************   
  * @file    GPIO/IOToggle/main.c    
  * @author  MCD Application Team   
  * @version V3.5.0   
  * @date    08-April-2011   
  * @brief   Main program body.   
  ******************************************************************************   
  * @attention   
  *   
  * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS   
  * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE   
  * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY   
  * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING   
  * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE   
  * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.   
  *   
  *   
  
    ? COPYRIGHT 2011 STMicroelectronics   
  
******************************************************************************   
  */      
    
/* Includes ------------------------------------------------------------------*/    
#include "stm32f10x.h"     
#include "stm32_eval.h"     
GPIO_InitTypeDef GPIO_InitStructure;     
    
void RCC_Configuration(void)     
{     
  RCC_DeInit();     
         
  RCC_HSICmd(ENABLE);     
  while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);     
       
  RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);     
       
  RCC_HSEConfig(RCC_HSE_OFF);     
  RCC_LSEConfig(RCC_LSE_OFF);     
  RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //  72HMz     
  RCC_PLLCmd(ENABLE);     
  while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);     
  RCC_ADCCLKConfig(RCC_PCLK2_Div4);     
  RCC_PCLK2Config(RCC_HCLK_Div1);     
  RCC_PCLK1Config(RCC_HCLK_Div2);     
  RCC_HCLKConfig(RCC_SYSCLK_Div1);     
  RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);     
  while(RCC_GetSYSCLKSource() != 0x08);     
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);     
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG     
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;     
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     
  GPIO_Init(GPIOD, &GPIO_InitStructure);     
    GPIO_ResetBits(GPIOD,GPIO_Pin_2);     
}     
    
void GPIO_INIT()//输入输出的初始化     
{     
    
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;     
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);     
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;     
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;     
      GPIO_Init(GPIOC, &GPIO_InitStructure);     
         
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);     
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;     
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     
  GPIO_Init(GPIOB, &GPIO_InitStructure);     
         
}     
    
void delay_us(u32 n)  //延时1us     
{     
    u8 j;     
    while(n--)     
    for(j=0;j<10;j++);     
}     
    
void  delay_ms(u32 n)     //延时1ms     
{     
    while(n--)     
    delay_us(1000);     
}     
      
//定义一个数组,用来显示数字0到9     
 int table[10]={GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14|GPIO_Pin_13|GPIO_Pin_8 ,GPIO_Pin_9|GPIO_Pin_12 ,GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_14|GPIO_Pin_13|GPIO_Pin_5,     
GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14|GPIO_Pin_5,GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_8|GPIO_Pin_5,GPIO_Pin_7|GPIO_Pin_12|GPIO_Pin_14|GPIO_Pin_8|GPIO_Pin_5,     
GPIO_Pin_7|GPIO_Pin_12|GPIO_Pin_14|GPIO_Pin_13|GPIO_Pin_8|GPIO_Pin_5,GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12,     
GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14     
    
};        
    
void shumaguan(char temp)   
{     
    char gewei=0,shiwei=0;     
    shiwei=temp/10;     
    gewei=temp%10;  
    if(temp<10)  
    {  
             GPIO_SetBits(GPIOB,GPIO_Pin_1);     
              GPIO_ResetBits(GPIOB,table[gewei]);     
    
          delay_ms(5);     
                GPIO_ResetBits(GPIOB,GPIO_Pin_1);     
           GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);     
        }  
         if(temp>=10)  
                {  
                      
                      
                    GPIO_SetBits(GPIOB,GPIO_Pin_15);     
              GPIO_ResetBits(GPIOB,table[shiwei]);     
          delay_ms(1);     
            GPIO_ResetBits(GPIOB,GPIO_Pin_15);     
           GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);     
                 
             GPIO_SetBits(GPIOB,GPIO_Pin_1);     
              GPIO_ResetBits(GPIOB,table[gewei]);     
    
          delay_ms(1);     
                GPIO_ResetBits(GPIOB,GPIO_Pin_1);     
           GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);     
      
       }  
                  
           if(temp>30)     
            {     
                    GPIO_SetBits(GPIOB,GPIO_Pin_15);     
              GPIO_ResetBits(GPIOB,table[shiwei]);     
          delay_ms(100);     
            GPIO_ResetBits(GPIOB,GPIO_Pin_15);     
           GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);     
                 
             GPIO_SetBits(GPIOB,GPIO_Pin_1);     
              GPIO_ResetBits(GPIOB,table[gewei]);     
    
          delay_ms(150);     
                GPIO_ResetBits(GPIOB,GPIO_Pin_1);     
           GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);     
    
            }     
    
}     
    
  
    
         
    
int main(void)        
{           
        char a = 0, b = 0,count=0;   //定义三个计数器。   
      RCC_Configuration();       //调用函数     
         GPIO_INIT();      //调用函数     
      GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);  //关闭数码管     
      while(1){     
     if(!GPIO_ReadInputDataBit (GPIOC,GPIO_Pin_10)) //判断按键是否按下     
      {     
                    delay_ms(100);     
         if(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_10))     
               {     
                                 count++;  //count自加1;     
              }     
                        }     
             if(count%2==1){        
                                                            if(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_8))       
                                                 {   delay_ms(80);        
                                                             if(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_8))     
                                                                             {a++;}     
                                                            }       
                                                                if(a>100)     
                                   {a=0;}  //a>100,a置0;     
                                                        shumaguan(a);     
            }     
         
       if(count%2==0){     
           if(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9))     
         {delay_ms(80);        
          if(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9)){b++;}}       
                 if(b>100){b=0;}       
                 shumaguan(b);}     
        
       }        
         
          
     }