Advertisement
Guest User

Untitled

a guest
Apr 4th, 2020
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.09 KB | None | 0 0
  1.  
  2. #include "stm32f4xx.h"                  // Device header
  3. #include "FreeRTOS.h"                   // ARM.FreeRTOS::RTOS:Core
  4. #include "FreeRTOSConfig.h"             // ARM.FreeRTOS::RTOS:Config
  5. #include "Task.h"
  6. #include "queue.h"
  7.  
  8.  
  9. TaskHandle_t Task2Handle = NULL; //Global variable for the second task's handle
  10.  
  11.  
  12. void vTask2(void* pvParams){
  13.     while(1)    {
  14.         for (char i=0;i<4;i++){
  15.             GPIOA->ODR &= ~(GPIO_ODR_ODR_8 | GPIO_ODR_ODR_9 | GPIO_ODR_ODR_10 | GPIO_ODR_ODR_11 | GPIO_ODR_ODR_12 | GPIO_ODR_ODR_13);
  16.             GPIOA->ODR &= ~GPIO_ODR_ODR_10;
  17.             GPIOA->ODR &= ~GPIO_ODR_ODR_11;
  18.             GPIOA->ODR |= GPIO_ODR_ODR_8;
  19.             GPIOA->ODR |= GPIO_ODR_ODR_13;
  20.             vTaskDelay(pdMS_TO_TICKS(500));
  21.             GPIOA->ODR &= ~GPIO_ODR_ODR_8;
  22.             GPIOA->ODR &= ~GPIO_ODR_ODR_13;
  23.             GPIOA->ODR |= GPIO_ODR_ODR_9;
  24.             GPIOA->ODR |= GPIO_ODR_ODR_12;
  25.             vTaskDelay(pdMS_TO_TICKS(500));
  26.             GPIOA->ODR &= ~GPIO_ODR_ODR_9;
  27.             GPIOA->ODR &= ~GPIO_ODR_ODR_12;
  28.             GPIOA->ODR |= GPIO_ODR_ODR_10;
  29.             GPIOA->ODR |= GPIO_ODR_ODR_11;
  30.             vTaskDelay(pdMS_TO_TICKS(500));
  31.         }
  32.         vTaskDelay(5);
  33.     }
  34. }
  35.  
  36.  
  37. void vTask1(void* pvParams){
  38.     while(1){
  39.         for (char i=0;i<4*2;i++){
  40.             GPIOA->ODR |= GPIO_ODR_ODR_5;
  41.             vTaskDelay(pdMS_TO_TICKS(1000));
  42.             GPIOA->ODR &= ~GPIO_ODR_ODR_5;
  43.             vTaskDelay(pdMS_TO_TICKS(1000));
  44.         }
  45.         UBaseType_t Task1Priority = uxTaskPriorityGet(NULL); //Getting the current task's priority
  46.         xTaskCreate(vTask2, "DiodeLine", configMINIMAL_STACK_SIZE, NULL, Task1Priority, &Task2Handle);
  47.         for (char i=0;i<4;i++){
  48.             GPIOA->ODR |= GPIO_ODR_ODR_5;
  49.             vTaskDelay(pdMS_TO_TICKS(1000));
  50.             GPIOA->ODR &= ~GPIO_ODR_ODR_5;
  51.             vTaskDelay(pdMS_TO_TICKS(1000));
  52.         }
  53.         vTaskDelete(Task2Handle);
  54.         vTaskDelay(pdMS_TO_TICKS(5));
  55.     }
  56. }
  57.  
  58.  
  59. int main(void){
  60.     RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
  61.     //pin A5, A8-A13
  62.     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;
  63.     xTaskCreate(vTask1, "DiodeBlink", configMINIMAL_STACK_SIZE, (void*) &Task2Handle, 3, NULL);
  64.     vTaskStartScheduler();
  65.     while(1){
  66.     }
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement