[STM32U3] 【NUCLEO-U3C5ZI 测评】stm32cubemx配置freertos
📅 2026/7/19 1:46:29
👁️ 阅读次数
📝 编程学习
【前言】
freertos是最常用的操作系统。移植它有好几种方式。一是使用源码配置,从官网下载源码,然后手工添加到工程中,比较复杂。二是使用mdk中的pack包,直接导入,然后配置tick。也比较简单。三是使用stm32cube X-cbue-freertos包,可以使用图形化配置,相对于说是最友好的一种配置。本篇将分享如何使用stm32cubeMX来实现freertos的移植。
【实施步骤】
1、在stm32cubeMX下载x-cube-freertos包。
安装好后就可以在工程中启用与配置了。
2、开启x-cube-freertos
保持黙认配置即可。
3、添加任务
到此配置结束
4、由于freertos默认使用systick来做为心跳,那莫与他跟sys是有冲突的(即HAL_Tick),如果不修改就会出现问题。因此我们需要在sys中修改心跳为tim。
5、当我们给sys配置为TIM6时,由于他的中断级别跟systick是一样的,如果他的中断比较低的话,那莫在有些外设配置的hal库中如果用到了hal_tick_get就会取不到tick导至卡死或者超时。因此需要修改一下他的中断级别:
【测试】
我这里添加了开发板上的两个led分别为led2\led3。
生成工程后在app_freertos.c中分别翻转。
复制
/* USER CODE END Header_StartDefaultTask */void StartDefaultTask(void *argument){/* USER CODE BEGIN defaultTask *//* Infinite loop */for(;;){HAL_GPIO_TogglePin(LED3_GPIO_Port,LED3_Pin);osDelay(200);}/* USER CODE END defaultTask */}/* USER CODE BEGIN Header_StartLEDTask *//*** [url=/u/brief]@brief[/url] Function implementing the ledTask thread.* @param argument: Not used* @retval None*//* USER CODE END Header_StartLEDTask */void StartLEDTask(void *argument){/* USER CODE BEGIN ledTask *//* Infinite loop */for(;;){HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);osDelay(500);}/* USER CODE END ledTask */}
【实验现象】
编译下载后,可以看到LED2与LED3分别以不同的频率闪烁。
。
---------------------
作者:lulugl
链接:https://bbs.21ic.com/icview-3520353-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。
编程学习
技术分享
实战经验