-
Notifications
You must be signed in to change notification settings - Fork 65
Open
Description
Issue: vTaskDelay() has no effect on STM32L431RC (FreeRTOS 9.0.4 and 10.3.3)
Board: STM32L431RC
FreeRTOS versions tested: 9.0.4 and 10.3.3
HAL / Clock config: Using HSE as SYSCLK, no PLL
Description of the problem
I have a simple FreeRTOS task that updates a COG display from 0 to 100.
The display updates correctly and shows the numbers from 0 to 100 without any issues.
The only problem is the speed: changing vTaskDelay() does not change how fast the numbers appear.
It looks like the FreeRTOS tick is not running or not configured correctly on STM32L431RC.
Minimal code to reproduce
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInitStruct = {0};
RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
HAL_PWREx_ControlVoltageScaling(PWR_REGULATOR_VOLTAGE_SCALE1);
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
HAL_RCC_OscConfig(&RCC_OscInitStruct);
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK |
RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSE;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;
HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0);
}
static void DisplayTask(void *pvParameters)
{
char TempString[20];
while (true)
{
for (int i = 0; i <= 100; i++)
{
u8g2.clearBuffer();
sprintf(TempString, "%d", i);
u8g2.drawUTF8((LCD_Width - u8g2.getUTF8Width(TempString)) / 2,
(LCD_Height + fontY) / 2,
TempString);
u8g2.sendBuffer();
vTaskDelay(1000); // <-- changing this does nothing
}
}
}
void setup()
{
u8g2.begin();
u8g2.clearDisplay();
u8g2.setContrast(128);
u8g2.setFont(fontName);
xTaskCreate(DisplayTask, "Display", 1024, NULL, 4, NULL);
vTaskStartScheduler();
}
void loop()
{
vTaskDelete(NULL);
}Metadata
Metadata
Assignees
Labels
No labels