1261_CubeIDE中的任务创建代码分析

全部学习汇总: GreyZhang/g_FreeRTOS: learning notes about FreeRTOS. (github.com)

这里包含两部分代码,被注释掉的133-134行是CubeIDE生成的代码。跟FreeRTOS原始的接口有些不同了,我觉得这部分倒是可以去掉生成代码自己处理。一者是能够对FreeRTOS更熟悉,换平台也依然可以通用。另一方面,多了一层接口的封装总归是一些资源的浪费。

这里根据几种常用的配置模式来实现了上面截图我在注释中提到的线程的定义,理解这部分信息,关键的梳理点其实是thread。所有的信息都是围绕这样的一个概念来整理的。当然,最终的概念实现还是落实到了FreeRTOS的任务上。

这个把线程的名字按照字符串展开,而展开后的信息就是上面的thread的定义信息。后面,进行任务创建的时候会从里面提取相应的信息。

这里是线程创建的实现,几种不同的配置模式全都在这样的接口里面实现了。从某种程度上来说,这样简化了一些功能,但是,嵌入式的系统中存储还是很宝贵的,我如果做设计的话这样的接口可能会直接放弃不用了。

这里面有一个判断就是关于静态创建时候buffer的指定判断,如果buffer已经分配了那么就以静态的方式创建。接下来,测试一下buffer的具体信息。

把任务创建时候的信息以全局变量的形式保存下来,之后在任务中打印出来。在修改这段代码的时候我发现了一个错误的惯性思维。当我看了CubeIDE封装的线程创建的函数中,定义信息使用了const,就错误的以为这个肯定会存储在flash之中占用一部分存储信息,而且会是全局变量。其实,这里的存储信息占用还是有的,flash也用到了,但是不是全局变量的区域。因此,在打印这部分信息的时候需要通过一个全局量临时传递一下。

这里打印出来的buffer信息看,的确是无效的。也就是说,默认的线程创建方式中任务以动态的形式进行了创建。这也说明,前面采用的FreeRTOS的原始的接口形式是正确的。

回看原来的接口,我发现其实任务的优先级可能是做了处理的并不是直接的一个数字。这里做一个测试,看看默认的配置下的任务优先级。

任务优先级的设置以及获取的接口这里都使能了,由此,可以增加如下的测试代码进行测试。

以上是增加的测试代码。

以上是测试结果。从测试结果看得出来,采用CubeIDE创建出来的osPriorityNormal优先级的任务优先级是3,尽管这个osPriorityNormal的数值是0。

为了做一个对比测试,我采用FreeRTOS创建任务的时候直接采用0优先级,出现的就是优先级为0的task。接下来看看,CubeIDE的代码在什么地方修改了优先级。

从代码设计的部分,可以看到这里的优先级其实是有一个计算过程的。

通过上面的代码分析,能够知道这个优先级数值传入之后,其实是进行了一个优先级数值的提升的。提升的数值为3,也就是增加3,因此能够得出前面的测试数据。

因此,一个对等的FreeRTOS的任务创建应该是这样子。而上面的优先级计算函数由于是一个static修饰的,因此无法在这里直接调用。

这是修改后的测试效果,看得出来已经一致了。

### 回答1: TM32CubeIDE是一款由意法半导体(STMicroelectronics)推出的开发工具。该工具提供了一个全集成的开发环境,可以用于编写、编译和调试STM32微控制器的应用程序。 TM32CubeIDE采用Eclipse集成开发环境(IDE)作为基础架构,使开发者可以轻松地进行开发和调试工作。作为一款全面的IDE,TM32CubeIDE具有许多强大的功能。首先,它具有丰富的代码编辑器,包括代码自动完成、代码提示和语法高亮等功能,有助于开发者编写出更加高效的代码。其次,TM32CubeIDE还提供了调试功能,开发者可以通过连接STM32开发板进行实时调试,并查看变量值、寄存器状态等信息。此外,TM32CubeIDE还集成了STM32Cube软件库,该库提供了丰富的软件组件和间件,方便开发者快速构建应用程序。 TM32CubeIDE还具有一些其他强大的功能。例如,它支持多任务调度器、图形化配置工具和版本控制系统集成等功能,可以帮助开发者更好地管理和组织项目。此外,TM32CubeIDE还提供了一系列的教程和文档,供开发者学习和参考。 总的来说,TM32CubeIDE是一款功能强大、易于使用的开发工具,适用于开发STM32微控制器的应用程序。它提供了丰富的功能和工具,能够极大地提升开发效率,帮助开发者更好地完成项目。 ### 回答2: STM32CubeIDE是一款由ST微电子公司开发的集成开发环境(IDE),用于编程和开发基于STM32微控制器的应用程序。它提供了一个全面的工具链,以便开发人员能够在一个集成的平台上进行软件开发、调试和测试。 STM32CubeIDE具有用户友好的图形用户界面,可以帮助开发人员轻松创建、构建和调试STM32微控制器的应用程序。它支持多种编程语言,包括C和C++,并提供了各种功能强大的开发工具,如代码编辑器、编译器、调试器和性能分析器。 除了这些基本功能之外,STM32CubeIDE还集成了许多有用的工具和功能。例如,它包括一个丰富的代码库,开发人员可以使用这些库来轻松访问STM32微控制器的各种功能和外设。此外,它还提供了一套丰富的示例代码,这些代码可以帮助开发人员快速入门,并提供了一些优化和最佳实践的指导。 STM32CubeIDE还支持通过协同工作和团队协作来简化开发流程。开发人员可以轻松地与其他团队成员分享代码、注释和调试信息,以便更好地理解和改进项目。 总之,STM32CubeIDE是一款功能强大的集成开发环境,可以帮助开发人员更轻松地开发、测试和调试基于STM32微控制器的应用程序。它提供了丰富的功能和工具,使得开发人员能够更加高效和准确地完成他们的工作。 ### 回答3: TM32CubeIDE是一款由STMicroelectronics开发的集成开发环境(IDE),用于开发ARM Cortex-M微控制器。该软件提供了一个全面的开发平台,使开发人员可以轻松地进行代码编写、调试和测试。 TM32CubeIDE具有用户友好的图形界面,其菜单和工具栏使开发者能够轻松地访问各种功能。该IDE支持多种编程语言,包括C和C++,并具有丰富的代码编辑功能,例如自动完成和语法高亮显示。 在TM32CubeIDE,开发者可以通过集成的调试器对代码进行逐行调试,以查找和修复错误。该IDE还提供了性能分析工具,用于评估代码的执行效率和资源使用情况。开发者还可以使用图形化的界面设计工具创建用户界面,并使用代码生成器生成初始化代码。 此外,TM32CubeIDE还提供了丰富的软件包和库,用于简化开发过程。开发人员可以直接从软件包管理器选择所需的库,并通过简单的配置和生成过程将其集成到项目。 总的来说,TM32CubeIDE是一款功能强大且易于使用的集成开发环境,为开发者提供了一站式的解决方案,使他们能够更轻松地开发和调试ARM Cortex-M微控制器的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值