#include "FreeRTOS.h"
#include "task.h"
#include "stm32c0xx_hal.h"
#define configUSE_PREEMPTION 1
#define configUSE_IDLE_HOOK 0
#define configUSE_TICK_HOOK 0
#define configCPU_CLOCK_HZ (SystemCoreClock)
#define configTICK_RATE_HZ ((TickType_t)1000)
#define configMAX_PRIORITIES 5
#define configMINIMAL_STACK_SIZE ((unsigned short)128)
#define configTOTAL_HEAP_SIZE ((size_t)(10 * 1024))
#define configUSE_16_BIT_TICKS 0
// Tâche pour la LED 1
void LEDTask1(void *pvParameters) {
while (1) {
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5); // Basculer l'état de la LED PA5
HAL_Delay(500); // Délai de 500 ms
}
}
// Tâche pour la LED 2
void LEDTask2(void *pvParameters) {
while (1) {
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_6); // Basculer l'état de la LED PA5
HAL_Delay(1500);// Délai de 300 ms
}
}
void loop() {
// Fonction vide pour satisfaire la référence à loop()
}
int main(void) {
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
// Création des tâches FreeRTOS
xTasKCreate(LEDTask1, "TaskLED_Rouge",128,NULL,1,NULL);
xTasKCreate(LEDTask2, "TaskLED_Rouge",128,NULL,1,NULL);
// Démarrage du planificateur
vTaskStartScheduler();
while (1) {
// Boucle inactive
}
}
void SystemClock_Config(void) {
// Configuration de l'horloge pour STM32C031C6
}
void MX_GPIO_Init(void) {
__HAL_RCC_GPIOA_CLK_ENABLE();
GPIO_InitTypeDef GPIO_InitStruct = {0};
// Configuration de la LED 1 (PA5)
GPIO_InitStruct.Pin = GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// Configuration de la LED 2 (PA6)
GPIO_InitStruct.Pin = GPIO_PIN_6;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}