view plaincopy to clipboardprint?
    /** 
      ****************************************************************************** 
      * @file    EXTI/EXTI_Config/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"  
    #include   
    /** @addtogroup STM32F10x_StdPeriph_Examples 
      * @{ 
      */  
      
    /** @addtogroup EXTI_Config 
      * @{ 
      */   
      
    /* Private typedef -----------------------------------------------------------*/  
    /* Private define ------------------------------------------------------------*/  
    /* Private macro -------------------------------------------------------------*/  
    /* Private variables ---------------------------------------------------------*/  
    EXTI_InitTypeDef   EXTI_InitStructure;  
    GPIO_InitTypeDef   GPIO_InitStructure;  
    NVIC_InitTypeDef   NVIC_InitStructure;  
    USART_InitTypeDef USART_InitStructure;  
    USART_ClockInitTypeDef USART_ClockInitStructure;  
    /* Private function prototypes -----------------------------------------------*/  
    void EXTIkeyS1_Config(void);  
    void EXTIkeyS2_Config(void);  
    void EXTIkeyS3_Config(void);  
    void EXTIkeyS4_Config(void);  
    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  
      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);  
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_AFIO, ENABLE);  
      GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//disable JTAG  
      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;  
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  
      GPIO_Init(GPIOC, &GPIO_InitStructure);  
        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);  
    }  
      
    void USART_int(long BaudRate)  
    {  
          RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_USART1,ENABLE);  
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;  
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;  
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;   
        GPIO_Init(GPIOA, &GPIO_InitStructure);  
        /* PA10 USART1_Rx  */  
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
        GPIO_Init(GPIOA, &GPIO_InitStructure);  
      /* USARTx configured as follow: 
            - BaudRate = 115200 baud   
            - Word Length = 8 Bits 
            - One Stop Bit 
            - No parity 
            - Hardware flow control disabled (RTS and CTS signals) 
            - Receive and transmit enabled 
      */  
      USART_InitStructure.USART_BaudRate = BaudRate;//??????  
      USART_InitStructure.USART_WordLength = USART_WordLength_8b;//???????8bit  
      USART_InitStructure.USART_StopBits = USART_StopBits_1;//????1  
      USART_InitStructure.USART_Parity = USART_Parity_No;//????  
      USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//??????none  
      USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;//??????????  
        USART_ClockInitStructure.USART_Clock = USART_Clock_Disable;       
      USART_ClockInitStructure.USART_CPOL = USART_CPOL_Low;        
      USART_ClockInitStructure.USART_CPHA = USART_CPHA_2Edge;        
      USART_ClockInitStructure.USART_LastBit = USART_LastBit_Disable;  
      USART_ClockInit(USART1, &USART_ClockInitStructure);  
      USART_Init(USART1, &USART_InitStructure);  
      USART_Cmd(USART1, ENABLE);  
        USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);  
      USART_Cmd(USART1, ENABLE);  
       
      /* Configure four bit for preemption priority */  
      NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);  
      /* Enable the USART1 Interrupt */  
      NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //  
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 15;  
      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
      NVIC_Init(&NVIC_InitStructure);  
    }  
view plaincopy to clipboardprint?
    void EXTIkeyS1_Config(void)  
    {  
      /* Enable GPIOA clock */  
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  
        
      /* Configure PA.00 pin as input floating */  
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;  
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
      GPIO_Init(GPIOA, &GPIO_InitStructure);  
      
      /* Enable AFIO clock */  
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);  
      
      /* Connect EXTI0 Line to PA.00 pin */  
      GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource8);  
      
      /* Configure EXTI0 line */  
      EXTI_InitStructure.EXTI_Line = EXTI_Line8;  
      EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;  
      EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;    
      EXTI_InitStructure.EXTI_LineCmd = ENABLE;  
      EXTI_Init(&EXTI_InitStructure);  
      
      /* Enable and set EXTI0 Interrupt to the lowest priority */  
      NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;  
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;  
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;  
      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
      NVIC_Init(&NVIC_InitStructure);  
    }  
      
    /** 
      * @brief  Configure PB.09 or PG.08 in interrupt mode 
      * @param  None 
      * @retval None 
      */  
    void EXTIkeyS2_Config(void)  
    {  
      /* Enable GPIOB clock */  
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  
      
      /* Configure PB.09 pin as input floating */  
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;  
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
      GPIO_Init(GPIOC, &GPIO_InitStructure);  
      
      /* Enable AFIO clock */  
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);  
      /* Connect EXTI9 Line to PB.09 pin */  
      GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource9);  
      
      /* Configure EXTI9 line */  
      EXTI_InitStructure.EXTI_Line = EXTI_Line9;  
      EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;  
      EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;  
      EXTI_InitStructure.EXTI_LineCmd = ENABLE;  
      EXTI_Init(&EXTI_InitStructure);  
      
      /* Enable and set EXTI9_5 Interrupt to the lowest priority */  
      NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;  
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;  
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;  
      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
      
      NVIC_Init(&NVIC_InitStructure);  
    }  
      
    void EXTIkeyS3_Config(void)  
    {  
      /* Enable GPIOB clock */  
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  
      
      /* Configure PB.10 pin as input floating */  
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;  
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
      GPIO_Init(GPIOC, &GPIO_InitStructure);  
      
      /* Enable AFIO clock */  
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);  
      /* Connect EXTI9 Line to PB.10 pin */  
      GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource10);  
      
      /* Configure EXTI10 line */  
      EXTI_InitStructure.EXTI_Line = EXTI_Line10;  
      EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;  
      EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;  
      EXTI_InitStructure.EXTI_LineCmd = ENABLE;  
      EXTI_Init(&EXTI_InitStructure);  
      
      /* Enable and set EXTI15_10 Interrupt to the lowest priority */  
      NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;  
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;  
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;  
      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
      
      NVIC_Init(&NVIC_InitStructure);  
    }  
      
    void EXTIkeyS4_Config(void)  
    {  
      /* Enable GPIOB clock */  
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);  
      
      /* Configure PB.11 pin as input floating */  
      GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;  
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
      GPIO_Init(GPIOC, &GPIO_InitStructure);  
      
      /* Enable AFIO clock */  
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);  
      /* Connect EXTI11 Line to PB.11 pin */  
      GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource11);  
      
      /* Configure EXTI11 line */  
      EXTI_InitStructure.EXTI_Line = EXTI_Line11;  
      EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;  
      EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;  
      EXTI_InitStructure.EXTI_LineCmd = ENABLE;  
      EXTI_Init(&EXTI_InitStructure);  
      
      /* Enable and set EXTI15_10 Interrupt to the lowest priority */  
      NVIC_InitStructure.NVIC_IRQChannel = EXTI15_10_IRQn;  
      NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0F;  
      NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x0F;  
      NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
      
      NVIC_Init(&NVIC_InitStructure);  
    }  
view plaincopy to clipboardprint?
    /* Private functions ---------------------------------------------------------*/  
      
    /** 
      * @brief  Main program. 
      * @param  None 
      * @retval None 
      */  
    int main(void)  
    {  
      RCC_Configuration();  
      EXTIkeyS1_Config();  
      EXTIkeyS2_Config();  
        EXTIkeyS3_Config();  
        EXTIkeyS4_Config();  
      USART_int(115200);  
        printf(" 请进行中断  
    \n");  
                
      while (1)  
      {  
      }  
    }  
      
    /** 
      * @brief  Configure PA.00 in interrupt mode 
      * @param  None 
      * @retval None 
      */  
      
    /******************************************************************************/  
    /*            STM32F10x Peripherals Interrupt Handlers                        */  
    /******************************************************************************/  
      
    /** 
      * @brief  This function handles External lines 9 to 5 interrupt request. 
      * @param  None 
      * @retval None 
      */  
    void EXTI9_5_IRQHandler(void)  
    {  
      if(EXTI_GetITStatus(EXTI_Line9) != RESET)  
      {  
         GPIO_SetBits(GPIOC,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);  
         printf("S2键中断  
    \n");  
        EXTI_ClearITPendingBit(EXTI_Line9);  
      }  
        if(EXTI_GetITStatus(EXTI_Line8) != RESET)  
      {  
         GPIO_SetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);  
         printf("S1键中断  
    \n");  
        EXTI_ClearITPendingBit(EXTI_Line8);  
      }  
    }  
      
    void EXTI15_10_IRQHandler(void)  
    {  
                if(EXTI_GetITStatus(EXTI_Line10) != RESET)  
      {  
         GPIO_ResetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1|GPIO_Pin_2|GPIO_Pin_3);  
         printf("S3键中断  
    \n");  
        EXTI_ClearITPendingBit(EXTI_Line10);  
      }  
            if(EXTI_GetITStatus(EXTI_Line11) != RESET)  
      {  
         GPIO_ResetBits(GPIOC,GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7);  
         printf("S4键中断  
    \n");  
        EXTI_ClearITPendingBit(EXTI_Line11);  
      }  
    }  
    #ifdef  USE_FULL_ASSERT  
      
    /** 
      * @brief  Reports the name of the source file and the source line number 
      *         where the assert_param error has occurred. 
      * @param  file: pointer to the source file name 
      * @param  line: assert_param error line source number 
      * @retval None 
      */  
    void assert_failed(uint8_t* file, uint32_t line)  
    {   
      /* User can add his own implementation to report the file name and line number, 
         ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  
      
      /* Infinite loop */  
      while (1)  
      {  
      }  
    }  
      
    #endif  
      
    /** 
      * @} 
      */   
      
    /** 
      * @} 
      */   
      
    #ifdef __GNUC__  
      /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf 
         set to 'Yes') calls __io_putchar() */  
      #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)  
    #else  
      #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)  
    #endif /* __GNUC__ */  
        
      
      
    /** 
      * @brief  Retargets the C library printf function to the USART. 
      * @param  None 
      * @retval None 
      */  
    PUTCHAR_PROTOTYPE  
    {  
      /* Place your implementation of fputc here */  
      /* e.g. write a character to the USART */  
      USART_SendData(EVAL_COM1, (uint8_t) ch);  
      
      /* Loop until the end of transmission */  
      while (USART_GetFlagStatus(EVAL_COM1, USART_FLAG_TC) == RESET)  
      {}  
      
      return ch;  
    }  
      
    #ifdef  USE_FULL_ASSERT  
      
    /** 
      * @brief  Reports the name of the source file and the source line number 
      *         where the assert_param error has occurred. 
      * @param  file: pointer to the source file name 
      * @param  line: assert_param error line source number 
      * @retval None 
      */  
    void assert_failed(uint8_t* file, uint32_t line)  
    {   
      /* User can add his own implementation to report the file name and line number, 
         ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */  
      
      /* Infinite loop */  
      while (1)  
      {  
      }  
    }  
      
    #endif  
      
    /******************* (C) COPYRIGHT 2011 STMicroelectronics *****END OF FILE****/  
	

 
					
				 
			
			
			
						
			 我要赚赏金
 我要赚赏金 STM32
STM32 MCU
MCU 通讯及无线技术
通讯及无线技术 物联网技术
物联网技术 电子DIY
电子DIY 板卡试用
板卡试用 基础知识
基础知识 软件与操作系统
软件与操作系统 我爱生活
我爱生活 小e食堂
小e食堂

