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 | } |