hendriawan

priority-inhereten

Feb 8th, 2024
1,740
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.83 KB | None | 0 0
  1. #include "main.h"
  2. #include <stdio.h>
  3. #include "FreeRTOS.h"
  4. #include "task.h"
  5. #include "timers.h"
  6. #include "queue.h"
  7. #include "semphr.h"
  8. #include "event_groups.h"
  9. #include "stdlib.h"
  10. #include "string.h"
  11. #include "hardwareinit.h"
  12.  
  13. extern UART_HandleTypeDef huart2;
  14. SemaphoreHandle_t SimpleMutex;
  15. SemaphoreHandle_t BinSemaphore;
  16.  
  17. TaskHandle_t HPT_Handler;
  18. TaskHandle_t MPT_Handler;
  19. TaskHandle_t LPT_Handler;
  20.  
  21. void HPT_Task (void *argument);
  22. void MPT_Task (void *argument);
  23. void LPT_Task (void *argument);
  24.  
  25. //void Send_Uart (uint8_t *str)
  26. //{
  27. //  xSemaphoreTake(BinSemaphore, portMAX_DELAY);
  28. //  HAL_Delay(5000);
  29. //  HAL_UART_Transmit(&huart2, str, strlen (str), HAL_MAX_DELAY);
  30. //  xSemaphoreGive(BinSemaphore);
  31. //}
  32.  
  33. void Send_Uart (uint8_t *str)
  34. {
  35.     xSemaphoreTake(SimpleMutex, portMAX_DELAY);
  36.     HAL_Delay(5000);
  37.     HAL_UART_Transmit(&huart2, str, strlen (str), HAL_MAX_DELAY);
  38.     xSemaphoreGive(SimpleMutex);
  39. }
  40.  
  41. void HPT_Task (void *argument)
  42. {
  43.     uint8_t *strtosend = "IN HPT===========================\n";
  44.     while (1)
  45.     {
  46.         char *str = "Entered HPT and About to take Semaphore\n";
  47.         HAL_UART_Transmit(&huart2, str, strlen (str), HAL_MAX_DELAY);
  48.  
  49.         Send_Uart(strtosend);
  50.  
  51.         char *str2 = "Leaving HPT\n\n";
  52.         HAL_UART_Transmit(&huart2, str2, strlen (str2), HAL_MAX_DELAY);
  53.  
  54.         vTaskDelay(750);
  55.     }
  56. }
  57.  
  58.  
  59. void MPT_Task (void *argument)
  60. {
  61.     while (1)
  62.     {
  63.         char *str = "IN MPT****************************\n\n";
  64.         HAL_UART_Transmit(&huart2, str, strlen (str), HAL_MAX_DELAY);
  65.         vTaskDelay(2000);
  66.     }
  67. }
  68.  
  69. void LPT_Task (void *argument)
  70. {
  71.     uint8_t *strtosend = "IN LPT...........................\n";
  72.     while (1)
  73.     {
  74.         char *str = "Entered LPT and About to take Semaphore\n";
  75.         HAL_UART_Transmit(&huart2, str, strlen (str), HAL_MAX_DELAY);
  76.  
  77.         Send_Uart(strtosend);
  78.  
  79.         char *str2 = "Leaving LPT\n\n";
  80.         HAL_UART_Transmit(&huart2, str2, strlen (str2), HAL_MAX_DELAY);
  81.  
  82.         vTaskDelay(1000);
  83.     }
  84. }
  85.  
  86. int main(void)
  87. {
  88.   HAL_Init();
  89.   SystemClock_Config();
  90.   /* Initialize all configured peripherals */
  91.   MX_GPIO_Init();
  92.   MX_USART2_UART_Init();
  93.   MX_I2C1_Init();
  94.   MX_SPI1_Init();
  95.   MX_USB_OTG_FS_PCD_Init();
  96.   /* USER CODE BEGIN 2 *************************** */
  97.   SimpleMutex = xSemaphoreCreateMutex();
  98.  
  99.     if (SimpleMutex != NULL)
  100.     {
  101.       HAL_UART_Transmit(&huart2, "Mutex Created\n\n", 15, 1000);
  102.     }
  103.  
  104.     BinSemaphore = xSemaphoreCreateBinary();
  105.     if (BinSemaphore != NULL)
  106.     {
  107.       HAL_UART_Transmit(&huart2, "Semaphore Created\n\n", 19, 1000);
  108.     }
  109.  
  110.     xSemaphoreGive(BinSemaphore);
  111.  
  112.     /// create tasks
  113.  
  114.     xTaskCreate(HPT_Task, "HPT", 128, NULL, 3, &HPT_Handler);
  115.     xTaskCreate(MPT_Task, "MPT", 128, NULL, 2, &MPT_Handler);
  116.     xTaskCreate(LPT_Task, "LPT", 128, NULL, 1, &LPT_Handler);
  117.  
  118.     vTaskStartScheduler();
  119.  
  120.   /* END USER CODE 2 ********************************/
  121.   while (1) {
  122.  
  123.   }
  124.  
  125. }
  126.  
Advertisement