Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stm32f4xx.h" // Device header
- #include "FreeRTOS.h" // ARM.FreeRTOS::RTOS:Core
- #include "FreeRTOSConfig.h" // ARM.FreeRTOS::RTOS:Config
- #include "Task.h"
- #include "queue.h"
- TaskHandle_t Task2Handle = NULL; //Global variable for the second task's handle
- void vTask2(void* pvParams){
- while(1) {
- for (char i=0;i<4;i++){
- 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);
- GPIOA->ODR &= ~GPIO_ODR_ODR_10;
- GPIOA->ODR &= ~GPIO_ODR_ODR_11;
- GPIOA->ODR |= GPIO_ODR_ODR_8;
- GPIOA->ODR |= GPIO_ODR_ODR_13;
- vTaskDelay(pdMS_TO_TICKS(500));
- GPIOA->ODR &= ~GPIO_ODR_ODR_8;
- GPIOA->ODR &= ~GPIO_ODR_ODR_13;
- GPIOA->ODR |= GPIO_ODR_ODR_9;
- GPIOA->ODR |= GPIO_ODR_ODR_12;
- vTaskDelay(pdMS_TO_TICKS(500));
- GPIOA->ODR &= ~GPIO_ODR_ODR_9;
- GPIOA->ODR &= ~GPIO_ODR_ODR_12;
- GPIOA->ODR |= GPIO_ODR_ODR_10;
- GPIOA->ODR |= GPIO_ODR_ODR_11;
- vTaskDelay(pdMS_TO_TICKS(500));
- }
- vTaskDelay(5);
- }
- }
- void vTask1(void* pvParams){
- while(1){
- for (char i=0;i<4*2;i++){
- GPIOA->ODR |= GPIO_ODR_ODR_5;
- vTaskDelay(pdMS_TO_TICKS(1000));
- GPIOA->ODR &= ~GPIO_ODR_ODR_5;
- vTaskDelay(pdMS_TO_TICKS(1000));
- }
- UBaseType_t Task1Priority = uxTaskPriorityGet(NULL); //Getting the current task's priority
- xTaskCreate(vTask2, "DiodeLine", configMINIMAL_STACK_SIZE, NULL, Task1Priority, &Task2Handle);
- for (char i=0;i<4;i++){
- GPIOA->ODR |= GPIO_ODR_ODR_5;
- vTaskDelay(pdMS_TO_TICKS(1000));
- GPIOA->ODR &= ~GPIO_ODR_ODR_5;
- vTaskDelay(pdMS_TO_TICKS(1000));
- }
- vTaskDelete(Task2Handle);
- vTaskDelay(pdMS_TO_TICKS(5));
- }
- }
- int main(void){
- RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN;
- //pin A5, A8-A13
- 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;
- xTaskCreate(vTask1, "DiodeBlink", configMINIMAL_STACK_SIZE, (void*) &Task2Handle, 3, NULL);
- vTaskStartScheduler();
- while(1){
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement