STM32支持包
|
在开始之前,从文章中做一般的准备和设置 在目标硬件上运行模型. 它描述了在目标硬件上运行模型的一般步骤:环境准备、连接、生成/装配和基本启动验证。 |
本文介绍了在*目标硬件*模式下在*STM32*板上启动模型的特性。
要在*目标硬件*模式下使用*STM32*板,使用该块 EDM-Target-STM32. 它提供代码生成,固件组装和下载,以及在微控制器上运行模型。
EDM-Target-STM32块参数
座 *EDM-Target-STM32*通过以下参数调整与微控制器的交互:
Cubemx项目的路径*--生成的STM32CubeMX项目的完整路径。
工具链的路径:[工具链是一组控制台工具(编译器、链接器和实用程序),它们从项目的源文件中为微控制器组装固件。]*--编译器的完整路径 arm-none-eabi-gcc.
+
指定时 <自动> 首先,它在CubeIDE放置它们的路径中搜索(如果已安装)。 然后在路径和系统路径中。
+ **适用于Windows的示例:
+
C:\ST\STM32CubeIDE_1.13.2\STM32CubeIDE\plugins\
com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.win32_2.0.100.202309141235\
tools\bin\
+ **Linux的一个例子:
+
/opt/st/stm32cubeide_1.13.2/plugins/com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.11.3.rel1.linux64_2.0.100.202309141235/tools/bin/arm-none-eabi-gcc
*Stm32cubeprogrammercli的路径--可执行文件的完整路径 Stm32电脑程式.
+
要自动检测已安装的tulchain,请使用表达式 <自动> 以定义郁金香链的方式:
+

*UART模块--用于交互模式的USART编号。
+ 此编号必须与*STM32CubeMX*中为UART数据传输而必须预配置的模块相匹配。 有关详细说明,请参阅互动模式。
+
在CubeMX中配置后,在*EDM-Target-STM32*块的*冗余USART模块*参数中指定相同的USART编号(例如, 2 为USART2)。
*COM port--所选UART模块对应的串口(例如, COM3 或 /开发/ttyUSB0).
| 要操作设备,必须提前安装STMicroelectronics软件(参见[必需软件]部分)。 |
所需软件
要使用*STM32*,您需要安装以下工具:
STM32CubeMX*--用于配置微控制器外设并生成项目。 STM32CubeIDE*是一个推荐的开发环境,其中包括编译器和调试工具。
允许在没有*STM32CubeIDE*的情况下工作。 在这种情况下,必须单独安装。:
*编译器 gcc-arm-none-eabi.
*固件的实用程序 Stm32电脑程式.
|
实用程序可以通过两种方式使用: *手动指定实用程序--在这种情况下,只需在*EDM-Target-STM32*块参数中设置编译器和STM32CubeProgrammerCLI的完整路径。 变量 *模式 |
准备工作 AnyMath
确保已安装和配置硬件支持包。 它的安装在一节中详细描述 engee-hardware/engee-integrations.adoc#hardware-installation.
| 如果已安装支持包,则可以继续启动客户端程序并使用提供的URL进行连接。 |
STM32项目的准备工作
-
安装和配置*STM32CubeMX*。
-
为您的*STM32*板创建项目并执行基本外设配置。
-
单击*生成代码*并将项目保存到方便的目录中。
-
如果使用外部工具链,请安装*STM32CubeIDE*或单独配置编译器和固件实用程序。
| 使用CubeMX项目的详细配置 *AnyMath*下面在配置和启动模型一节中描述。 |
配置和启动模型
在*代码生成器*部分中,选择*生成外围初始化作为一对'。c/。每个外设的h’文件。
+
设置必要的外围设备并单击*生成代码。
+
*在*EDM-Target-STM32*块的*CubeMX项目路径*参数中指定生成项目的路径。
+

-
选择模型执行模式:
-
在硬件上运行模型
--交互式执行与控制从 AnyMath. -
以独立模式运行
--离线执行,无需控制 AnyMath.
-
-
单击"开始"按钮。
|
如果模型中未放置*EDM-Target-STM32*块,则在启动时会出现错误:
|
不同模式的特殊设置
为FreeRTOS设置
FreeRTOSfootnote项目:[*FreeRTOS*是一个轻量级的实时操作系统(RTOS),提供任务调度,延迟,队列和其他机制,方便地与其余固件逻辑并行运行模型。]可以尽可能简单地配置:
-
在*STM32CubeMX*打开*引脚排列和配置*→中间件和软件包。
-
打开*FREERTOS*。
-
在*FREERTOS模式和配置*部分中,将*接口*设置为
CMSIS_V2.
-
默认情况下保留其他参数。
-
使用*生成代码*按钮生成代码。
| 在FreeRTOS模式下,不需要手动设置模型执行频率,而在裸机模式下,计时器是手动设置的。 |
裸机设置
在bare-metalfootnote模式下:[*Bare-metal*是没有操作系统的程序的启动。 代码直接在微控制器上运行,所有任务(定时器,调用 model_tick(),事件处理)必须手动配置。]模型执行频率通过定时器手动设置:
-
选择空闲计时器(例如,TIM3)。
-
设置时钟源
内部时钟.
-
使用公式计算定时器参数:
T = ((P + 1) × (R + 1)) / F_CPU哪里
-
P--预分频器; -
R--反周期; -
F_CPU--微控制器的时钟频率。72兆赫的例子:
P = 7199 R = 9
-
-
设置定时器参数中的值。

-
在*NVIC设置*选项卡中,启用定时器中断。

-
添加对model_tick()函数的调用footnote:[model_tick是一个自动生成的 *AnyMath*负责模型的"时钟周期"的功能。 它应该以正确的频率(通常为1ms)调用,以便模型以正确的频率运行。]:
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if (htim->Instance == TIM1) { HAL_IncTick(); } if (htim->Instance == TIM3) { model_tick(); } } -
初始化计时器后,添加启动:
HAL_TIM_Base_Start_IT(&htim3;);
互动模式
交互模式使用UART与 AnyMath:
-
在*STM32CubeMX*中,选择一个免费的USART模块。
-
设置参数: **波特率 —
115200位/秒;
**默认情况下为其他参数。 -
设置UART操作模式:
*在*DMA设置*选项卡中,单击*添加*按钮并添加新的*DMA请求 —
USARTx_RX,在哪里x--保留的USART模块的编号。
*在此*DMA请求*的*优先级*字段中,指定 高,并在底部设置字段*DMA请求设置*设置*模式的值通告.
*接下来,添加另一个*DMA请求 — USARTx_TX. 在*优先级*字段中,指定高,并在底部,在设置字段*DMA请求设置*中,为*模式设置值*正常.
**还要确保在所有旁边的*NVIC设置*选项卡中 DMAx channel_№全局中断而恰恰相反USARTx全局中断有蜱虫。 -
在*EDM-Target-STM32*块的参数中,指定: UART模块—USART编号; COM端口—设备端口。

例子::
*Linux — /开发/ttyUSB0
*窗户 — COM1
+ 检查Linux上的可用端口:
+
ls /dev | grep ttyUSB
| 要将UART显示为COM端口,您可能需要配置USB_DEVICE。 有关更多信息,请参阅手册: STM32和USB。 USB虚拟COM端口实现 |

