打印
[STM32U5]

【NUCLEO-U5A5ZJ-Q测评】轻松移植FreeRTOS

[复制链接]
944|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lulugl|  楼主 | 2023-11-13 15:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#申请原创#[url=home.php?mod=space&uid=760190]@21小跑堂 [/url]
【前言】stm32U5系列默认是没有freertos的配置,需要自己安装freertos包,当然大家也可以自己通过源码安装。但是安装stm32的freertos包,在工程管理方面要简单得很多,stm32CubeIDE可以轻松的帮开发者配置相关的代码。
【开发环境】
win11
Stm32CubeIDE 1.13版本
【开发板】
NUCLEO-U5A5ZJ-Q
【freertos软件包安装】
1、stm32CbudeMAX设计界面,按alt+o可以打开软件包的管理界面。

按下图选择freertos的版本,然后点击安装。

在stm32CubeMax界面我们在中间件中找到X-CUBE-FREERTOS,选中后钩选CMSIS RTOS2。

按alt+K,自动生成代码。freertos默认生成的任务函数是在Core/Src下的app_freertos.c下面。

编写任务示例示代码:
此次代码是在我们面的驱动LCD的代码基础上添加的。【NUCLEO-U5A5ZJ-Q测评】硬件SPI驱动LCD屏 - STM32/STM8单片机论坛 - ST MCU意法半导体官方技术支持论坛 - 21ic电子技术开**坛
首选在任务startDefaultTask任务中添加一个led闪烁的代码:
/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void *argument)
{
  /* USER CODE BEGIN defaultTask */
  /* Infinite loop */
  for(;;)
  {
        HAL_GPIO_TogglePin(LED_GREEN_GPIO_Port, LED_GREEN_Pin);
    osDelay(500);
  }
  /* USER CODE END defaultTask */
}

其次在任务2中添加系统运行的显示代码。
/* USER CODE END Header_StartTask02 */
void StartTask02(void *argument)
{
  /* USER CODE BEGIN myTask02 */
  uint8_t show_str[20];
  uint32_t mytick;

  /* Infinite loop */
  for(;;)
  {
          mytick = HAL_GetTick();
          sprintf(show_str,"run times:%d",mytick/1000);
        ILI9488_printText(show_str,10,40,ILI9488_BLACK,ILI9488_WHITE,2);
    osDelay(1000);
  }
  /* USER CODE END myTask02 */
}


【实验效果】
任务1每500ms闪烁一次,任务2在LCD屏中输出系统运行的时间


使用特权

评论回复
沙发
Tristan_C| | 2023-12-12 10:09 | 只看该作者
开发工具做得越来越方便了

使用特权

评论回复
板凳
laocuo1142| | 2023-12-12 14:28 | 只看该作者
讲解的很详细

使用特权

评论回复
地板
lulugl|  楼主 | 2023-12-12 14:28 | 只看该作者

多谢大佬的关注,我一直在努力之中。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

137

主题

669

帖子

6

粉丝