使用CubeMX快速搭建FREERTOS

如何使用STM32快速搭建FREERTOS

小编之前一直使用正点原子家的产品, 最近准备学习学习TOUCHGFX,要用到HAL+RTOS,原子家的使用起来不方便。于是琢磨着使用STM32CUBEMX直接生成FREERTOS+HAL工程。非常方便,在这里分享给大家

CUBEMX安装

安装CUBEMX前, 需要安装JAVA,注意一定要下载64位JAVA才可,大家可参考这个教程https://jingyan.baidu.com/article/3aed632ede2a2f7010809114.html进行下载安装
2022.6.18更新:Win11,cubemx6.5版本,已经不需要自己安装java环境了。
使用CubeMX快速搭建FREERTOS_第1张图片
CUBEMX软件可以直接从官网下载最新版,链接在此https://www.st.com/en/development-tools/stm32cubemx.html。软件直接选择最新版安装。
使用CubeMX快速搭建FREERTOS_第2张图片

装好后(首次打开可能需要更新, 耐心等待),点击下图位置安装相应的支持包。我这里使用的是正点原子F407最小系统板

使用CubeMX快速搭建FREERTOS_第3张图片
使用CubeMX快速搭建FREERTOS_第4张图片

创建第一个工程

1,选择MCU型号
使用CubeMX快速搭建FREERTOS_第5张图片使用CubeMX快速搭建FREERTOS_第6张图片
2,配置SYS
点击左边的SYS选项卡,选择Debug模式为SW。注意这里将时钟源换成了Timer1。这个时钟源是给HAL库提供时钟的。HAL在运行一些超时监测的代码时, 需要一个时钟源提供时钟,一般用systick。但是本例中systick被RTOS占用。所以修改HAL时钟源为Timer1.
使用CubeMX快速搭建FREERTOS_第7张图片
3,配置RCC
这里使用的是外部晶振
使用CubeMX快速搭建FREERTOS_第8张图片
4,配置一个LED引脚
使用CubeMX快速搭建FREERTOS_第9张图片
5,配置RTOS
V1, V2 的区别我也不大清楚。网上也没搜索到,这里暂且V1。 大家有知道的请在下方留言。FREERTOS内部的配置不在这里介绍了,这里不改动任何配置
使用CubeMX快速搭建FREERTOS_第10张图片
6,配置时钟树
我用的是外部8M晶振, 参数如下。这里仅做参考,大家根据自己的情况配置,只要不报错应该都没啥问题。
使用CubeMX快速搭建FREERTOS_第11张图片
7,配置工程选项
注意:Application structure 建议选择Advanced, 小编之前用Basic, 在代码重新生成时会把usercode覆盖掉(代码书写位置正确的情况下也会这样)。
使用CubeMX快速搭建FREERTOS_第12张图片
8,生成代码
小编比较习惯用单独的.c.h 文件,大家按习惯来
使用CubeMX快速搭建FREERTOS_第13张图片
9,测试
至此, 我们的RTOS已经完成了, 为了验证一下,我们可以写一个小程序验证一下

生成的freertos里, cubemx已经为我们创建好了一个任务defaultTask, 我们直接将我们的代码塞到这个线程里即可。

在freertos.c里添加如下代码:

void StartDefaultTask(void const * argument)
{
  /* USER CODE BEGIN StartDefaultTask */
  /* Infinite loop */
  for(;;)
  {
		HAL_GPIO_TogglePin(GPIOF,GPIO_PIN_9);//翻转电平
		osDelay(500);				//延时+调度
  }
  /* USER CODE END StartDefaultTask */
}



完活



PS,关于CUBEMX生成的FREERTOS
ST在FREERTOS的基础上做了封装,大家可以打开cmsis_os.c就可以看到。所有关于freertos的操作全部被再封装了一遍, 好处就是即使不同的RTOS, 用户代码也不会改变。而且ST的封装感觉挺好用的。大家根据自己的情况来。

你可能感兴趣的:(单片机,freertos,stm32)