【FreeRTOS复盘】1-平衡小车项目 CubeMX 搭建 FreeRTOS 工程模版

1. 已经画好板子,预留了装电机的孔位,买好了电机和车轮子(闲鱼卖家送的),买好了电机座子。

电机的插座排线和固定电机的螺丝螺母还没买。

2. 准备用 FreeRTOS 来构建我的小车,正好CubeIMX可以搭载 FreeRTOS,那么一箭双雕,就用CubeIMX来编程吧。

首先需要了解的是:自己的单片机够不够资格搭载 FreeRTOS


 

为什么要使用 FreeRTOS:

B站UP“硬件工程师Oskar”这样回答:

 我对 3 是不同意的,因为STM32 可以使用定时器中断、外部中断等等实现频次不同。

1略微不同意,因为这是编程者的习惯问题。

我觉得 2 还算中肯,因为实时性就是用来保证重要程序优先执行的。

另外一个方面,就是不使用 RTOS 的时候,延时就是CPU在干等,比较浪费CPU资源。FreeRTOS 中的 vTaskDelay() 则会产生进程切换,把CPU腾出来给其他他进程。

 


 

使用FreeRTOS需要多大 RAM、ROM?B站UP“硬件工程师Oskar”这样回答:

                         

F103C8 有 20KB- RAM(大于4),64KB- FLASH (大于8),因此是可以使用的。

 (从表中和可以看到 F103 系列的芯片都是满足要求的)


 

接下来就是用 CubeMX 构建工程模板了:

首先是 C8T6 的时钟配置

 第一步:使能HSE

 第二步:配置时钟树

然后是关于 FreeRTOS 的一些配置: 

在STM32CubeIDE中配置FreeRTOS中间层时需要选择interface,其中有三个选项:Disable、CMSIS_V1和CMSIS_V2,怎么选呢?

Cortex微控制器软件接口标准(CMSIS)是独立于供应商的硬件抽象层,用于基于Arm Cortex处理器的微控制器,并且CMSIS提供了到处理器和外围设备,实时操作系统以及中间件组件的接口,可以说非常实用。

CMSIS软件接口简化了软件重用,减少了开发周期,而且也不受限操作系统的类型,去耦。

不同之处

RTOS v1使得软件能够在不同的实时操作系统下运行(屏蔽不同RTOS提供的API的差别)

而RTOS v2则是拓展了RTOS v1,兼容更多的CPU架构和实时操作系统。

正常V1够用了,普通功能选V1,高级功能选择V2,V2占空间大:

参照流程图,设置各个任务:

 小车的 FreeRTOS

 然后导出,注意导出时的文件夹不要含中文名,否则出不来 Keil-V5 工程。(这一点这个软件做得真够烂的)

 CubeMX导出配置

posted @ 2023-06-25 15:25  FBshark  阅读(218)  评论(0编辑  收藏  举报