[STM32U3] 【NUCLEO-U3C5ZI 测评】stm32cubemx配置freertos

📅 2026/7/19 1:46:29 👁️ 阅读次数 📝 编程学习
[STM32U3] 【NUCLEO-U3C5ZI 测评】stm32cubemx配置freertos

【前言】

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中分别翻转。

复制

  1. /* USER CODE END Header_StartDefaultTask */
  2. void StartDefaultTask(void *argument)
  3. {
  4. /* USER CODE BEGIN defaultTask */
  5. /* Infinite loop */
  6. for(;;)
  7. {
  8. HAL_GPIO_TogglePin(LED3_GPIO_Port,LED3_Pin);
  9. osDelay(200);
  10. }
  11. /* USER CODE END defaultTask */
  12. }
  13. /* USER CODE BEGIN Header_StartLEDTask */
  14. /**
  15. * [url=/u/brief]@brief[/url] Function implementing the ledTask thread.
  16. * @param argument: Not used
  17. * @retval None
  18. */
  19. /* USER CODE END Header_StartLEDTask */
  20. void StartLEDTask(void *argument)
  21. {
  22. /* USER CODE BEGIN ledTask */
  23. /* Infinite loop */
  24. for(;;)
  25. {
  26. HAL_GPIO_TogglePin(LED2_GPIO_Port,LED2_Pin);
  27. osDelay(500);
  28. }
  29. /* USER CODE END ledTask */
  30. }

【实验现象】
编译下载后,可以看到LED2与LED3分别以不同的频率闪烁。


---------------------
作者:lulugl
链接:https://bbs.21ic.com/icview-3520353-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。