赞
踩
【前言】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屏中输出系统运行的时间。
---------------------
作者:lulugl
链接:https://bbs.21ic.com/icview-3340310-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。