#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 Send_Uart (uint8_t *str)
{
xSemaphoreTake(SimpleMutex, portMAX_DELAY);
HAL_Delay(5000);
HAL_UART_Transmit(&huart2, str, strlen (str), HAL_MAX_DELAY);
xSemaphoreGive(SimpleMutex);
}
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) {
}
}
Comments
0 B
|👍
/👎
0 B
|👍
/👎