View difference between Paste ID: DCn5rahY and 7qsMgdKG
SHOW: | | - or go back to the newest paste.
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"
4+
#include "Task.h"
5
#include "queue.h"
6
void vBlinkTask(void* pvParams)
7-
void vTask1(void* pvParams)
7+
8
	TaskHandle_t* LineTaskHandle; 
9
	LineTaskHandle = (TaskHandle_t*) (pvParams);
10
	while(1)
11-
	GPIOA -> ODR |= GPIO_ODR_ODR_5; 
11+
12-
	vTaskDelay(1000); // holdup task for 1000 ticks
12+
		vTaskSuspend(*LineTaskHandle);
13-
	GPIOA -> ODR &= ~GPIO_ODR_ODR_5;
13+
		for (char i=0;i<6;i++)
14-
	vTaskDelay(1000);
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-
	RCC -> AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
20+
		vTaskResume(*LineTaskHandle);
21-
	GPIOA -> MODER |= GPIO_MODER_MODER5_0; 
21+
		vTaskDelay(pdMS_TO_TICKS(2000));
22-
	xTaskCreate(vTask1,"task1", configMINIMAL_STACK_SIZE, NULL, 2, NULL);
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
}