Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "main.h"
- #include <stdio.h>
- #include "FreeRTOS.h"
- #include "task.h"
- #include "timers.h"
- #include "queue.h"
- #include "semphr.h"
- #include "event_groups.h"
- #include "stdlib.h"
- #include "string.h"
- #include "hardwareinit.h"
- extern UART_HandleTypeDef huart2;
- SemaphoreHandle_t SimpleMutex;
- SemaphoreHandle_t BinSemaphore;
- TaskHandle_t HPT_Handler;
- TaskHandle_t MPT_Handler;
- TaskHandle_t LPT_Handler;
- void HPT_Task (void *argument);
- void MPT_Task (void *argument);
- void LPT_Task (void *argument);
- void Send_Uart (uint8_t *str)
- {
- xSemaphoreTake(BinSemaphore, portMAX_DELAY);
- HAL_Delay(5000);
- HAL_UART_Transmit(&huart2, str, strlen (str), HAL_MAX_DELAY);
- xSemaphoreGive(BinSemaphore);
- }
- void HPT_Task (void *argument)
- {
- uint8_t *strtosend = "IN HPT===========================\n";
- while (1)
- {
- char *str = "Entered HPT and About to take Semaphore\n";
- HAL_UART_Transmit(&huart2, str, strlen (str), HAL_MAX_DELAY);
- Send_Uart(strtosend);
- char *str2 = "Leaving HPT\n\n";
- HAL_UART_Transmit(&huart2, str2, strlen (str2), HAL_MAX_DELAY);
- vTaskDelay(750);
- }
- }
- void MPT_Task (void *argument)
- {
- while (1)
- {
- char *str = "IN MPT****************************\n\n";
- HAL_UART_Transmit(&huart2, str, strlen (str), HAL_MAX_DELAY);
- vTaskDelay(2000);
- }
- }
- void LPT_Task (void *argument)
- {
- uint8_t *strtosend = "IN LPT...........................\n";
- while (1)
- {
- char *str = "Entered LPT and About to take Semaphore\n";
- HAL_UART_Transmit(&huart2, str, strlen (str), HAL_MAX_DELAY);
- Send_Uart(strtosend);
- char *str2 = "Leaving LPT\n\n";
- HAL_UART_Transmit(&huart2, str2, strlen (str2), HAL_MAX_DELAY);
- vTaskDelay(1000);
- }
- }
- int main(void)
- {
- HAL_Init();
- SystemClock_Config();
- /* Initialize all configured peripherals */
- MX_GPIO_Init();
- MX_USART2_UART_Init();
- MX_I2C1_Init();
- MX_SPI1_Init();
- MX_USB_OTG_FS_PCD_Init();
- /* USER CODE BEGIN 2 *************************** */
- SimpleMutex = xSemaphoreCreateMutex();
- if (SimpleMutex != NULL)
- {
- HAL_UART_Transmit(&huart2, "Mutex Created\n\n", 15, 1000);
- }
- BinSemaphore = xSemaphoreCreateBinary();
- if (BinSemaphore != NULL)
- {
- HAL_UART_Transmit(&huart2, "Semaphore Created\n\n", 19, 1000);
- }
- xSemaphoreGive(BinSemaphore);
- /// create tasks
- xTaskCreate(HPT_Task, "HPT", 128, NULL, 3, &HPT_Handler);
- xTaskCreate(MPT_Task, "MPT", 128, NULL, 2, &MPT_Handler);
- xTaskCreate(LPT_Task, "LPT", 128, NULL, 1, &LPT_Handler);
- vTaskStartScheduler();
- /* END USER CODE 2 ********************************/
- while (1) {
- }
- }
Advertisement