Facebook
From Mustard Bongo, 7 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 292
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  Ac6
  5.   * @version V1.0
  6.   * @date    01-December-2013
  7.   * @brief   Default main function.
  8.   ******************************************************************************
  9. */
  10.  
  11.  
  12. #include "stm32f4xx.h"
  13.                        
  14.  
  15. volatile uint32_t timer_ms = 0;
  16.  
  17. void SysTick_Handler()
  18. {
  19.  if (timer_ms) {
  20.  timer_ms--;
  21.  }
  22. }
  23.  
  24. void delay(int time)
  25. {
  26.  timer_ms = time;
  27.  while (timer_ms) {};
  28. }
  29.  
  30. void EXTI15_10_IRQHandler()
  31. {
  32.         if(EXTI_GetITStatus(EXTI_Line13))
  33.         {
  34.                 if(GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_13) == 0)
  35.                 {
  36.                         GPIO_ToggleBits(GPIOA, GPIO_Pin_5);
  37.  
  38.                         EXTI_ClearFlag(EXTI_Line13);
  39.                         EXTI_ClearITPendingBit(EXTI_Line13);
  40.  
  41.                 }
  42.                 else
  43.                         GPIO_ResetBits(GPIOA, GPIO_Pin_5);
  44.                 }
  45. }
  46.  
  47.  
  48. int main(void)
  49. {
  50.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
  51.         GPIO_InitTypeDef GPIO_A;
  52.         GPIO_StructInit(&GPIO_A);
  53.         GPIO_A.GPIO_Pin = GPIO_Pin_5;
  54.         GPIO_A.GPIO_Mode = GPIO_Mode_OUT;
  55.         GPIO_A.GPIO_OType = GPIO_OType_PP;
  56.         GPIO_Init(GPIOA, &GPIO_A);
  57.  
  58.  
  59.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
  60.         GPIO_InitTypeDef GPIO_C;
  61.         GPIO_StructInit(&GPIO_C);
  62.         GPIO_C.GPIO_Pin = GPIO_Pin_13;
  63.         GPIO_C.GPIO_Mode = GPIO_Mode_IN;
  64.         GPIO_C.GPIO_PuPd = GPIO_PuPd_UP;
  65.         GPIO_Init(GPIOC, &GPIO_C);
  66.  
  67.  
  68.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE);
  69.         EXTI_InitTypeDef exti;
  70.         EXTI_StructInit(&exti);
  71.         exti.EXTI_Line = EXTI_Line13;
  72.         exti.EXTI_Mode = EXTI_Mode_Interrupt;
  73.         exti.EXTI_Trigger = EXTI_Trigger_Falling;
  74.         exti.EXTI_LineCmd = ENABLE;
  75.         EXTI_Init(&exti);
  76.  
  77.  
  78.         SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOC, EXTI_PinSource13);
  79.         NVIC_InitTypeDef nvic;
  80.         nvic.NVIC_IRQChannel = EXTI15_10_IRQn;
  81.         nvic.NVIC_IRQChannelPreemptionPriority = 0x00;
  82.         nvic.NVIC_IRQChannelSubPriority = 0x00;
  83.         nvic.NVIC_IRQChannelCmd = ENABLE;
  84.         NVIC_Init(&nvic);
  85.  
  86.  
  87.         SysTick_Config(SystemCoreClock / 1000);
  88.  
  89.  
  90.         while(1)
  91.         {}
  92.  
  93. }
  94.