AnyMath 文档

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,请使用表达式 <自动> 以定义郁金香链的方式:

    stm32 1

  • UART模块--将用于交互模式的USART编号。

    此编号必须与 STM32CubeMX 中为UART数据传输而必须预配置的模块相匹配。 有关详细说明,请参阅互动模式

    在CubeMX中配置后,在 EDM-Target-STM32 块的"UART模块"参数中指定相同的USART编号(例如, 2 为USART2)。

  • COM port--所选UART模块对应的串口(例如, COM3/开发/ttyUSB0).

要操作设备,您必须提前安装STMicroelectronics软件(请参阅"所需软件"部分)。

所需软件

要使用STM32,您需要安装以下工具:

  • STM32CubeMX--用于配置微控制器外设并生成项目。

  • *STM32CubeIDE*是推荐的开发环境,其中包括编译器和调试工具。

允许在没有 STM32CubeIDE 的情况下工作。 在这种情况下,必须单独安装。:

  • 编译器 gcc-arm-none-eabi

  • 固件实用程序 Stm32电脑程式

实用程序可以通过两种方式使用:

  • * 手动指定实用程序*--在这种情况下,只需在*EDM-Target-STM32*块参数中设置编译器和STM32CubeProgrammerCLI的完整路径。 变量 路径 在这种情况下不使用它。

  • * 模式 <自动>--然后AnyMath*将自动搜索实用程序。 在这种情况下,环境变量为 路径 它被应用,并且实用程序应该可以通过它获得。

工程师准备工作

确保已安装和配置硬件支持包。 它的安装在一节中详细描述 硬件连接

如果已安装支持包,则可以继续启动客户端程序并使用提供的URL进行连接。

STM32项目的准备工作

  1. 安装和配置 STM32CubeMX

  2. 为STM32板创建项目并执行基本外设配置。

  3. 单击 生成代码 并将项目保存到方便的目录中。

  4. 如果使用外部工具链,请安装 STM32CubeIDE 或单独配置编译器和固件实用程序。

下面在设置和启动模型一节中描述了使用 AnyMath 的CubeMX项目的详细配置。

设置和启动模型

  1. 打开 AnyMath 模型。

  2. 单击目标平台选择按钮并选择模式 目标硬件:

    target hardware 1

  3. 添加 EDM-Target-STM32 块从 块库AnyMath 画布上。 如果缺少该块,请使用以下命令更新支持包:

    engee.package.start("Engee-Device-Manager")
  4. STM32CubeMX中设置项目:

    • 在*Project Manager*→Project*部分中,选择*仅复制必要的库文件

    • 在*Project Manager*→Toolchain/IDE*部分中,请务必将值设置为*CMake

      stm32 3

      CMake 的选择是强制性的。 如果没有这个,项目格式将与 AnyMath 不兼容。

    • 在* 代码生成器*部分中,选择*生成外围初始化作为一对'。c/。每个外设的h’文件*。

      stm32 2

    • 配置必要的外围设备并单击* 生成代码*。

      stm32 4

    • 在*EDM-Target-STM32*块的*CubeMX项目路径*参数中指定生成项目的路径。

      stm32 5

  5. 选择模型执行模式:

    • 在硬件上运行模型 target hardware 4 --交互式执行与控制从 AnyMath

    • 以独立模式运行 target hardware 3 --离线执行,不受 AnyMath 的控制。

  6. 单击"开始"按钮。

如果模型中未放置 EDM-Target-STM32 块,则在启动时会出现错误:

ErrorException("EDM-Target-STM32 block not found. To start model in Target Hardware mode, the model must include an EDM-Target-STM32 block.")

不同模式的特殊设置

为FreeRTOS设置

FreeRTOSfootnote项目:[FreeRTOS 是一个轻量级的实时操作系统(RTOS),提供任务调度,延迟,队列和其他机制,方便地与其余固件逻辑并行运行模型。]可以尽可能简单地配置:

  1. STM32CubeMX 打开 引脚排列和配置中间件和软件包

  2. 打开 FREERTOS

  3. FREERTOS模式和配置 部分中,将 接口 设置为 CMSIS_V2.

    stm32 6

  4. 默认情况下保留其他参数。

  5. 使用 生成代码 按钮生成代码。

在FreeRTOS模式下,不需要手动设置模型执行频率,而在裸机模式下,计时器是手动设置的。

裸机设置

在bare-metalfootnote模式下:[Bare-metal 是没有操作系统的程序的启动。 代码直接在微控制器上运行,所有任务(定时器,调用 model_tick(),事件处理)必须手动配置。]模型执行频率通过定时器手动设置:

  1. 选择空闲计时器(例如,TIM3)。

  2. 设置时钟源 内部时钟.

    stm32 7

  3. 使用公式计算定时器参数:

    T = ((P + 1) × (R + 1)) / F_CPU

    哪里:

    • P --预分频器

    • R --反周期

    • F_CPU --微控制器的时钟频率

      72兆赫的例子:

      P = 7199
      R = 9
  4. 设置定时器参数中的值。

    stm32 8

  5. NVIC设置 选项卡中,启用定时器中断。

    stm32 9

  6. 添加对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();
      }
    }
  7. 初始化计时器后,添加启动:

    HAL_TIM_Base_Start_IT(&htim3;);

互动模式

交互模式使用UART与 AnyMath通信:

  1. STM32CubeMX 中,选择一个免费的USART模块。

  2. 设置参数:

    • 波特率 — 115200位/秒

      stm32 10

    • 其他参数默认为

  3. EDM-Target-STM32 块参数中,指定:

    • UART模块—​USART编号

    • COM端口—​设备端口

      stm32 11

例子::

  • Linux操作系统 — /开发/ttyUSB0

  • 窗户 — COM1

    检查Linux上的可用端口:

    ls /dev | grep ttyUSB
要将UART显示为COM端口,您可能需要配置USB_DEVICE。 有关更多信息,请参阅手册: STM32和USB。 USB虚拟COM端口实现

解决可能出现的问题

UART连接的问题

报告时 无法连接到目标:

  • 检查USB连接的可靠性

  • 确保TX/RX连接正确

  • 在Linux上,将用户添加到有权访问串行设备的组(例如, 车轮, uucp 或另一个,具体取决于您的分布)。

固件问题

如果锚被移除 用户代码开始 或CubeMX系统代码:

  • 删除损坏的项目文件

  • 在CubeMX中再次生成项目(通过单击* 生成代码*)

装配问题

  • 错误显示在客户端程序的界面中,并完整输出有关问题的信息。

  • 检查实用程序的路径是否正确

  • 确保在块参数中正确指定了工具的路径,并且可以使用指定的路径访问它们。