Advertisement
Guest User

Untitled

a guest
Jan 16th, 2018
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.89 KB | None | 0 0
  1. #include "stm32f4xx.h"
  2. #include "stm32f4_discovery.h"
  3. void TIM3_IRQHandler(void)
  4. {
  5. if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
  6. {
  7. GPIO_ToggleBits(GPIOC, GPIO_Pin_6);
  8. TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
  9.  
  10. }
  11. }
  12. void TIM2_IRQHandler(void)
  13. {
  14. if(TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)
  15. {
  16. GPIO_ToggleBits(GPIOC, GPIO_Pin_8);
  17. TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
  18.  
  19. }
  20. }
  21. void TIM5_IRQHandler(void)
  22. {
  23. if(TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)
  24. {
  25. GPIO_ToggleBits(GPIOC, GPIO_Pin_9);
  26. TIM_ClearITPendingBit(TIM4, TIM_IT_Update);
  27.  
  28. }
  29. }
  30. int main(void) {
  31. RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE); // RGB
  32. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  33. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
  34. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
  35. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);
  36.  
  37. GPIO_InitTypeDef GPIO_InitDef;
  38. GPIO_InitDef.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_8 | GPIO_Pin_9; // 6-R 8-G 9-B
  39. GPIO_InitDef.GPIO_Mode = GPIO_Mode_OUT;
  40. GPIO_InitDef.GPIO_OType = GPIO_OType_PP;
  41. GPIO_InitDef.GPIO_Speed = GPIO_Speed_100MHz;
  42. GPIO_InitDef.GPIO_PuPd = GPIO_PuPd_NOPULL;
  43. GPIO_Init(GPIOC, &GPIO_InitDef);
  44.  
  45. //------------------------------- ustawienie timera1 -------------------------------
  46. TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure1;
  47. TIM_TimeBaseStructure1.TIM_Period = 9999;
  48. TIM_TimeBaseStructure1.TIM_Prescaler = 8399;
  49. TIM_TimeBaseStructure1.TIM_ClockDivision = TIM_CKD_DIV1;
  50. TIM_TimeBaseStructure1.TIM_CounterMode = TIM_CounterMode_Up;
  51. TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure1);
  52. //------------------------------- ustawienie timera2 -------------------------------
  53. TIM_TimeBaseStructure1.TIM_Period = 9999;
  54. TIM_TimeBaseStructure1.TIM_Prescaler = 2199;
  55. TIM_TimeBaseStructure1.TIM_ClockDivision = TIM_CKD_DIV1;
  56. TIM_TimeBaseStructure1.TIM_CounterMode = TIM_CounterMode_Up;
  57. TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure1);
  58. //------------------------------- ustawienie timera3 -------------------------------
  59. TIM_TimeBaseStructure1.TIM_Period = 9999;
  60. TIM_TimeBaseStructure1.TIM_Prescaler = 1099;
  61. TIM_TimeBaseStructure1.TIM_ClockDivision = TIM_CKD_DIV1;
  62. TIM_TimeBaseStructure1.TIM_CounterMode = TIM_CounterMode_Up;
  63. TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure1);
  64.  
  65. NVIC_InitTypeDef NVIC_InitStructure;
  66. // numer przerwania
  67. NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
  68. // priorytet główny
  69. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;
  70. // subpriorytet
  71. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
  72. // uruchom dany kanał
  73. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  74. // zapisz wypełnioną strukturę do rejestrów
  75. NVIC_Init(&NVIC_InitStructure);
  76. // wyczyszczenie przerwania od timera 3 (wystąpiło przy konfiguracji timera)
  77. TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
  78. // zezwolenie na przerwania od przepełnienia dla timera 3
  79. TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
  80.  
  81. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  82. NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
  83. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;
  84. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
  85. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  86. NVIC_Init(&NVIC_InitStructure);
  87. TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
  88. TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
  89.  
  90. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  91. NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;
  92. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;
  93. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
  94. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  95. NVIC_Init(&NVIC_InitStructure);
  96. TIM_ClearITPendingBit(TIM5, TIM_IT_Update);
  97. TIM_ITConfig(TIM5, TIM_IT_Update, ENABLE);
  98.  
  99.  
  100. TIM_Cmd(TIM3, ENABLE);
  101. TIM_Cmd(TIM2, ENABLE);
  102. TIM_Cmd(TIM5, ENABLE);
  103.  
  104. for(;;){
  105.  
  106. }
  107.  
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement