Advertisement
Guest User

Untitled

a guest
Apr 4th, 2020
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.83 KB | None | 0 0
  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.  
  7.  
  8. void vTask1(void* pvParams){
  9.     TaskHandle_t* Task2Handle; //A local pointer to second task's handle
  10.     Task2Handle = (TaskHandle_t*) (pvParams);
  11.     while(1){
  12.         vTaskSuspend(*Task2Handle);
  13.         for (char i=0;i<4*2;i++){
  14.             GPIOA->ODR |= GPIO_ODR_ODR_5;
  15.             vTaskDelay(pdMS_TO_TICKS(1000));
  16.             GPIOA->ODR &= ~GPIO_ODR_ODR_5;
  17.             vTaskDelay(pdMS_TO_TICKS(1000)); //Diode flash frequency is 0.5 Hz
  18.         }
  19.         vTaskResume(*Task2Handle);
  20.         vTaskDelay(pdMS_TO_TICKS(2000));
  21.     }
  22. }
  23.  
  24.  
  25. void vTask2(void* pvParams){
  26.     while(1)    {
  27.         for (char i=0;i<4;i++){
  28.             GPIOA->ODR &= ~GPIO_ODR_ODR_10;
  29.             GPIOA->ODR &= ~GPIO_ODR_ODR_11;
  30.             GPIOA->ODR |= GPIO_ODR_ODR_8;
  31.             GPIOA->ODR |= GPIO_ODR_ODR_13;
  32.             vTaskDelay(pdMS_TO_TICKS(500));
  33.             GPIOA->ODR &= ~GPIO_ODR_ODR_8;
  34.             GPIOA->ODR &= ~GPIO_ODR_ODR_13;
  35.             GPIOA->ODR |= GPIO_ODR_ODR_9;
  36.             GPIOA->ODR |= GPIO_ODR_ODR_12;
  37.             vTaskDelay(pdMS_TO_TICKS(500));
  38.             GPIOA->ODR &= ~GPIO_ODR_ODR_9;
  39.             GPIOA->ODR &= ~GPIO_ODR_ODR_12;
  40.             GPIOA->ODR |= GPIO_ODR_ODR_10;
  41.             GPIOA->ODR |= GPIO_ODR_ODR_11;
  42.             vTaskDelay(pdMS_TO_TICKS(500));
  43.         }
  44.         vTaskDelay(5);
  45.     }
  46. }
  47.  
  48.  
  49. TaskHandle_t Task2Handle = NULL;
  50.  
  51.  
  52. int main(void){
  53.     RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
  54.     //pin A5, A8-A13
  55.     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;
  56.     xTaskCreate(vTask2, "DiodeLine", configMINIMAL_STACK_SIZE, NULL, 1, &Task2Handle);
  57.     xTaskCreate(vTask1, "DiodeBlink", configMINIMAL_STACK_SIZE, (void*) &Task2Handle, 1, NULL);
  58.     vTaskStartScheduler();
  59.     while(1){
  60.  
  61.     }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement