Skip to content

Commit

Permalink
Setup tasks
Browse files Browse the repository at this point in the history
  • Loading branch information
APBashara committed Sep 12, 2024
1 parent 4ac8324 commit 0c40f21
Show file tree
Hide file tree
Showing 3 changed files with 102 additions and 0 deletions.
28 changes: 28 additions & 0 deletions Core/Inc/main.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,34 @@ void Status_LED(void *argument);
*/
void CAN_Task(void *argument);

/**
* @brief Update the values on the driver display
*
* @param argument
*/
void Display_Update(void *argument);

/**
* @brief Update GPS Values
*
* @param argument
*/
void GPS_Update(void *argument);

/**
* @brief Send the Telemetry Data over Lora
*
* @param argument
*/
void Lora_Send(void *argument);

/**
* @brief Update ADC values
*
* @param argument
*/
void ADC_Update(void *argument);

/**
* @brief Main Function to start FreeRTOS and initialize peripherals
*
Expand Down
1 change: 1 addition & 0 deletions Core/Src/can.c
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ CAN_Status CAN_Filters_Init() {

CAN1->FA1R |= CAN_FA1R_FACT_Msk; // Enable Filter 0
CAN1->FMR &= ~CAN_FMR_FINIT; // Exit Filter Initialization Mode
return CAN_OK;
}

CAN_Status CAN_Start() {
Expand Down
73 changes: 73 additions & 0 deletions Core/Src/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

/* Global Variables ---------------------------------------------------------*/
Telemetry telemetry;
uint16_t adc_value[16];

/* Thread Attributes --------------------------------------------------------*/
osThreadId_t StatusLED;
Expand All @@ -26,19 +27,55 @@ const osThreadAttr_t CANTask_attr = {
.stack_size = 128
};

osThreadId_t DisplayTask;
const osThreadAttr_t DisplayTask_attr = {
.name = "Display_Task",
.priority = osPriorityNormal,
.stack_size = 128
};

osThreadId_t GPSTask;
const osThreadAttr_t GPSTask_attr = {
.name = "GPS_Task",
.priority = osPriorityNormal,
.stack_size = 128
};

osThreadId_t LoraTask;
const osThreadAttr_t LoraTask_attr = {
.name = "Lora_Task",
.priority = osPriorityNormal,
.stack_size = 128
};

osThreadId_t ADCTask;
const osThreadAttr_t ADC_Task_attr = {
.name = "ADC_Task",
.priority = osPriorityNormal,
.stack_size = 128
};

void main() {
osKernelInitialize(); // Initialize FreeRTOS

// Initialize Peripherals
Sysclk_168();
DMA_ADC1_Init(&adc_value);
LED_Init();
USART3_Init();
I2C1_Init();
SPI2_Init();
CAN1_Init();
CAN_Filters_Init();
CAN_Start();

// Create FreeRTOS Threads
StatusLED = osThreadNew(Status_LED, NULL, &StatusLED_attr);
CANTask = osThreadNew(CAN_Task, NULL, &CANTask_attr);
DisplayTask = osThreadNew(Display_Update, NULL, &DisplayTask_attr);
GPSTask = osThreadNew(GPS_Update, NULL, &GPSTask_attr);
LoraTask = osThreadNew(Lora_Send, NULL, &LoraTask_attr);
ADCTask = osThreadNew(ADC_Update, NULL, &ADC_Task_attr);

osKernelStart(); // Start FreeRTOS
while(1);
Expand All @@ -63,4 +100,40 @@ void CAN_Task(void *argument) {
}
osDelay(1000);
}
}

void Display_Update(void *argument) {
uint8_t message[64];

while(1) {
sprintf(message, "RPM: %d\n", telemetry.RPM);
send_String(USART3, message);
osDelay(1000);
}
}

void GPS_Update(void *argument) {
uint8_t message[64];

while(1) {
// TODO: Implement GPS Task
}
}

void Lora_Send(void *argument) {

while(1) {
// TODO: Implement Lora Task
}
}

void ADC_Update(void *argument) {

while(1) {
// TODO: Set update rates
telemetry.TPS = adc_value[0];
telemetry.FOT = adc_value[1];
telemetry.IA = adc_value[2];
osDelay(1000);
}
}

0 comments on commit 0c40f21

Please sign in to comment.