Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 8.38 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. void TIM5_IRQHandler(void) {
  8.     if(TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET) {
  9.          if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) == 1 && a == 0) {
  10.                     a = 1;
  11.                     TIM_Cmd(TIM3, ENABLE);
  12.                     for(int i = 0;i<100000;i++);
  13.                 }
  14.                 if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_1) == 1 && a == 1) {
  15.                     a = 0;
  16.                     TIM_Cmd(TIM3, DISABLE);
  17.                     for(int i = 0;i<100000;i++);
  18.                 }
  19.                 if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2) == 1 && b == 0) {
  20.                     b = 1;
  21.                     TIM_Cmd(TIM2, ENABLE);
  22.                     for(int i = 0;i<100000;i++);
  23.                 }
  24.                 if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_2) == 1 && b == 1) {
  25.                     b = 0;
  26.                     TIM_Cmd(TIM2, DISABLE);
  27.                     for(int i = 0;i<100000;i++);
  28.                 }
  29.                 if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3) == 1 && c == 0) {
  30.                     c = 1;
  31.                     TIM_Cmd(TIM4, ENABLE);
  32.                     for(int i = 0;i<100000;i++);
  33.                 }
  34.                 if(GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_3) == 1 && c == 1) {
  35.                     c = 0;
  36.                     TIM_Cmd(TIM4, DISABLE);
  37.                     for(int i = 0;i<100000;i++);
  38.                 }
  39.         TIM_ClearITPendingBit(TIM5, TIM_IT_Update);
  40.     }
  41. }
  42. void TIM3_IRQHandler(void) {
  43.     if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) {
  44.             GPIO_ToggleBits(GPIOE, GPIO_Pin_8);
  45.             for(int i = 0;i<100000;i++);
  46.         TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
  47.     }
  48. }
  49. void TIM2_IRQHandler(void) {
  50.     if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET) {
  51.         GPIO_ToggleBits(GPIOE, GPIO_Pin_10);
  52.                     for(int i = 0;i<100000;i++);
  53.         TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
  54.     }
  55. }
  56. void TIM4_IRQHandler(void) {
  57.     if(TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET) {
  58.         GPIO_ToggleBits(GPIOE, GPIO_Pin_11);
  59.                     for(int i = 0;i<100000;i++);
  60.         TIM_ClearITPendingBit(TIM4, TIM_IT_Update);
  61.     }
  62. }
  63.  
  64. int main(void) {
  65.     RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); // buttons
  66.     RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE); // buttons
  67.     GPIO_InitTypeDef GPIO_BUTTONS;
  68.     GPIO_BUTTONS.GPIO_Pin = GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3;
  69.     GPIO_BUTTONS.GPIO_Mode = GPIO_Mode_IN;
  70.     GPIO_BUTTONS.GPIO_OType = GPIO_OType_PP;
  71.     GPIO_BUTTONS.GPIO_Speed = GPIO_Speed_100MHz;
  72.     GPIO_BUTTONS.GPIO_PuPd = GPIO_PuPd_DOWN;
  73.     GPIO_Init(GPIOA, &GPIO_BUTTONS);
  74. //tim3
  75.     TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  76.     TIM_TimeBaseStructure.TIM_Period = 9999;
  77.     TIM_TimeBaseStructure.TIM_Prescaler = 2099;
  78.     TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
  79.     TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  80.     TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
  81.     TIM_Cmd(TIM3, DISABLE);
  82.  
  83.     //przerwania tim3
  84.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
  85.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  86.     NVIC_InitTypeDef NVIC_InitStructure3;
  87.     NVIC_InitStructure3.NVIC_IRQChannel = TIM3_IRQn;
  88.     NVIC_InitStructure3.NVIC_IRQChannelPreemptionPriority = 0x00;
  89.     NVIC_InitStructure3.NVIC_IRQChannelSubPriority = 0x00;
  90.     NVIC_InitStructure3.NVIC_IRQChannelCmd = ENABLE;
  91.     NVIC_Init(&NVIC_InitStructure3);
  92.     TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
  93.     TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
  94.     //tim5
  95.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);
  96.         TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure9;
  97.         TIM_TimeBaseStructure9.TIM_Period = 99;
  98.         TIM_TimeBaseStructure9.TIM_Prescaler = 84;
  99.         TIM_TimeBaseStructure9.TIM_ClockDivision = TIM_CKD_DIV1;
  100.         TIM_TimeBaseStructure9.TIM_CounterMode = TIM_CounterMode_Up;
  101.         TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure9);
  102.         TIM_Cmd(TIM5, ENABLE);
  103.  
  104.         //przerwania tim5
  105.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  106.         NVIC_InitTypeDef NVIC_InitStructure9;
  107.         NVIC_InitStructure9.NVIC_IRQChannel = TIM5_IRQn;
  108.         NVIC_InitStructure9.NVIC_IRQChannelPreemptionPriority = 0x00;
  109.         NVIC_InitStructure9.NVIC_IRQChannelSubPriority = 0x00;
  110.         NVIC_InitStructure9.NVIC_IRQChannelCmd = ENABLE;
  111.         NVIC_Init(&NVIC_InitStructure9);
  112.         TIM_ClearITPendingBit(TIM5, TIM_IT_Update);
  113.         TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE);
  114.  
  115.     //tim3
  116.         TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure2;
  117.         TIM_TimeBaseStructure2.TIM_Period = 9999;
  118.         TIM_TimeBaseStructure2.TIM_Prescaler = 2099;
  119.         TIM_TimeBaseStructure2.TIM_ClockDivision = TIM_CKD_DIV1;
  120.         TIM_TimeBaseStructure2.TIM_CounterMode = TIM_CounterMode_Up;
  121.         TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure2);
  122.         TIM_Cmd(TIM3, DISABLE);
  123.  
  124.         //przerwania tim3
  125.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); // timer 3
  126.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  127.         NVIC_InitTypeDef NVIC_InitStructure2;
  128.         NVIC_InitStructure2.NVIC_IRQChannel = TIM3_IRQn;
  129.         NVIC_InitStructure2.NVIC_IRQChannelPreemptionPriority = 0x00;
  130.         NVIC_InitStructure2.NVIC_IRQChannelSubPriority = 0x00;
  131.         NVIC_InitStructure2.NVIC_IRQChannelCmd = ENABLE;
  132.         NVIC_Init(&NVIC_InitStructure2);
  133.         TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
  134.         TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
  135.  
  136.  
  137.  
  138.  
  139.         //TIM2
  140.                 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure3;
  141.                 TIM_TimeBaseStructure3.TIM_Period = 9999;
  142.                 TIM_TimeBaseStructure3.TIM_Prescaler = 2099;
  143.                 TIM_TimeBaseStructure3.TIM_ClockDivision = TIM_CKD_DIV1;
  144.                 TIM_TimeBaseStructure3.TIM_CounterMode = TIM_CounterMode_Up;
  145.                 TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure2);
  146.                 TIM_Cmd(TIM2, DISABLE);
  147.  
  148.                 //przerwania tim3
  149.                 RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); // timer 3
  150.                 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  151.                 NVIC_InitTypeDef NVIC_InitStructure6;
  152.                 NVIC_InitStructure6.NVIC_IRQChannel = TIM2_IRQn;
  153.                 NVIC_InitStructure6.NVIC_IRQChannelPreemptionPriority = 0x00;
  154.                 NVIC_InitStructure6.NVIC_IRQChannelSubPriority = 0x00;
  155.                 NVIC_InitStructure6.NVIC_IRQChannelCmd = ENABLE;
  156.                 NVIC_Init(&NVIC_InitStructure6);
  157.                 TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
  158.                 TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
  159.  
  160.  
  161.  
  162.                 //tim4
  163.                         TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure4;
  164.                         TIM_TimeBaseStructure4.TIM_Period = 9999;
  165.                         TIM_TimeBaseStructure4.TIM_Prescaler = 2099;
  166.                         TIM_TimeBaseStructure4.TIM_ClockDivision = TIM_CKD_DIV1;
  167.                         TIM_TimeBaseStructure4.TIM_CounterMode = TIM_CounterMode_Up;
  168.                         TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure4);
  169.                         TIM_Cmd(TIM4, DISABLE);
  170.  
  171.                         //przerwania tim3
  172.                         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); // timer 3
  173.                         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  174.                         NVIC_InitTypeDef NVIC_InitStructure4;
  175.                         NVIC_InitStructure4.NVIC_IRQChannel = TIM4_IRQn;
  176.                         NVIC_InitStructure4.NVIC_IRQChannelPreemptionPriority = 0x00;
  177.                         NVIC_InitStructure4.NVIC_IRQChannelSubPriority = 0x00;
  178.                         NVIC_InitStructure4.NVIC_IRQChannelCmd = ENABLE;
  179.                         NVIC_Init(&NVIC_InitStructure4);
  180.                         TIM_ClearITPendingBit(TIM4, TIM_IT_Update);
  181.                         TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE);
  182.  
  183.     GPIO_InitTypeDef GPIO_InitStructure;
  184.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10;
  185.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  186.     GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  187.     GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  188.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  189.     GPIO_Init(GPIOE, &GPIO_InitStructure);
  190.     GPIO_SetBits(GPIOE, GPIO_Pin_4);
  191.  
  192.     GPIO_SetBits(GPIOE, GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10);
  193.  
  194.     for(;;) {
  195.  
  196.     }
  197.  
  198. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement