Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.93 KB | None | 0 0
  1. #include "stm32f4xx.h"
  2. #include "stm32f4_discovery.h"
  3.  
  4. int a = 0;
  5. int b = 0;
  6. int c = 0;
  7.  
  8. void TIM3_IRQHandler(void) {
  9.     if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) {
  10.         if(a == 1) {
  11.             GPIO_ToggleBits(GPIOE, GPIO_Pin_8);
  12.             for(int i = 0;i<100000;i++);
  13.         }
  14.         if(b == 1) {
  15.             GPIO_ToggleBits(GPIOE, GPIO_Pin_9);
  16.             for(int i = 0;i<100000;i++);
  17.         }
  18.         if(c == 1) {
  19.             GPIO_ToggleBits(GPIOE, GPIO_Pin_10);
  20.             for(int i = 0;i<100000;i++);
  21.         }
  22.  
  23.         TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
  24.     }
  25. }
  26.  
  27. int main(void) {
  28.     RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); // buttons
  29.     GPIO_InitTypeDef GPIO_BUTTONS;
  30.     GPIO_BUTTONS.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
  31.     GPIO_BUTTONS.GPIO_Mode = GPIO_Mode_IN;
  32.     GPIO_BUTTONS.GPIO_OType = GPIO_OType_PP;
  33.     GPIO_BUTTONS.GPIO_Speed = GPIO_Speed_100MHz;
  34.     GPIO_BUTTONS.GPIO_PuPd = GPIO_PuPd_DOWN;
  35.     GPIO_Init(GPIOA, &GPIO_BUTTONS);
  36.  
  37.     TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  38.     TIM_TimeBaseStructure.TIM_Period = 9999;
  39.     TIM_TimeBaseStructure.TIM_Prescaler = 2099;
  40.     TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  41.     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  42.     TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
  43.     TIM_Cmd(TIM3, DISABLE);
  44.  
  45.     //przerwania tim3
  46.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); // timer 3
  47.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  48.     NVIC_InitTypeDef NVIC_InitStructure3;
  49.     NVIC_InitStructure3.NVIC_IRQChannel = TIM3_IRQn;
  50.     NVIC_InitStructure3.NVIC_IRQChannelPreemptionPriority = 0x00;
  51.     NVIC_InitStructure3.NVIC_IRQChannelSubPriority = 0x00;
  52.     NVIC_InitStructure3.NVIC_IRQChannelCmd = ENABLE;
  53.     NVIC_Init(&NVIC_InitStructure3);
  54.     TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
  55.     TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
  56.  
  57.     GPIO_InitTypeDef GPIO_InitStructure;
  58.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
  59.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  60.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  61.     GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  62.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  63.     GPIO_Init(GPIOE, &GPIO_InitStructure);
  64.     GPIO_SetBits(GPIOE, GPIO_Pin_4);
  65.  
  66.     GPIO_ResetBits(GPIOE, GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11);
  67.  
  68.     for(;;) {
  69.         if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) == 1 && a == 0) {
  70.             a = 1;
  71.             TIM_Cmd(TIM3, ENABLE);
  72.         }
  73.         if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) == 1 && a == 1) {
  74.             a = 0;
  75.             TIM_Cmd(TIM3, DISABLE);
  76.         }
  77.         if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2) == 1 && b == 0) {
  78.             b = 1;
  79.             TIM_Cmd(TIM3, ENABLE);
  80.         }
  81.         if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2) == 1 && b == 1) {
  82.             b = 0;
  83.             TIM_Cmd(TIM3, DISABLE);
  84.         }
  85.         if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3) == 1 && c == 0) {
  86.             c = 1;
  87.             TIM_Cmd(TIM3, ENABLE);
  88.         }
  89.         if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3) == 1 && c == 1) {
  90.             c = 0;
  91.             TIM_Cmd(TIM3, DISABLE);
  92.         }
  93.     }
  94.  
  95. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement