Advertisement
Guest User

Untitled

a guest
Apr 6th, 2020
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "stm32f4xx.h"                  // Device header
  2. #include "FreeRTOS.h"                   // ARM.FreeRTOS::RTOS:Core
  3. #include "FreeRTOSConfig.h"             // ARM.FreeRTOS::RTOS:Config
  4. #include "Task.h"
  5. #include "queue.h"
  6. void vBlinkTask(void* pvParams)
  7. {
  8.     TaskHandle_t* LineTaskHandle;
  9.     LineTaskHandle = (TaskHandle_t*) (pvParams);
  10.     while(1)
  11.     {
  12.         vTaskSuspend(*LineTaskHandle);
  13.         for (char i=0;i<6;i++)
  14.         {
  15.             GPIOA->ODR |= GPIO_ODR_ODR_5;
  16.             vTaskDelay(pdMS_TO_TICKS(100));
  17.             GPIOA->ODR &= ~GPIO_ODR_ODR_5;
  18.             vTaskDelay(pdMS_TO_TICKS(100));
  19.         }
  20.         vTaskResume(*LineTaskHandle);
  21.         vTaskDelay(pdMS_TO_TICKS(2000));
  22.     }
  23. }
  24.  
  25. void vLineTask(void* pvParams)
  26. {
  27.     while(1)
  28.     {
  29.         for (char i=0;i<3;i++)
  30.         {
  31.             GPIOA->ODR &= ~GPIO_ODR_ODR_8;
  32.             GPIOA->ODR &= ~GPIO_ODR_ODR_13;
  33.             GPIOA->ODR |= GPIO_ODR_ODR_10;
  34.             GPIOA->ODR |= GPIO_ODR_ODR_11;
  35.             vTaskDelay(pdMS_TO_TICKS(500));
  36.             GPIOA->ODR &= ~GPIO_ODR_ODR_10;
  37.             GPIOA->ODR &= ~GPIO_ODR_ODR_11;
  38.             GPIOA->ODR |= GPIO_ODR_ODR_9;
  39.             GPIOA->ODR |= GPIO_ODR_ODR_12;
  40.             vTaskDelay(pdMS_TO_TICKS(500));
  41.             GPIOA->ODR &= ~GPIO_ODR_ODR_9;
  42.             GPIOA->ODR &= ~GPIO_ODR_ODR_12;
  43.             GPIOA->ODR |= GPIO_ODR_ODR_8;
  44.             GPIOA->ODR |= GPIO_ODR_ODR_13;
  45.             vTaskDelay(pdMS_TO_TICKS(500));
  46.         }
  47.     }
  48. }
  49. TaskHandle_t LineTaskHandle = NULL;
  50.  
  51. int main(void)
  52. {
  53.     RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
  54.     GPIOA->MODER |= GPIO_MODER_MODER5_0 | GPIO_MODER_MODER8_0 | GPIO_MODER_MODER9_0 | GPIO_MODER_MODER10_0 | GPIO_MODER_MODER11_0 | GPIO_MODER_MODER12_0 | GPIO_MODER_MODER13_0;
  55.     xTaskCreate(vBlinkTask, "BlinkingDiode", configMINIMAL_STACK_SIZE, (void*)&LineTaskHandle, 1, NULL);
  56.     xTaskCreate(vLineTask, "DiodeLine", configMINIMAL_STACK_SIZE, NULL, 1, &LineTaskHandle);
  57.     vTaskStartScheduler();
  58.  
  59.     while(1)
  60.     {
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement