【前言】
在我使用touchGFX创建的示例工程中,CM7是创建好freertos的,但是CM4是没有使用freeRTOS的,这一篇我将分享如何在stm32h747中配置freertos并实现获取RTC时钟
【STM32CubeMX配置】
1、使用stm32cubeMX打开工程,查看cm4是没有配置freertos的:

2、在配置freertos是,我们需要了解的是需要配置一个给freertos的时基,这个最好是与cm4内核不要使用systick,这样我们就需要重新开启一个TIM给CM4来使用。

我开启TIM8,但不配置,然后在SYS_M4中选择TIM8

3、打开M4的freeRTOS选项,修改TOTAL_HEAP_SIZE为10000Bytes,同时开启USE_IDLE_HOOK,其余的保持不变。

4、为了方便观察,我开启一个板载的LED灯,如何freertos正常跑起来时让他闪烁。
打开原理图,看到LED的原理图如下:

我这里配置LED1,IO为PI12,推挽输出。

更新工程。
【代码编写】
使用stm32cubeIDE打开工程,在M4的工程中的StartDefaultTask添加闪灯程序如下:
/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void *argument)
{
/* USER CODE BEGIN 5 */
/* Infinite loop */
for(;;)
{
HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_SET);
osDelay(500);
HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);
osDelay(500);
}
/* USER CODE END 5 */
}编译后下载到开发板,就可以看到LED在正常闪烁了。
【总结】
STM32的stm32cube生态可以让用户快速的使用图形化配置实现外设、RTOS的快速配置,可以轻松实现RTOS的移植。同时在配置RTOS时,注意要重新选择一个定时器来做为时基。
我要赚赏金
