如何使用AzureRTOS和STM32CubeIDE创建线程?
如何使用AzureRTOS和STM32CubeIDE创建线程?使用STM32Cube生态系统中提供的软件包是直接的,本文提供了所有步骤和演示代码。目标:这篇文章的目的是给你。。。
如何使用AzureRTOS和STM32CubeIDE创建线程?
使用中提供的软件包 STM32Cube生态系统是直接的,本文提供了所有步骤和演示代码。
- 目标:本文的目的是让您初步了解如何在STM32Cube生态系统中支持AZURE-RTOS ThreadX
尽管该示例使用NUCLEO-H223ZG,但您可以对其他基于STM32H7的板使用相同的步骤。主要区别通常是引脚输出和时钟配置。
本文将向您展示如何从头开始一个项目,目标是让LED在几次点击中闪烁,同时使用一个简单的线程来完成。
演示框图:
本文将向您展示如何从头开始一个项目,目标是让LED在几次点击中闪烁,同时使用一个简单的线程来完成。
演示框图:

- STM32CubeIDE–逐步演示:
- 启动STM32CubeIDE(1.7.0使用的版本)
- 选择您的首选工作区,单击“启动”
- 在信息中心,选择启动新的STM32项目

- 特别是对于这个演示,我们将使用NUCLEO-H723ZG作为起点:

- 为您的项目命名,只需记住避免使用空格和特殊字符——如果您缺少任何库,STM32CubeIDE将立即自动开始下载

弹出窗口询问是否应在默认模式下初始化外围设备,单击“是”:
然后第二个弹出窗口要求打开设备配置透视图,再次单击“是”:

然后第二个弹出窗口要求打开设备配置透视图,再次单击“是”:

- 现在,您应该有一个配置了一些外围设备的MCU视图,在左侧,您将有初始代码,但没有添加ThreadX

添加软件包的时间:

- 在组件选择窗口中浏览并定位AzureRTOS包:

- 打开RTOS ThreadX并选中Core(核心)框,然后单击OK(确定)

- 这将在类别的下部添加软件包:

- 现在,通过单击它,您可以添加RTOS ThreadX框,这将显示AzureRTOS应用程序的配置选项

- 由于这个演示只是为了让LED闪烁,所以默认设置都已设置,但我们确实需要做另一个修改。默认情况下,HAL驱动程序将使用Systick作为其主要时基,但此计时器应仅留给AzureRTOS。
如果HAL库没有单独的时间源,编译将失败,因为两个库都想使用SysTick_Handler中断。为了防止这种情况,我们可以简单地为HAL选择一个不同的时基,方法是点击System Core/SYS并选择时基Source作为TIM6:

- 最后一个修改是,为了防止生成太多未使用的代码,我们可以决定不创建USB和以太网的功能,因为它们是在我们基于板创建设计时本地添加的,这可以通过删除它们的生成代码来完成:

- 一切就绪,我们可以按Alt+K生成代码,按Ctrl+S保存代码:

该项目现在有一组新的文件夹:
这是关于代码结构的详细信息:

这是关于代码结构的详细信息:

- 最后一部分是创建第一个线程:
- 打开Core\Src\app_threadx.c并在第37行左右开始添加代码,使用注释为以下代码找到合适的位置:

- 在分配堆栈之后,我们可以在函数App_ThreadX_Init中创建线程:

关于我们刚刚添加的内容,请注意:

- 创建线程的主函数
首先,由于我们想要访问LED定义,我们需要将main.h包含在同一个app_threadx.c文件中:
最后是我们的线索:
到目前为止,它可能还没有被清除,但默认的时基是10ms,因此通过使用tx_thread_sleep(20)实际上会等待200ms

最后是我们的线索:

到目前为止,它可能还没有被清除,但默认的时基是10ms,因此通过使用tx_thread_sleep(20)实际上会等待200ms

- 从这一点开始,按Ctrl+B进行构建,您应该会看到0个错误和0个警告。
- 将板连接到计算机并进入调试模式,方法是首先单击项目名称,然后菜单“运行/调试为/STM32”:

在“编辑配置”窗口中,单击“调试”:

- 一旦进入“调试”透视图,点击播放即可使用ThreadX欣赏闪烁的LED。您也可以使用窗口/显示视图/ThreadX/ThreadX线程列表

要增强整体调试选项(一旦应用程序运行一段时间并暂停,线程列表将自动加载):

- 有用的链接:
- STM32管:https://www.st.com/en/development-tools/stm32cubeide.html
- 核子-H723ZG以下为:https://www.st.com/en/evaluation-tools/nucleo-h723zg.html
- ThreadX用户指南https://docs.microsoft.com/en-us/azure/rtos/threadx/about-this-guide
- ThreadX api描述https://docs.microsoft.com/en-us/azure/rtos/threadx/chapter4
- Github:https://github.com/STMicroelectronics/x-cube-azrtos-h7
- 维基:https://wiki.st.com/stm32mcu/wiki/STM32CoreMW_overview
- 结论:
将ThreadX应用程序添加到裸机项目包括:
-
- 在STM32CubeMX/STM32CubeIDE中添加ThreadX组件
- 在STM32CubeMX/STM32CubeIDE中适配ThreadX配置
- 从STM32CubeMX/STM32CubeIDE生成代码
- 这将使用所有需要的文件更新项目结构
- 使用ThreadX API创建ThreadX组件线程、互斥体等
上一篇: STM32 I2C不工作 下一篇: 如何使用STM32Cube HAL管理多个EXTI