Advertisement
Guest User

Untitled

a guest
Oct 27th, 2016
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.56 KB | None | 0 0
  1. main.c
  2. #include "main.h"
  3.  
  4. void InitLed(void);
  5. void InitBtn (void);
  6.    
  7. void EXTI9_5_IRQHandler(void)
  8. {
  9.     uint32_t i;
  10.    
  11.     if ((EXTI->PR & EXTI_PR_PR9)>0)
  12.     {
  13.         for (i=0;i<0xFFFFF; i++);
  14.         if (LED1_IS_ON)
  15.             LED1_OFF();
  16.         else
  17.             LED1_ON();
  18.        
  19.        
  20.         EXTI->PR |=EXTI_PR_PR9; //сбросили флаг
  21.        
  22.     }
  23. }
  24.  
  25. void InitLed(void)
  26. {
  27.    
  28.     RCC->APB2ENR |=RCC_APB2ENR_IOPDEN;
  29.     // PD13-> vixod Push-Pull 2Mhz
  30.     GPIOD->CRH &= ~GPIO_CRH_CNF13; //CNF [1:0]= 00
  31.     GPIOD->CRH &= ~GPIO_CRH_MODE13_0;
  32.     GPIOD->CRH |= GPIO_CRH_MODE13_1; //MODE[1:0] = 10
  33.    
  34. }
  35.  
  36. void InitBtn(void)
  37. {
  38.     RCC->APB2ENR |= RCC_APB2ENR_IOPBEN | RCC_APB2ENR_AFIOEN ; //тактирование порта и альтернативной функции на портах ввода/вывода
  39.  
  40.     // PB9-> вход с подтяжкой к Vdd
  41.     GPIOB->CRH &= ~GPIO_CRH_MODE9;
  42.     GPIOB->CRH &= ~GPIO_CRH_CNF9_0;
  43.     GPIOB->CRH |= GPIO_CRH_CNF9_1;
  44.     GPIOB->BSRR |= GPIO_BSRR_BS9;
  45.    
  46.     AFIO->EXTICR[2] |= AFIO_EXTICR3_EXTI9_PB ;// [1] это 2, [0] это 1 порт. Настройка альтернативной функции
  47.    
  48.     EXTI->IMR |= EXTI_IMR_MR9;//включение маски по 9 ножке
  49.     EXTI->FTSR |= EXTI_FTSR_TR9; // int по спаду
  50.    
  51.     NVIC_EnableIRQ(EXTI9_5_IRQn);
  52.     NVIC_SetPriority(EXTI9_5_IRQn, 0);
  53.    
  54.    
  55. }  
  56.  
  57. main.h
  58. #ifndef __MAIN_H
  59. #define __MAIN_H
  60.  
  61. #include "stm32f10x.h"                  // Device header
  62.  
  63. #define LED1_ON() GPIOD->BSRR |= GPIO_BSRR_BS13
  64. #define LED1_OFF() GPIOD->BSRR |= GPIO_BSRR_BR13
  65. #define LED1_IS_ON (GPIOD->ODR & GPIO_ODR_ODR13)>0
  66.  
  67. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement