#申请原创#[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屏中输出系统运行的时间
|