这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 高校专区 » 漓东e学堂 » 24号的作业本KEIL 的安装

共13条 1/2 1 2 跳转至

24号的作业本KEIL 的安装

菜鸟
2014-10-23 10:20:36     打赏

菜鸟
2014-10-24 09:10:44     打赏
2楼
 

1.      @file    GPIO/IOToggle/main.c  

2.        * @author  MCD Application Team 

3.        * @version V3.5.0 

4.        * @date    08-April-2011 

5.        * @brief   Main program body. 

6.        ****************************************************************************** 

7.        * @attention 

8.        * 

9.        * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 

10.    * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE 

11.    * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY 

12.    * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING 

13.    * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE 

14.    * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 

15.  * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2>

16. 

1.      /* Includes ------------------------------------------------------------------*/  

2.      #include "stm32f10x.h"  

3.      #include "stm32_eval.h"  

4.      GPIO_InitTypeDef GPIO_InitStructure;//定义了一个初始化结构体,其中包括端口引脚、速度、模式  

5.        

6.      void RCC_Configuration(void)  

7.      {  

8.        RCC_DeInit();  

9.            

10.    RCC_HSICmd(ENABLE);//时钟使能配置  

11.    while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);//检查制定的RCC标志位设置与否  

12.      

13.    RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);//时钟源相关配置  

14.      

15.    RCC_HSEConfig(RCC_HSE_OFF);  

16.    RCC_LSEConfig(RCC_LSE_OFF);  

17.    RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //  72HMz  

18.    RCC_PLLCmd(ENABLE);//使能PLL  

19.    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);  

20.    RCC_ADCCLKConfig(RCC_PCLK2_Div4);  

21.    RCC_PCLK2Config(RCC_HCLK_Div1);//设置高速AHB时钟  

22.    RCC_PCLK1Config(RCC_HCLK_Div2);//设置低速AHB时钟  

23.    RCC_HCLKConfig(RCC_SYSCLK_Div1);//设置AHB时钟  

24.    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  

25.    while(RCC_GetSYSCLKSource() != 0x08);//PLL作为系统时钟  

26.      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);  

27.   GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG  

28.    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;//选择配置的引脚  

29.    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  

30.    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  

31.    GPIO_Init(GPIOD, &GPIO_InitStructure);  

32.      GPIO_ResetBits(GPIOD,GPIO_Pin_2);  

33.  }  

34.    

35.  void GPIO_INIT()  

36.  {  

37.  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  

38.    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;//选择PIN0-PIN7  

39.    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  

40.    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//引脚推拉输出  

41.    GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化  

42.  }  

43.    

44.  void delay_us(u32 n)  

45.  {  

46.      u8 j;  

47.      while(n--)  

48.      for(j=0;j<10;j++);  

49.  }  

50.    

51.  void  delay_ms(u32 n)  

52.  {  

53.      while(n--)  

54.      delay_us(1000);  

55.  }  


菜鸟
2014-10-30 23:53:41     打赏
3楼
  1.  @file    GPIO/IOToggle/main.c  
  2.   * @author  MCD Application Team 
  3.   * @version V3.5.0 
  4.   * @date    08-April-2011 
  5.   * @brief   Main program body. 
  6.   ****************************************************************************** 
  7.   * @attention 
  8.   * 
  9.   * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS 
  10.   * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE 
  11.   * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY 
  12.   * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING 
  13.   * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE 
  14.   * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS. 
  15.   * 
  16.   * <h2><center>&copy; COPYRIGHT 2011 STMicroelectronics</center></h2> 
  17.   ****************************************************************************** 
  18.   */   
  19.   
  20. /* Includes ------------------------------------------------------------------*/  
  21. #include "stm32f10x.h"      
  22. #include "stm32_eval.h"      
  23. GPIO_InitTypeDef GPIO_InitStructure; 
    1. /* Includes ------------------------------------------------------------------*/  
    2. #include "stm32f10x.h"      
    3. #include "stm32_eval.h"      
    4. GPIO_InitTypeDef GPIO_InitStructure;      
    5.       
    6. void RCC_Configuration(void)    
    7. {      
    8.   RCC_DeInit();      
    9.           
    10.   RCC_HSICmd(ENABLE);    
    11.   while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);      
    12.         
    13.   RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);    
    14.         
    15.   RCC_HSEConfig(RCC_HSE_OFF);      
    16.   RCC_LSEConfig(RCC_LSE_OFF);      
    17.   RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //        
    18.   RCC_PLLCmd(ENABLE);      
    19.   while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);      
    20.   RCC_ADCCLKConfig(RCC_PCLK2_Div4);     
    21.   RCC_PCLK2Config(RCC_HCLK_Div1);      
    22.   RCC_PCLK1Config(RCC_HCLK_Div2);     
    23.   RCC_HCLKConfig(RCC_SYSCLK_Div1);     
    24.   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);    
    25.   while(RCC_GetSYSCLKSource() != 0x08);      
    26.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);      
    27.   GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);      
    28.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;      
    29.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
    30.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
    31.   GPIO_Init(GPIOD, &GPIO_InitStructure);      
    32.     GPIO_ResetBits(GPIOD,GPIO_Pin_2);    
    33.           
    34. }      
    35. void chushihua()  
    36. {  
    37.         //按键初始化   
    38.     RCC_Configuration();      
    39.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);      
    40.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;      
    41.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
    42.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;      
    43.     GPIO_Init(GPIOC, &GPIO_InitStructure);       
    44.     //数码管初始化  
    45.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);      
    46.   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;      
    47.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;      
    48.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;      
    49.   GPIO_Init(GPIOB, &GPIO_InitStructure);      
    50.     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);      
    51.       
    52.           
    53. }  
    54. void delay_us(u32 n)    //延时函数  
    55. {      
    56.     u8 j;      
    57.     while(n--)      
    58.     for(j=0;j<10;j++);      
    59. }      
    60.       
    61. void  delay_ms(u32 n)      
    62. {      
    63.     while(n--)      
    64.     delay_us(1000);     
      1. nt main (void)      
      2. {      
      3.     char i,j,num;   //定义变量  
      4.       
      5.                
      6.           GPIO();  
      7.               
      8.         while(1){        
      9.             if(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_10))    //s3键按下  
      10.            {delay_ms(80);    //延时,防抖  
      11.            if(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_10)){j++;}}   //s3自加1          
      12.         if(j%2==0){      // 如果j是偶数  
      13.              if(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_8))      //s1键按下  
      14.            {delay_ms(80);        
      15.            if(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_8)){i++;}    //s1键按下i自加1  
      16.            }  
      17.                             if(i>30){i=0;}   //30个循环   
      18.         GPIO_ResetBits(GPIOB,GPIO_Pin_1);    //关闭PB1  
      19.         GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);  //关闭数码管管脚    
      20.               
      21.         switch(i)      
      22.         {      
      23.          case 0 :       
      24.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      25.              GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);      
      26.          break;      
      27.          case 1 :       
      28.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      29.              GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);      
      30.          break;      
      31.             case 2 :       
      32.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      33.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);    
      34.             break;      
      35.             case 3 :       
      36.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      37.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);     
      38.             break;      
      39.             case 4 :       
      40.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      41.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12);     
      42.             break;      
      43.             case 5 :       
      44.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      45.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_14);    
      46.             break;      
      47.             case 6 :       
      48.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      49.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);    
      50.             break;      
      51.             case 7 :       
      52.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      53.              GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12);   
      54.             break;      
      55.             case 8 :       
      56.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      57.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);   
      58.             break;      
      59.             case 9 :       
      60.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      61.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);     
      62.             break;      
      63.             case 10 :       
      64.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      65.              GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);      
      66.              delay_ms(1);        
      67.              GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      68.              GPIO_SetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);        
      69.                   
      70.                   GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      71.                   GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);        
      72.                   delay_ms(1);        
      73.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      74.                   GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);     
      75.             break;      
      76.             case 11 :       
      77.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      78.              GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);      
      79.              delay_ms(1);      
      80.              GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      81.              GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);        
      82.                   
      83.                   GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      84.                   GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);        
      85.                   delay_ms(1);        
      86.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      87.                   GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);      
      88.             break;      
      89.             case 12 :       
      90.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      91.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);      
      92.              delay_ms(1);        
      93.              GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      94.              GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);        
      95.                   
      96.                     GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      97.                   GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);        
      98.                   delay_ms(1);        
      99.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      100.                   GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);       
      101.             break;      
      102.             case 13 :       
      103.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      104.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);      
      105.              delay_ms(1);        
      106.              GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      107.              GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);        
      108.                   
      109.                   GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      110.                   GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);        
      111.                   delay_ms(1);        
      112.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      113.                   GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);  
      114.             break;                        
      115.             case 14 :       
      116.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      117.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12);      
      118.              delay_ms(1);        
      119.              GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      120.              GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12);        
      121.                   
      122.                         GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      123.                   GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);        
      124.                   delay_ms(1);        
      125.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      126.                   GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);     
      127.             break;      
      128.             case 15 :       
      129.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      130.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_14);      
      131.              delay_ms(80);        
      132.              GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      133.              GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_14);        
      134.                   
      135.                   GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      136.                   GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);        
      137.                   delay_ms(100);        
      138.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      139.                   GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);  
      140.             break;      
      141.             case 16 :       
      142.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      143.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);      
      144.              delay_ms(80);        
      145.              GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      146.              GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);        
      147.                   
      148.                   GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      149.                   GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);        
      150.                   delay_ms(100);        
      151.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      152.                   GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);    
      153.             break;      
      154.             case 17 :       
      155.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      156.              GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12);      
      157.              delay_ms(80);        
      158.              GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      159.             GPIO_SetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12);        
      160.                   
      161.                   GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      162.                   GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);        
      163.                   delay_ms(100);        
      164.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      165.                   GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);   
      166.             break;      
      167.             case 18 :       
      168.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      169.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);      
      170.              delay_ms(80);        
      171.              GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      172.              GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);       
      173.                   
      174.                   GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      175.                   GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);        
      176.                   delay_ms(100);        
      177.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      178.                   GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);   
      179.             break;      
      180.             case 19 :       
      181.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      182.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);      
      183.              delay_ms(80);        
      184.              GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      185.              GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);       
      186.                   
      187.                   GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      188.                   GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);        
      189.                   delay_ms(100);        
      190.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      191.                   GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);  
      192.             break;      
      193.             case 20 :       
      194.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      195.              GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);      
      196.              delay_ms(80);        
      197.              GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      198.              GPIO_SetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);        
      199.                   
      200.                   GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      201.                   GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);        
      202.                   delay_ms(100);        
      203.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      204.                   GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);  
      205.             break;      
      206.             case 21 :       
      207.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      208.              GPIO_ResetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);      
      209.              delay_ms(80);      
      210.              GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      211.              GPIO_SetBits(GPIOB,GPIO_Pin_9|GPIO_Pin_12);      
      212.                   
      213.                   GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      214.                   GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);        
      215.                   delay_ms(100);        
      216.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      217.                   GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);      
      218.             break;      
      219.             case 22 :       
      220.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      221.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);      
      222.              delay_ms(80);        
      223.              GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      224.              GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);      
      225.                   
      226.                     GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      227.                   GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);      
      228.                   delay_ms(100);        
      229.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      230.                   GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);      
      231.             break;      
      232.             case 23 :       
      233.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      234.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);      
      235.              delay_ms(80);        
      236.             GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      237.             GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);       
      238.                   
      239.                   GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      240.                   GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);        
      241.                   delay_ms(100);        
      242.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      243.                   GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);    
      244.                         break;  
      245.             case 24 :       
      246.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      247.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12);      
      248.              delay_ms(80);        
      249.              GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      250.              GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12);      
      251.                   
      252.                         GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      253.                   GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);        
      254.                   delay_ms(100);        
      255.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      256.                   GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);      
      257.             break;      
      258.             case 25 :       
      259.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      260.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_14);      
      261.              delay_ms(80);        
      262.             GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      263.            GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_14);      
      264.                   
      265.                   GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      266.                   GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);        
      267.                   delay_ms(100);        
      268.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      269.                   GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);    
      270.             break;      
      271.             case 26 :       
      272.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      273.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);      
      274.              delay_ms(80);        
      275.             GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      276.             GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);       
      277.                   
      278.                   GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      279.                   GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);        
      280.                   delay_ms(100);        
      281.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      282.                   GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);    
      283.             break;      
      284.             case 27 :       
      285.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      286.              GPIO_ResetBits (GPIOB,GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12);      
      287.              delay_ms(80);        
      288.             GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      289.             GPIO_SetBits (GPIOB,GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12);      
      290.                   
      291.                   GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      292.                   GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);        
      293.                   delay_ms(100);        
      294.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      295.                   GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);    
      296.             break;      
      297.             case 28 :       
      298.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      299.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);      
      300.              delay_ms(80);        
      301.              GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      302.             GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);      
      303.                   
      304.                   GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      305.                   GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);        
      306.                   delay_ms(100);        
      307.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      308.                   GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);   
      309.             break;      
      310.             case 29 :       
      311.             GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      312.              GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);      
      313.              delay_ms(80);        
      314.             GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      315.             GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);        
      316.                   
      317.                   GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      318.                   GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);        
      319.                   delay_ms(100);        
      320.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      321.                   GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14);     
      322.             break;      
      323.             case 30 :       
      324.              GPIO_SetBits(GPIOB,GPIO_Pin_1);      
      325.              GPIO_ResetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);      
      326.              delay_ms(80);        
      327.              GPIO_ResetBits(GPIOB,GPIO_Pin_1);        
      328.              GPIO_SetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);      
      329.                   
      330.                   GPIO_SetBits(GPIOB,GPIO_Pin_15);        
      331.                   GPIO_ResetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);        
      332.                   delay_ms(100);        
      333.                   GPIO_ResetBits(GPIOB,GPIO_Pin_15);        
      334.                   GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14);     
      335.             break;      
      336. }      
      337.                               
      338.   
      339.           }         
      340.                 else{      
      341.                               if(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9))     //s2键按下  
      342.            {delay_ms(80);        
      343.            if(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_9)){num++;}}   
      344.            if(num>30){num=0;}      
      345.         GPIO_ResetBits(GPIOB,GPIO_Pin_1);      
      346.         GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14);      
      347.               
      348.         switch(num)      

高工
2014-11-16 00:17:34     打赏
4楼
这个,该如何是好?

菜鸟
2014-11-27 21:39:27     打赏
5楼
void function(void)  
{  
    int display[10],shift=0,flag=0,i=0;//shift作为S4的标识位,flag作为S1的标识位,数组display保存数码管0-9个数字的显示组合  
    display[0]=GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;  
    display[1]=GPIO_Pin_9|GPIO_Pin_12;  
    display[2]=GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_13|GPIO_Pin_14;  
    display[3]=GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14;  
    display[4]=GPIO_Pin_5|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12;  
    display[5]=GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_14;  
    display[6]=GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;  
    display[7]=GPIO_Pin_7|GPIO_Pin_9|GPIO_Pin_12;  
    display[8]=GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_13|GPIO_Pin_14;  
    display[9]=GPIO_Pin_5|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_12|GPIO_Pin_14;  
    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);  
  

菜鸟
2014-11-27 22:22:02     打赏
6楼
  1. #include "stm32f10x.h"    
  2. #include "stm32_eval.h"    
  3. #include <stdio.h>    
  4. /** @addtogroup STM32F10x_StdPeriph_Examples  
  5.   * @{ 
  6. /** @addtogroup EXTI_Config  
  7.   * @{
  8. /* Private typedef --------------------------------------------------------- 
  9. /* Private define ---------------------------------------------------------  
  10. /* Private macro -------------------------------------------------------------*/    
  11. /* Private variables ---------------------------------------------------------*/    
  12. EXTI_InitTypeDef   EXTI_InitStructure;    
  13. GPIO_InitTypeDef   GPIO_InitStructure;    
  14. NVIC_InitTypeDef   NVIC_InitStructure;    
  15. USART_InitTypeDef USART_InitStructure;    
  16. USART_ClockInitTypeDef USART_ClockInitStructure;    
  17. /* Private function prototypes -----------------------------------------------*/    
  18. void EXTIkeyS1_Config(void);    
  19. void EXTIkeyS2_Config(void);    
  20. void EXTIkeyS3_Config(void);    
  21. void EXTIkeyS4_Config(void);    
  22. void RCC_Configuration(void)    
  23. {    
  24.   RCC_DeInit();    
  25.         
  26.   RCC_HSICmd(ENABLE);    
  27.   while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);    
  28.       
  29.   RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);    
  30.       
  31.   RCC_HSEConfig(RCC_HSE_OFF);    
  32.   RCC_LSEConfig(RCC_LSE_OFF);    
  33.   RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //  72HMz    
  34.   RCC_PLLCmd(ENABLE);    
  35.   while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);    
  36.   RCC_ADCCLKConfig(RCC_PCLK2_Div4);    
  37.   RCC_PCLK2Config(RCC_HCLK_Div1);    
  38.   RCC_PCLK1Config(RCC_HCLK_Div2);    
  39.   RCC_HCLKConfig(RCC_SYSCLK_Div1);    
  40.   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);    
  41.   while(RCC_GetSYSCLKSource() != 0x08);    
  42.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);    
  43.  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG    
  44. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);    
  45.  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG    
  46.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;    
  47.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    
  48.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    
  49.   GPIO_Init(GPIOD, &GPIO_InitStructure);    
  50.     GPIO_ResetBits(GPIOD,GPIO_Pin_2);    
  51.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);    
  52.  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG    
  53.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;    
  54.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    
  55.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    
  56.   GPIO_Init(GPIOC, &GPIO_InitStructure);    
  57.     GPIO_ResetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);    
  58. }    
  59.     
  60. void USART_int(long BaudRate)    
  61. {    
  62.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);    
  63.        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;    
  64.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;    
  65.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;     
  66.     GPIO_Init(GPIOA, &GPIO_InitStructure);    
  67.     /* PA10 USART1_Rx  */    
  68.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;    
  69.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;    
  70.     GPIO_Init(GPIOA, &GPIO_InitStructure);    
  71.   /* USARTx configured as follow:  
  72.         - BaudRate = 115200 baud    
  73.         - Word Length = 8 Bits  
  74.         - One Stop Bit  
  75.         - No parity  
  76.         - Hardware flow control disabled (RTS and CTS signals)  
  77.         - Receive and transmit enabled  
  78.   */    
  79.   USART_InitStructure.USART_BaudRate = BaudRate;//??????    
  80.   USART_InitStructure.USART_WordLength = USART_WordLength_8b;//???????8bit    
  81.   USART_InitStructure.USART_StopBits = USART_StopBits_1;//????1    
  82.   USART_InitStructure.USART_Parity = USART_Parity_No;//????    
  83.   USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;none    
  84.   USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//??????????    
  85.     USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;         
  86.     USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;          
  87.     USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;          
  88.     USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;    
  89.     USART_ClockInit(USART1, &USART_ClockInitStructure);    
  90.   USART_Init(USART1, &USART_InitStructure);    
  91.   USART_Cmd(USART1, ENABLE);    
  92.     USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);    
  93.  USART_Cmd(USART1, ENABLE);    
  94.      
  95.   /* Configure four bit for preemption priority */    
  96.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);    
  97.   /* Enable the USART1 Interrupt */    
  98.   NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //    
  99.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 15;    
  100.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    
  101.   NVIC_Init(&NVIC_InitStructure);    
  102. }    
  103.     
  104. /* Private functions ---------------------------------------------------------*/    
  105.     
  106. /**  
  107.   * @brief  Main program.  
  108.   * @param  None  
  109.   * @retval None  
  110.   */    
  111. int main(void)    
  112. {RCC_Configuration();    
  113.       
  114.   /* Configure PA.00 in interrupt mode */    
  115.   EXTIkeyS1_Config();    
  116.     
  117.   /* Configure PB.09 or PG.08 in interrupt mode */    
  118.   EXTIkeyS2_Config();    
  119.     EXTIkeyS3_Config();    
  120.   EXTIkeyS4_Config();    
  121. USART_int(115200);    
  122.     printf("Config done,waiting for interrupt......\r\n");    
  123.               
  124.   while (1)    
  125.   {    
  126.   }    
  127. }    
  128.     
  129. /**  
  130.   * @brief  Configure PA.00 in interrupt mode  
  131.   * @param  None  
  132.   * @retval None  
  133.   */    
  134. void EXTIkeyS1_Config(void)    
  135. {    
  136.   /* Enable GPIOA clock */    
  137.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);    
  138.       
  139.   /* Configure PA.00 pin as input floating */    
  140.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;    //GPIOC.8 中断线以及中断初始化配置 下降沿触发
  141.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;    
  142.   GPIO_Init(GPIOC, &GPIO_InitStructure);    
  143.     
  144.   /* Enable AFIO clock */    
  145.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);    
  146.     
  147.   /* Connect EXTI0 Line to PA.00 pin */    
  148.   GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource8);    
  149.     
  150.   /* Configure EXTI0 line */    
  151.   EXTI_InitStructure.EXTI_Line = EXTI_Line8;    
  152.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;    
  153.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;      
  154.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;    
  155.   EXTI_Init(&EXTI_InitStructure);    
  156.     
  157.   /* Enable and set EXTI0 Interrupt to the lowest priority */    
  158.   NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;   //使能按键所在的外部中断通道  
  159.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;    
  160.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;    
  161.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;   //使能外部中断通道 
  162.   NVIC_Init(&NVIC_InitStructure);    
  163. }    
  164.     
  165. void EXTIkeyS2_Config(void)    
  166. {    
  167.   /* Enable GPIOA clock */    
  168.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);    
  169.       
  170.   /* Configure PA.00 pin as input floating */    
  171.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;   // GPIOC.9 中断线以及中断初始化配置 下降沿触发 
  172.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;    
  173.   GPIO_Init(GPIOC, &GPIO_InitStructure);    
  174.     
  175.   /* Enable AFIO clock */    
  176.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);    
  177.     
  178.   /* Connect EXTI0 Line to PA.00 pin */    
  179.   GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource9);    
  180.     
  181.   /* Configure EXTI0 line */    
  182.   EXTI_InitStructure.EXTI_Line = EXTI_Line10; 
    1. //GPIOC.10 中断线以及中断初始化配置 下降沿触发  
    2.   
       
  183.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;    
  184.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;      
  185.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;    
  186.   EXTI_Init(&EXTI_InitStructure);    
  187.     
  188.   /* Enable and set EXTI0 Interrupt to the lowest priority */    
  189.   NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;  //使能按键所在的外部中断通道   
  190.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;    
  191.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;    
  192.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    
  193.   NVIC_Init(&NVIC_InitStructure);    
  194. }    
  195.     
  196. /**  
  197.   * @brief  Configure PB.09 or PG.08 in interrupt mode  
  198.   * @param  None  
  199.   * @retval None  
  200.   */    
  201. void EXTIkeyS3_Config(void)    
  202. {    
  203.   /* Enable GPIOB clock */    
  204.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);    
  205.     
  206.   /* Configure PB.09 pin as input floating */    
  207.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11;    
  208.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;    
  209.   GPIO_Init(GPIOC, &GPIO_InitStructure);    
  210.     
  211.   /* Enable AFIO clock */    
  212.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);    
  213.   /* Connect EXTI9 Line to PB.09 pin */    
  214.   GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource10);    
  215.     
  216.   /* Configure EXTI9 line */    
  217.   EXTI_InitStructure.EXTI_Line = EXTI_Line10|EXTI_Line11;    
  218.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;    
  219.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;    
  220.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;    
  221.   EXTI_Init(&EXTI_InitStructure);    
  222.     
  223.   /* Enable and set EXTI9_5 Interrupt to the lowest priority */    
  224.   NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;    //使能按键所在的外部中断通道 
  225.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;    
  226.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;    
  227.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    
  228.     
  229.   NVIC_Init(&NVIC_InitStructure);    
  230. }    
  231. void EXTIkeyS4_Config(void)    
  232. {    
  233.   /* Enable GPIOB clock */    
  234.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);    
  235.     
  236.   /* Configure PB.09 pin as input floating */    
  237.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;    
  238.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;    
  239.   GPIO_Init(GPIOC, &GPIO_InitStructure);    
  240.     
  241.   /* Enable AFIO clock */    
  242.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);    
  243.   /* Connect EXTI9 Line to PB.09 pin */    
  244.   GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource11);    
  245.     
  246.   /* Configure EXTI9 line */    
  247.   EXTI_InitStructure.EXTI_Line = EXTI_Line11;    
  248.   EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;    
  249.   EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;    
  250.   EXTI_InitStructure.EXTI_LineCmd = ENABLE;    
  251.   EXTI_Init(&EXTI_InitStructure);    
  252.     
  253.   /* Enable and set EXTI9_5 Interrupt to the lowest priority */    
  254.   NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;    
  255.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;    
  256.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;    
  257.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    
  258.     
  259.   NVIC_Init(&NVIC_InitStructure);    
  260. }    
  261. /******************************************************************************/    
  262. /*            STM32F10x Peripherals Interrupt Handlers                        */    
  263. /******************************************************************************/    
  264.     
  265. /**  
  266.   * @brief  This function handles External lines 9 to 5 interrupt request.  
  267.   * @param  None  
  268.   * @retval None  
  269.   */    
  270. void EXTI9_5_IRQHandler(void)    
  271. {    
  272.     if(EXTI_GetITStatus(EXTI_Line8) != RESET)    
  273.   {    
  274.     /* Toggle LED1 */    
  275.      GPIO_SetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1);    
  276. printf("S1 interrupt ......\r\n");    
  277.     /* Clear the  EXTI line 0 pending bit */    
  278.     EXTI_ClearITPendingBit(EXTI_Line8);    
  279.         }    
  280.     if(EXTI_GetITStatus(EXTI_Line9) != RESET)    
  281.         {    
  282.      GPIO_SetBits(GPIOC,GPIO_Pin_2|GPIO_Pin_3);    
  283. printf("S2 interrupt ......\r\n");    
  284.     /* Clear the  EXTI line 0 pending bit */    
  285.     EXTI_ClearITPendingBit(EXTI_Line9);    
  286.     }    
  287.       
  288. }    
  289. void EXTI15_10_IRQHandler(void)    
  290. {    
  291.   if(EXTI_GetITStatus(EXTI_Line10) != RESET)    
  292.   {    
  293.     /* Toggle LED2 */    
  294.      GPIO_SetBits(GPIOC,GPIO_Pin_4|GPIO_Pin_5);    
  295. printf("S3 interrupt ......\r\n");    
  296.     /* Clear the  EXTI line 9 pending bit */    
  297.     EXTI_ClearITPendingBit(EXTI_Line10);    
  298.   }    
  299.     if(EXTI_GetITStatus(EXTI_Line11) != RESET)    
  300.   {    
  301.     /* Toggle LED2 */    
  302.      GPIO_SetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7);    
  303. printf("S4 interrupt ......\r\n");    
  304.     /* Clear the  EXTI line 9 pending bit */    
  305.     EXTI_ClearITPendingBit(EXTI_Line11);    
  306.   }    
  307. }       
  308. #ifdef  USE_FULL_ASSERT    
  309.     
  310. /**  
  311.   * @brief  Reports the name of the source file and the source line number  
  312.   *         where the assert_param error has occurred.  
  313.   * @param  file: pointer to the source file name  
  314.   * @param  line: assert_param error line source number  
  315.   * @retval None  
  316.   */    
  317. void assert_failed(uint8_t* file, uint32_t line)    
  318. {     
  319.   /* User can add his own implementation to report the file name and line number,  
  320.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */    
  321.     
  322.   /* Infinite loop */    
  323.   while (1)    
  324.   {    
  325.   }    
  326. }        
  327. #endif       
  328. #ifdef __GNUC__    
  329.   /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf  
  330.      set to 'Yes') calls __io_putchar() */    
  331.   #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)    
  332. #else    
  333.   #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)    
  334. #endif /* __GNUC__ */       
  335. /**  
  336.   * @brief  Retargets the C library printf function to the USART.  
  337.   * @param  None  
  338.   * @retval None  
  339.   */    
  340. PUTCHAR_PROTOTYPE    
  341. {    
  342.   /* Place your implementation of fputc here */    
  343.   /* e.g. write a character to the USART */    
  344.   USART_SendData(EVAL_COM1, (uint8_t) ch);    
  345.     
  346.   /* Loop until the end of transmission */    
  347.   while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)    
  348.   {}        
  349.   return ch;    
  350. }        
  351. #ifdef  USE_FULL_ASSERT        
  352. /**  
  353.   * @brief  Reports the name of the source file and the source line number  
  354.   *         where the assert_param error has occurred.  
  355.   * @param  file: pointer to the source file name  
  356.   * @param  line: assert_param error line source number  
  357.   * @retval None  
  358.   */    
  359. void assert_failed(uint8_t* file, uint32_t line)    
  360. {     
  361.   /* User can add his own implementation to report the file name and line number,  
  362.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */       
  363.   /* Infinite loop */    
  364.   while (1)    
  365.   {    
  366.   }    
  367. }        
  368. #endif      


菜鸟
2014-12-23 20:16:56     打赏
7楼
  1. /* Includes ------------------------------------------------------------------*/  
  2. #include "stm32f10x.h"  
  3. #include "stm32_eval.h"  
  4. #include <stdio.h>  
  5. /** @addtogroup STM32F10x_StdPeriph_Examples 
  6.   * @{ 
  7.   */  
  8.   
  9. /** @addtogroup EXTI_Config 
  10.   * @{ 
  11.   */   
  12.   
  13. /* Private typedef -----------------------------------------------------------*/  
  14. /* Private define ------------------------------------------------------------*/  
  15. /* Private macro -------------------------------------------------------------*/  
  16. /* Private variables ---------------------------------------------------------*/  
  17. EXTI_InitTypeDef   EXTI_InitStructure;  
  18. GPIO_InitTypeDef   GPIO_InitStructure;  
  19. NVIC_InitTypeDef   NVIC_InitStructure;  
  20. USART_InitTypeDef USART_InitStructure;  
  21. USART_ClockInitTypeDef USART_ClockInitStructure;  
  22. TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;  
  23. TIM_OCInitTypeDef  TIM_OCInitStructure;  
  24. long flag,temp,num;  
  25. void RCC_Configuration(void)  
  26. {/* 
  27.   RCC_DeInit(); 
  28.      
  29.   RCC_HSICmd(ENABLE); 
  30.   while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET); 
  31.    
  32.   RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI); 
  33.    
  34.   RCC_HSEConfig(RCC_HSE_OFF); 
  35.   RCC_LSEConfig(RCC_LSE_OFF); 
  36.   RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //  72HMz 
  37.   RCC_PLLCmd(ENABLE); 
  38.   while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET); 
  39.   RCC_ADCCLKConfig(RCC_PCLK2_Div4); 
  40.   RCC_PCLK2Config(RCC_HCLK_Div1); 
  41.   RCC_PCLK1Config(RCC_HCLK_Div2); 
  42.   RCC_HCLKConfig(RCC_SYSCLK_Div1); 
  43.   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); 
  44.   while(RCC_GetSYSCLKSource() != 0x08); 
  45. */  
  46.     SystemInit();  
  47.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);  
  48.   GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG  
  49.    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);  
  50.    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG  
  51.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;  
  52.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  53.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
  54.   GPIO_Init(GPIOD, &GPIO_InitStructure);  
  55.     GPIO_ResetBits(GPIOD,GPIO_Pin_2);  
  56.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);  
  57.  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG  
  58.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;  
  59.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  60.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
  61.   GPIO_Init(GPIOC, &GPIO_InitStructure);  
  62.     GPIO_SetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);  
  63.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);  
  64.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);  
  65.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7, ENABLE);  
  66.   
  67.   
  68.           
  69. }  
  70.   
  71.   
  72. void USART_int(long BaudRate)  
  73. {  
  74.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);  
  75.        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;  
  76.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;  
  77.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   
  78.     GPIO_Init(GPIOA, &GPIO_InitStructure);  
  79.     /* PA10 USART1_Rx  */  
  80.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  
  81.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
  82.     GPIO_Init(GPIOA, &GPIO_InitStructure);  
  83.   /* USARTx configured as follow: 
  84.         - BaudRate = 115200 baud   
  85.         - Word Length = 8 Bits 
  86.         - One Stop Bit 
  87.         - No parity 
  88.         - Hardware flow control disabled (RTS and CTS signals) 
  89.         - Receive and transmit enabled 
  90.   */  
  91.   USART_InitStructure.USART_BaudRate = BaudRate;//??????  
  92.   USART_InitStructure.USART_WordLength = USART_WordLength_8b;//???????8bit  
  93.   USART_InitStructure.USART_StopBits = USART_StopBits_1;//????1  
  94.   USART_InitStructure.USART_Parity = USART_Parity_No;//????  
  95.   USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//??????none  
  96.   USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//??????????  
  97.     USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;       
  98.   USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;        
  99.   USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;        
  100.   USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;  
  101.   USART_ClockInit(USART1, &USART_ClockInitStructure);  
  102.   USART_Init(USART1, &USART_InitStructure);  
  103.   USART_Cmd(USART1, ENABLE);  
  104.     USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);  
  105.   USART_Cmd(USART1, ENABLE);  
  106. }  
  107.   
  108. void NVIC_Configuration(void)  
  109. {  
  110.   NVIC_InitTypeDef NVIC_InitStructure;  
  111.   
  112.   /* Enable the TIM2 global Interrupt */  
  113.   NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;  
  114.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  
  115.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;  
  116.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
  117.   NVIC_Init(&NVIC_InitStructure);  
  118.       
  119.     NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;  
  120.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  
  121.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;  
  122.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
  123.     NVIC_Init(&NVIC_InitStructure);  
  124.       
  125.     NVIC_InitStructure.NVIC_IRQChannel = TIM7_IRQn;  
  126.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  
  127.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;  
  128.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
  129.       NVIC_Init(&NVIC_InitStructure);  
  130.       
  131.     /* Time base configuration */  
  132.   TIM_TimeBaseStructure.TIM_Period = 24000;  
  133.   TIM_TimeBaseStructure.TIM_Prescaler = 0;  
  134.   TIM_TimeBaseStructure.TIM_ClockDivision = 0;  
  135.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  
  136.   
  137.       
  138.     /*NVIC_InitStructure.NVIC_IRQChannel =TIM8_CC_IRQn; 
  139.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; 
  140.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; 
  141.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; 
  142.       NVIC_Init(&NVIC_InitStructure);*/  
  143. }  
  144.   
  145. /* Private functions ---------------------------------------------------------*/  
  146.   
  147. /** 
  148.   * @brief  Main program. 
  149.   * @param  None 
  150.   * @retval None 
  151.   */  
  152.   
  153. void delay_us(u32 n)  
  154. {  
  155.     u8 j;  
  156.     while(n--)  
  157.     for(j=0;j<10;j++);  
  158. }  
  159.   
  160. void  delay_ms(u32 n)  
  161. {  
  162.     while(n--)  
  163.     delay_us(1500);  
  164. }  
  165.   
  166.   
  167. int main(void)  
  168. {  
  169.   /*!< At this stage the microcontroller clock setting is already configured,  
  170.        this is done through SystemInit() function which is called from startup 
  171.        file (startup_stm32f10x_xx.s) before to branch to application main. 
  172.        To reconfigure the default setting of SystemInit() function, refer to 
  173.        system_stm32f10x.c file 
  174.      */       
  175.          
  176.   /* System Clocks Configuration */  
  177.   
  178.   RCC_Configuration();  
  179.   
  180. NVIC_Configuration();  
  181. USART_int(115200);  
  182.     printf(" config done...\r\n");  
  183.   
  184.     
  185.   TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);  
  186.   TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE );   
  187.     
  188.       
  189.      TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);  
  190.   TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE );   
  191.       
  192.      TIM_TimeBaseInit(TIM7, &TIM_TimeBaseStructure);  
  193.   TIM_ITConfig(TIM7,TIM_IT_Update,ENABLE );   
  194.       
  195.    
  196.     
  197.   /* TIM2 enable counter */  
  198.   TIM_Cmd(TIM2, ENABLE);  
  199.      TIM_Cmd(TIM3, ENABLE);  
  200.          TIM_Cmd(TIM7, ENABLE);  
  201.   
  202.   while (1){  
  203.         if(flag == 2000)  
  204.         {printf("TIM2 interrupt......\r\n");  
  205.  GPIO_ResetBits(GPIOC,GPIO_Pin_2|GPIO_Pin_3);  
  206.         delay_ms(150);  
  207.         GPIO_ResetBits(GPIOC,GPIO_Pin_2|GPIO_Pin_3);  
  208.           flag = 0;  
  209.   }  
  210.   
  211.         if(temp == 3000)  
  212.               
  213.         {printf("TIM3 interrupt......\r\n");  
  214.             GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7);  
  215.         delay_ms(150);  
  216.         GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7);  
  217.          temp = 0;  
  218.     
  219.             
  220.                   
  221.   }  
  222.   
  223. }  
  224.   
  225.   
  226. }  
  227. void TIM2_IRQHandler(void//TIM3 ??  
  228. {  
  229. if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) //?? TIM3 ????????  
  230. {  
  231. TIM_ClearITPendingBit(TIM2, TIM_IT_Update ); //?? TIM3 ??????  
  232.     flag++;  
  233.   
  234. }  
  235. }  
  236. void TIM3_IRQHandler(void//TIM3 ??  
  237. {  
  238. if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //?? TIM3 ????????  
  239. {  
  240. TIM_ClearITPendingBit(TIM3, TIM_IT_Update ); //?? TIM3 ??????  
  241.     temp++;  
  242.   
  243. }  
  244. }  
  245.   
  246.   
  247.   
  248.   
  249.   
  250.   
  251. #ifdef  USE_FULL_ASSERT  
  252.   
  253. /** 
  254.   * @brief  Reports the name of the source file and the source line number 
  255.   *         where the assert_param error has occurred. 
  256.   * @param  file: pointer to the source file name 
  257.   * @param  line: assert_param error line source number 
  258.   * @retval None 
  259.   */  
  260. void assert_failed(uint8_t* file, uint32_t line)  
  261. {   
  262.   /* User can add his own implementation to report the file name and line number, 
  263.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  
  264.   
  265.   /* Infinite loop */  
  266.   while (1)  
  267.   {  
  268.   }  
  269. }  
  270.   
  271. #endif  
  272.   
  273. /** 
  274.   * @} 
  275.   */   
  276.   
  277. /** 
  278.   * @} 
  279.   */   
  280.   
  281. #ifdef __GNUC__  
  282.   /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf 
  283.      set to 'Yes') calls __io_putchar() */  
  284.   #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)  
  285. #else  
  286.   #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)  
  287. #endif /* __GNUC__ */  
  288.     
  289.   
  290.   
  291. /** 
  292.   * @brief  Retargets the C library printf function to the USART. 
  293.   * @param  None 
  294.   * @retval None 
  295.   */  
  296. PUTCHAR_PROTOTYPE  
  297. {  
  298.   /* Place your implementation of fputc here */  
  299.   /* e.g. write a character to the USART */  
  300.   USART_SendData(EVAL_COM1, (uint8_t) ch);  
  301.   
  302.   /* Loop until the end of transmission */  
  303.   while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)  
  304.   {}  
  305.   
  306.   return ch;  
  307. }  
  308.   
  309. #ifdef  USE_FULL_ASSERT  
  310.   
  311. /** 
  312.   * @brief  Reports the name of the source file and the source line number 
  313.   *         where the assert_param error has occurred. 
  314.   * @param  file: pointer to the source file name 
  315.   * @param  line: assert_param error line source number 
  316.   * @retval None 
  317.   */  
  318. void assert_failed(uint8_t* file, uint32_t line)  
  319. {   
  320.   /* User can add his own implementation to report the file name and line number, 
  321.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  
  322.   
  323.   /* Infinite loop */  
  324.   while (1)  
  325.   {  
  326.   }  
  327. }  
  328.   
  329. #endif  
  330.   
  331. /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/  

菜鸟
2014-12-25 22:58:50     打赏
8楼
  1. #include "stm32f10x.h"    
  2. #include "stm32_eval.h"    
  3. #include    "stdio.h"    
  4. #include "math.h"    
  5. #define buff_size  16;         
  6. char rx_buff[], rx_buff_count=0;   
  7. GPIO_InitTypeDef  GPIO_InitStructure;    
  8. USART_InitTypeDef  USART_InitStructure;    
  9. NVIC_InitTypeDef  NVIC_InitStructure;    
  10. USART_ClockInitTypeDef  USART_ClockInitStructure; 
  11. void RCC_Configuration(void)    
  12. {    
  13.     RCC_DeInit();    
  14.     RCC_HSICmd(ENABLE);    
  15.     while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);    
  16.     RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);    
  17.     RCC_HSEConfig(RCC_HSE_OFF);    
  18.     RCC_LSEConfig(RCC_LSE_OFF);    
  19.     RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //  72HMz    
  20.     RCC_PLLCmd(ENABLE);    
  21.     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);    
  22.     RCC_ADCCLKConfig(RCC_PCLK2_Div4);    
  23.     RCC_PCLK2Config(RCC_HCLK_Div1);    
  24.     RCC_PCLK1Config(RCC_HCLK_Div2);    
  25.     RCC_HCLKConfig(RCC_SYSCLK_Div1);    
  26.     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);    
  27.     while(RCC_GetSYSCLKSource() != 0x08);    
  28.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);
  29.     GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG    
  30.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;    
  31.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    
  32.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    
  33.     GPIO_Init(GPIOD, &GPIO_InitStructure);    
  34.     GPIO_ResetBits(GPIOD,GPIO_Pin_2);   
  35. }    
  36. void GPIO_INIT()    
  37. {    
  38.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);   
  39.     
  40.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;    
  41.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    
  42.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     
  43.     GPIO_Init(GPIOC, &GPIO_InitStructure);  
  44. }        
  45. void USART_int(long BaudRate)    
  46. {    
  47.      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);  
  48.    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;     
  49.    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;    
  50.    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;     
  51.    GPIO_Init(GPIOA, &GPIO_InitStructure);    
  52.    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;   
  53.    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;   
  54.    GPIO_Init(GPIOA, &GPIO_InitStructure);    
  55.   /* USARTx configured as follow:  
  56.         - BaudRate = 115200 baud    
  57.         - Word Length = 8 Bits  
  58.         - One Stop Bit  
  59.         - No parity  
  60.         - Hardware flow control disabled (RTS and CTS signals)  
  61.         - Receive and transmit enabled  
  62.   */    
  63.     USART_InitStructure.USART_BaudRate = BaudRate;   
  64.     USART_InitStructure.USART_WordLength = USART_WordLength_8b;  
  65.     USART_InitStructure.USART_StopBits = USART_StopBits_1;    
  66.     USART_InitStructure.USART_Parity = USART_Parity_No;    
  67.     USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;  
  68.     USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;   
  69.     USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;         
  70.   USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;          
  71.   USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;          
  72.   USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;    
  73.     USART_ClockInit(USART1, &USART_ClockInitStructure);    
  74.     USART_Init(USART1, &USART_InitStructure);   
  75.     USART_Cmd(USART1, ENABLE);     
  76.     USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);    
  77.     USART_Cmd(USART1, ENABLE);    
  78.   /* Configure four bit for preemption priority */    
  79.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);   
  80.   /* Enable the USART1 Interrupt */    
  81.     NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;     
  82.     NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 15;    
  83.     NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    
  84.     NVIC_Init(&NVIC_InitStructure);//?????    
  85. }        
  86. /*delay_us*/     
  87. void delay_us(u32 n)    
  88. {    
  89.     u8 j;    
  90.     while(n--)    
  91.     for(j=0;j<10;j++);    
  92. }    
  93. /*delay_ms*/     
  94. void  delay_ms(u32 n)    
  95. {    
  96.     while(n--)    
  97.     delay_us(1000);    
  98. }       
  99. void USART_SendStr(char *str)  
  100. {    
  101.    while((*str)!='\0')   
  102.     {       
  103.         USART_SendData(USART1,*str++);    
  104.         while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);    
  105.     }    
  106. }        
  107. unsigned int translate(char *S,char j)   
  108. {    
  109.     unsigned int a[4],sum=0;    
  110.     char i;    
  111.     for(i=0;i<j;i++)    
  112.     {    
  113.         a[i]=S[5+j-1-i]-48;   
  114.         sum+=a[i]*pow(10,i);  
  115.     }    
  116.     return sum;  
  117. }        
  118. void func(char *S,char LEN)    
  119. {     
  120.     char count;//    
  121.     unsigned int sum,i,j,k;    
  122.     if((LEN!=6)&(LEN!=7)&(LEN!=8)&(LEN!=9))   
  123.     {USART_SendStr("\r\n Erro input!!!\r\n");}  
  124.     else     
  125.     {    
  126.         count=LEN-5;  
  127.         sum = translate(S,count);  
  128.         GPIO_SetBits(GPIOC,0x000000ff);   
  129.         for(k=0;k<3;k++)  
  130.         {    
  131.             i=0x00000100;    
  132.             for(j=1;j<=8;j++)   
  133.             {    
  134.                 i>>=1;    
  135.                 GPIO_ResetBits(GPIOC,i);       
  136.                 delay_ms(50);    
  137.                 GPIO_SetBits(GPIOC,i);    
  138.                 delay_ms(sum);   
  139.             }    
  140.         }    
  141.     }    
  142. }    
  143.     
  144. void input_ASK()    
  145. {    
  146.     char j;    
  147.     func(rx_buff,rx_buff_count);    
  148.     rx_buff_count=0;    
  149.     for (j=0;j<rx_buff_count;j++)    
  150.     {rx_buff[j]='\0';}   
  151.     USART_SendStr("\n>");    
  152. }    
  153.     
  154. int main(void)    
  155. {     
  156.     RCC_Configuration();    
  157.     GPIO_INIT();    
  158.     USART_int(9600);    
  159.     GPIO_ResetBits(GPIOC,0x000000ff);  //LED灯亮  
  160.     delay_ms(200);    
  161.     GPIO_SetBits(GPIOC,0x000000ff); //LED灯灭  
  162.     USART_SendStr("SyStem booting......\r\n");  
  163.     USART_SendStr("\n>");//     
  164.     while(1)    
  165.         {}    
  166. }    
  167.     
  168. void USART1_IRQHandler(void)     
  169. {     
  170.   while(USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET)    
  171.   {  }     
  172.     if(USART_ReceiveData(USART1)==0x0d)  
  173.     {input_ASK();}    
  174.     else    
  175.     {    
  176.         USART_SendData(USART1,USART_ReceiveData(USART1));    
  177.         rx_buff[rx_buff_count]= USART_ReceiveData(USART1);    
  178.         rx_buff_count++;    
  179.     }    
  180.     USART_ClearFlag(USART1, USART_FLAG_RXNE);    

菜鸟
2014-12-25 23:04:31     打赏
9楼
  1. #include "stm32f10x.h"    
  2. #include "stm32_eval.h"    
  3. #include <stdio.h>    
  4. /** @addtogroup STM32F10x_StdPeriph_Examples  
  5.   * @{  
  6.   */     
  7. /** @addtogroup EXTI_Config  
  8.   * @{  
  9.   */      
  10. /* Private typedef-   
  11. /* Private define -*/    
  12. /* Private macro -*/    
  13. /* Private variables -*/    
  14. EXTI_InitTypeDef   EXTI_InitStructure;    
  15. GPIO_InitTypeDef   GPIO_InitStructure;    
  16. NVIC_InitTypeDef   NVIC_InitStructure;    
  17. USART_InitTypeDef USART_InitStructure;    
  18. USART_ClockInitTypeDef USART_ClockInitStructure;    
  19. TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;    
  20. TIM_OCInitTypeDef  TIM_OCInitStructure;    
  21. long flag,temp,num;    
  22. void RCC_Configuration(void)    
  23. {
  24.   RCC_DeInit();      
  25.   RCC_HSICmd(ENABLE);  
  26.   while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);     
  27.   RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);   
  28.   RCC_HSEConfig(RCC_HSE_OFF);  
  29.   RCC_LSEConfig(RCC_LSE_OFF);  
  30.   RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9);  
  31.   RCC_PLLCmd(ENABLE);  
  32.   while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);  
  33.   RCC_ADCCLKConfig(RCC_PCLK2_Div4);  
  34.   RCC_PCLK2Config(RCC_HCLK_Div1);  
  35.   RCC_PCLK1Config(RCC_HCLK_Div2);  
  36.   RCC_HCLKConfig(RCC_SYSCLK_Div1);  
  37.   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);  
  38.   while(RCC_GetSYSCLKSource() != 0x08);     
  39.     SystemInit();    
  40.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE) 
  41.   GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);   
  42.    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);  
  43.    GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);    
  44.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;    
  45.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    
  46.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    
  47.   GPIO_Init(GPIOD, &GPIO_InitStructure);    
  48.     GPIO_ResetBits(GPIOD,GPIO_Pin_2);    
  49.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);    
  50.  GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);    
  51.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;    
  52.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    
  53.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    
  54.   GPIO_Init(GPIOC, &GPIO_InitStructure);    
  55.     GPIO_SetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);    
  56.       RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);    
  57.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);    
  58.             RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM7, ENABLE);  
  59.             
  60. }    
  61.     
  62.     
  63. void USART_int(long BaudRate)    
  64. {    
  65.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);    
  66.        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;    
  67.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;    
  68.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;     
  69.     GPIO_Init(GPIOA, &GPIO_InitStructure);    
  70.     /* PA10 USART1_Rx  */    
  71.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;    
  72.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;    
  73.     GPIO_Init(GPIOA, &GPIO_InitStructure);    
  74.   /* USARTx configured as follow:  
  75.         - BaudRate = 115200 baud    
  76.         - Word Length = 8 Bits  
  77.         - One Stop Bit  
  78.         - No parity  
  79.         - Hardware flow control disabled (RTS and CTS signals)  
  80.         - Receive and transmit enabled  
  81.   */    
  82.   USART_InitStructure.USART_BaudRate = BaudRate;    
  83.   USART_InitStructure.USART_WordLength = USART_WordLength_8b;    
  84.   USART_InitStructure.USART_StopBits = USART_StopBits_1;    
  85.   USART_InitStructure.USART_Parity = USART_Parity_No;    
  86.   USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;    
  87.   USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;    
  88.     USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;         
  89.     USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;          
  90.     USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;          
  91.     USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;    
  92.     USART_ClockInit(USART1, &USART_ClockInitStructure);    
  93.   USART_Init(USART1, &USART_InitStructure);    
  94.   USART_Cmd(USART1, ENABLE);    
  95.     USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);    
  96.  USART_Cmd(USART1, ENABLE);    
  97. }    
  98.     
  99. void NVIC_Configuration(void)    
  100. {    
  101.   NVIC_InitTypeDef NVIC_InitStructure;    
  102.     
  103.   /* Enable the TIM2 global Interrupt */    
  104.   NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;    
  105.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;    
  106.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;    
  107.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    
  108.   NVIC_Init(&NVIC_InitStructure);    
  109.         
  110.       NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;    
  111.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;    
  112.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;    
  113.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    
  114.       NVIC_Init(&NVIC_InitStructure);    
  115.         
  116.       NVIC_InitStructure.NVIC_IRQChannel = TIM7_IRQn;    
  117.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;    
  118.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;    
  119.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;    
  120.       NVIC_Init(&NVIC_InitStructure);    
  121.         
  122.     /* Time base configuration */    
  123.   TIM_TimeBaseStructure.TIM_Period = 24000;    
  124.   TIM_TimeBaseStructure.TIM_Prescaler = 0;    
  125.   TIM_TimeBaseStructure.TIM_ClockDivision = 0;    
  126.   TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;    
  127.     
  128.         
  129.     /*NVIC_InitStructure.NVIC_IRQChannel =TIM8_CC_IRQn;  
  130.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;  
  131.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;  
  132.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
  133.       NVIC_Init(&NVIC_InitStructure);*/    
  134. }    
  135.     
  136. /* Private functions ---------------------------------------------------------*/    
  137.     
  138. /**  
  139.   * @brief  Main program.  
  140.   * @param  None  
  141.   * @retval None  
  142.   */    
  143.     
  144. void delay_us(u32 n)    
  145. {    
  146.     u8 j;    
  147.     while(n--)    
  148.     for(j=0;j<10;j++);    
  149. }    
  150.     
  151. void  delay_ms(u32 n)    
  152. {    
  153.     while(n--)    
  154.     delay_us(1000);    
  155. }    
  156.     
  157.     
  158. int main(void)    
  159. {    
  160.   /*!< At this stage the microcontroller clock setting is already configured,   
  161.        this is done through SystemInit() function which is called from startup  
  162.        file (startup_stm32f10x_xx.s) before to branch to application main.  
  163.        To reconfigure the default setting of SystemInit() function, refer to  
  164.        system_stm32f10x.c file  
  165.      */         
  166.            
  167.   /* System Clocks Configuration */    
  168.     
  169.   RCC_Configuration();    
  170.     
  171. NVIC_Configuration();    
  172. USART_int(115200);    
  173.     printf(" config done...\r\n");    
  174.     
  175.       
  176.   TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);    
  177.   TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE );     
  178.       
  179.         
  180.      TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);    
  181.   TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE );     
  182.         
  183.      TIM_TimeBaseInit(TIM7, &TIM_TimeBaseStructure);    
  184.   TIM_ITConfig(TIM7,TIM_IT_Update,ENABLE );     
  185.         
  186.      
  187.       
  188.   /* TIM2 enable counter */    
  189.   TIM_Cmd(TIM2, ENABLE);    
  190.      TIM_Cmd(TIM3, ENABLE);    
  191.          TIM_Cmd(TIM7, ENABLE);    
  192.     
  193.   while (1){    
  194.         if(flag == 2000)    
  195.         {printf("TIM2 interrupt......\r\n");    
  196.  GPIO_ResetBits(GPIOC,GPIO_Pin_1|GPIO_Pin_0);    
  197.         delay_ms(150);    
  198.         GPIO_ResetBits(GPIOC,GPIO_Pin_1|GPIO_Pin_0);    
  199.           flag = 0;    
  200.   }    
  201.     
  202.         if(temp == 3000)    
  203.                 
  204.         {printf("TIM3 interrupt......\r\n");    
  205.             GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7);    
  206.         delay_ms(150);    
  207.         GPIO_ResetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7);    
  208.          temp = 0;    
  209.       
  210.               
  211.                     
  212.   }    
  213.     
  214. }    
  215.     
  216.     
  217. }    
  218. void TIM2_IRQHandler(void)    
  219. {    
  220. if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)     
  221. {    
  222. TIM_ClearITPendingBit(TIM2, TIM_IT_Update );     
  223.     flag++;    
  224.     
  225. }    
  226. }    
  227. void TIM3_IRQHandler(void)    
  228. {    
  229. if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)     
  230. {    
  231. TIM_ClearITPendingBit(TIM3, TIM_IT_Update );    
  232.     temp++;    
  233.     
  234. }    
  235. #ifdef  USE_FULL_ASSERT    
  236.     
  237. /**  
  238.   * @brief  Reports the name of the source file and the source line number  
  239.   *         where the assert_param error has occurred.  
  240.   * @param  file: pointer to the source file name  
  241.   * @param  line: assert_param error line source number  
  242.   * @retval None  
  243.   */    
  244. void assert_failed(uint8_t* file, uint32_t line)    
  245. {     
  246.   /* User can add his own implementation to report the file name and line number,  
  247.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */    
  248.     
  249.   /* Infinite loop */    
  250.   while (1)    
  251.   {    
  252.   }    
  253. }    
  254.     
  255. #endif    
  256.     
  257. /**  
  258.   * @}  
  259.   */     
  260.     
  261. /**  
  262.   * @}  
  263.   */     
  264.     
  265. #ifdef __GNUC__    
  266.   /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf  
  267.      set to 'Yes') calls __io_putchar() */    
  268.   #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)    
  269. #else    
  270.   #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)    
  271. #endif /* __GNUC__ */    
  272.       
  273.     
  274.     
  275. /**  
  276.   * @brief  Retargets the C library printf function to the USART.  
  277.   * @param  None  
  278.   * @retval None  
  279.   */    
  280. PUTCHAR_PROTOTYPE    
  281. {    
  282.   /* Place your implementation of fputc here */    
  283.   /* e.g. write a character to the USART */    
  284.   USART_SendData(EVAL_COM1, (uint8_t) ch);    
  285.     
  286.   /* Loop until the end of transmission */    
  287.   while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)    
  288.   {}    
  289.     
  290.   return ch;    
  291. }    
  292.     
  293. #ifdef  USE_FULL_ASSERT    
  294.     
  295. /**  
  296.   * @brief  Reports the name of the source file and the source line number  
  297.   *         where the assert_param error has occurred.  
  298.   * @param  file: pointer to the source file name  
  299.   * @param  line: assert_param error line source number  
  300.   * @retval None  
  301.   */    
  302. void assert_failed(uint8_t* file, uint32_t line)    
  303. {     
  304.   /* User can add his own implementation to report the file name and line number,  
  305.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */    
  306.     
  307.   /* Infinite loop */    
  308.   while (1)    
  309.   {    
  310.   }    
  311. }    
  312.     
  313. #endif    

菜鸟
2014-12-25 23:13:59     打赏
10楼
  1. #include "stm32f10x.h"  
  2. #include "stm32_eval.h"  
  3. #include      
  4. volatile int flag;  
  5. #define Set_B20()    GPIO_SetBits(GPIOC, GPIO_Pin_12)//上拉关闭pc12  
  6. #define Reset_B20()  GPIO_ResetBits(GPIOC, GPIO_Pin_12)//下拉打开pc12  
  7. #define Read_B20()   GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_12)//读pc状态  
  8. unsigned char Error_Flag=0;  
  9. unsigned char zf=0;  
  10. GPIO_InitTypeDef   GPIO_InitStructure;  
  11. USART_InitTypeDef USART_InitStructure;  
  12. USART_ClockInitTypeDef USART_ClockInitStructure;  
  13. void delay_us(u32 n)      
  14. {      
  15.     u8 j;      
  16.     while(n--)      
  17.     for(j=0;j<10;j++);      
  18. }        
  19. void  delay_ms(u32 n)      
  20. {      
  21.     while(n--)      
  22.     delay_us(1000);      
  23. }   
  24.   
  25. void SysTick_Configuration(void)  
  26. {  
  27.   /* Setup SysTick Timer for 10 msec interrupts  */  
  28.   if (SysTick_Config(48000))                
  29.   {   
  30.     /* Capture error */   
  31.     while (1);  
  32.   }    
  33.  /* Configure the SysTick handler priority */  
  34.   NVIC_SetPriority(SysTick_IRQn, 0x0);          
  35. }  
  36.   
  37. void RCC_Configuration(void)  
  38. {  
  39.     RCC_DeInit();//将RCC寄存器重设为缺省值       
  40.   RCC_HSICmd(ENABLE);//使能内部高速晶振    
  41.   while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET);//HSI晶振返回reset    
  42.   RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);//选择HSI作为系统时钟     
  43.   RCC_HSEConfig(RCC_HSE_OFF);//HSE晶振关    
  44.   RCC_LSEConfig(RCC_LSE_OFF);//LSE晶振关    
  45.   RCC_PLLConfig(RCC_PLLSource_HSI_Div2,RCC_PLLMul_9); //  72HMz    
  46.   RCC_PLLCmd(ENABLE);//使能PLL状态    
  47.   while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET);    
  48.   RCC_ADCCLKConfig(RCC_PCLK2_Div4);//ADC时钟=PCLK/4    
  49.   RCC_PCLK2Config(RCC_HCLK_Div1);//APB2时钟=HCLK    
  50.   RCC_PCLK1Config(RCC_HCLK_Div2);//APB1时钟=HCLK/2    
  51.   RCC_HCLKConfig(RCC_SYSCLK_Div1);//AHB时钟=系统时钟    
  52.   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//选择PLL作为系统时钟    
  53.   while(RCC_GetSYSCLKSource() != 0x08);    
  54.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_AFIO, ENABLE);    
  55.   GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG    
  56.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;    
  57.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    
  58.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    
  59.   GPIO_Init(GPIOD, &GPIO_InitStructure);    
  60.   GPIO_ResetBits(GPIOD,GPIO_Pin_2);//关闭蜂鸣器    
  61.       
  62.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);  
  63.   GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG  
  64.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;  
  65.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  66.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
  67.   GPIO_Init(GPIOC, &GPIO_InitStructure);  
  68.     GPIO_SetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);  
  69.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);  
  70. }   
  71.   
  72. void USART_int(long BaudRate)  
  73. {  
  74.       RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);  
  75.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;  
  76.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  77.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   
  78.     GPIO_Init(GPIOA, &GPIO_InitStructure);  
  79.     /* PA10 USART1_Rx  */  
  80.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  
  81.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
  82.     GPIO_Init(GPIOA, &GPIO_InitStructure);  
  83.   /* USARTx configured as follow: 
  84.         - BaudRate = 115200 baud   
  85.         - Word Length = 8 Bits 
  86.         - One Stop Bit 
  87.         - No parity 
  88.         - Hardware flow control disabled (RTS and CTS signals) 
  89.         - Receive and transmit enabled 
  90.   */  
  91.   USART_InitStructure.USART_BaudRate = BaudRate;  
  92.   USART_InitStructure.USART_BaudRate = BaudRate;   
  93.   USART_InitStructure.USART_WordLength = USART_WordLength_8b;  
  94.   USART_InitStructure.USART_StopBits = USART_StopBits_1;   
  95.   USART_InitStructure.USART_Parity = USART_Parity_No;
  96.   USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; 
  97.   USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  98.   USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;
  99.   USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;          
  100.   USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;              
  101.   USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;
  102.   USART_ClockInit(USART1, &USART_ClockInitStructure);  
  103.   USART_Init(USART1, &USART_InitStructure);  
  104.   USART_Cmd(USART1, ENABLE);  
  105.   USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);   
  106.   USART_Cmd(USART1, ENABLE);  
  107. }  
  108.   
  109. void delay_18b20(u32 nus)
  110. {  
  111.     u16 i;  
  112.     while(nus--)  
  113.         for(i=12;i>0;i--);  
  114. }  
  115.   
  116. void Init18B20(void)
  117. {  
  118.   u8 aa=0;  
  119.   u8 count =0;  
  120.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  
  121.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;  
  122.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;  
  123.   GPIO_Init(GPIOC, &GPIO_InitStructure);  
  124.   Set_B20() ;  
  125.   delay_18b20(1);  
  126.   Reset_B20();  
  127.   
  128.   delay_18b20(480);  
  129.   Set_B20();  
  130.   delay_18b20(480);  
  131.     count=0;  
  132.     aa=Read_B20();  
  133.     while(!aa && count<100)     
  134.    {  
  135.     aa=Read_B20();  
  136.     count++;  
  137.    }  
  138.    if(count>=99)  
  139.         Error_Flag=1;  
  140.     else  
  141.         Error_Flag=0;  
  142.      
  143. }  
  144.     
  145. unsigned char Read18B20(void)
  146. {    
  147. unsigned char i=0;  
  148. unsigned char date=0;  
  149. u8 tempp;  
  150.    for(i=8;i>0;i--)  
  151.    {  
  152.    Reset_B20();
  153.    date>>=1;
  154.    delay_18b20(1);  
  155.    Set_B20();
  156.    delay_18b20(1);  
  157.    tempp=Read_B20();         
  158.    if(tempp)  
  159.    date|=0x80;   
  160.      delay_18b20(60);  
  161.     }  
  162.     return(date);  
  163. }  
  164. void Write18B20(unsigned char date)
  165. {  
  166.     unsigned char i=0;  
  167.     for (i=8; i>0; i--)  
  168.     {  
  169.         Reset_B20();   
  170.         delay_18b20(1);           
  171.         if(date & 0x01)           
  172.         {     
  173.             Set_B20();  
  174.         }  
  175.         else  
  176.         {   Reset_B20();}  
  177.         delay_18b20(60);  
  178.         date>>=1;        
  179.         Set_B20();  
  180.         delay_18b20(1);  
  181.               
  182.     }  
  183.     delay_18b20(15);  
  184. }  
  185.   
  186.  float Read_T()
  187. {     
  188.     unsigned char TUp,TDown;  
  189.     unsigned char fTemp;  
  190.     u8 TT=0;  
  191.   
  192.     float Temp = 0;  
  193.     Init18B20();  
  194.     Write18B20(0xcc);       
  195.     Write18B20(0x44);      
  196.     Init18B20();  
  197.     Write18B20(0xcc);     
  198.     Write18B20(0xbe);     
  199.     TDown = Read18B20();      
  200.     TUp = Read18B20();        
  201.       
  202.     if(TUp>0x7f)        
  203.     {  
  204.         TDown=~TDown;    
  205.         TUp=~TUp+1;   
  206.         TUp/=8;            
  207.         zf=1;           
  208.     }  
  209.     else  
  210.         zf=0;       
  211.   
  212.     fTemp=TDown&0x0f;         
  213.     TUp<<=4;  
  214.     TDown>>=4;  
  215.     TT=TUp|TDown;  
  216.     Temp=TT+(float)fTemp/16;          
  217.     return(Temp);  
  218. }  
  219.                                    
  220. int main(void)  
  221. {  
  222.   char ID[8];    
  223.   int i;    
  224.   RCC_Configuration();    
  225.   USART_int(115200);    
  226.   SysTick_Configuration();    
  227.   printf(" config done...\r\n");    
  228.   
  229.   delay_ms(1000);      
  230.   Init18B20();  
  231.   Write18B20(0x33);   
  232.   delay_18b20(20);    
  233.   for(i=0;i<8;i++)
  234. {  
  235.     ID[i] = Read18B20();
  236. }  
  237.   while(1)    
  238.     {  
  239.             if(flag == 300)    
  240.         {    
  241.           printf("At the moment of ID is:")   ;     
  242.           for(i=0;i<8;i++)         
  243.         {    
  244.           printf("%u",ID[i]);  
  245.         }    
  246.           printf("\r\n")  ;    
  247.         }    
  248.         if(flag == 500)    
  249.         {               
  250.           printf("The Temperature is:%f\r\n",Read_T()); 
  251.           printf("===================================================\r\n");    
  252.     }    
  253.     }    
  254. }    
  255.     
  256.   
  257. #ifdef  USE_FULL_ASSERT  
  258. void assert_failed(uint8_t* file, uint32_t line)  
  259. {   
  260.   while (1)  
  261.   {  
  262.   }  
  263. }  
  264.   
  265. #endif  
  266.   
  267. #ifdef __GNUC__  
  268.   /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf 
  269.      set to 'Yes') calls __io_putchar() */  
  270.   #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)  
  271. #else  
  272.   #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)  
  273. #endif /* __GNUC__ */  
  274.     
  275. PUTCHAR_PROTOTYPE  
  276. {  
  277.   /* Place your implementation of fputc here */  
  278.   /* e.g. write a character to the USART */  
  279.   USART_SendData(EVAL_COM1, (uint8_t) ch);  
  280.   
  281.   /* Loop until the end of transmission */  
  282.   while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)  
  283.   {}  
  284.   
  285.   return ch;  
  286. }  
  287.   
  288. #ifdef  USE_FULL_ASSERT  
  289. void assert_failed(uint8_t* file, uint32_t line)  
  290. {   
  291.   while (1)  
  292.   {  
  293.   }  
  294. }  
  295.   
  296. #endif  









共13条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]