标签: stm32cubemx

STM32CubeMx:如何添加自己的“用户代码开始/结束”部分?

我有一个项目,需要向生成的 C 文件之一添加几行。但是,我要添加更改的地方没有“用户代码开始/结束”部分。因此,每当我重新生成代码时,更改都会被覆盖。我尝试添加自己的用户代码部分,如下所示,但即使如此也被覆盖。看来,CubeMX 正在寻找一组预定义的用户代码块,并覆盖其他所有内容。

/* USER CODE BEGIN 8 */

/* USER CODE END 8 */
Run Code Online (Sandbox Code Playgroud)

我希望能够定义自己的用户代码块,以便我可以在 CubeMX 尚未提供用户代码块的地方编写自定义代码。

stm32 stm32cubemx

7
推荐指数
1
解决办法
7295
查看次数

STM32:使用带有字符匹配ISR和DMA缓冲区的USART

我正在使用带有 FreeRTOS 和 STM32CubeMX 的STM32L432设备。

我尝试通过基于 ASCII 协议的 USART 实现 M2M 通信。协议序列的长度可以不同,但​​具有最大长度和定义的结束字符 (' \r ' / 0x0D )。

因此,我考虑使用 DMA(如FIFO)收集所有 RX-USART 数据,并使用基于USART_ICR_CMCF标志的地址匹配 isr 来确定结束字符。

初始化USART1并启用地址匹配ISR

void HAL_UART_MspInit(UART_HandleTypeDef* uartHandle) {
  GPIO_InitTypeDef GPIO_InitStruct = {0};
  if(uartHandle->Instance==USART1) {
    /* USART1 clock enable */
    __HAL_RCC_USART1_CLK_ENABLE();
    __HAL_RCC_GPIOA_CLK_ENABLE();
    GPIO_InitStruct.Pin = GPIO_PIN_9|GPIO_PIN_10;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
    GPIO_InitStruct.Alternate = GPIO_AF7_USART1;
    HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

    /* USART1 interrupt Init */
    HAL_NVIC_SetPriority(USART1_IRQn, 5, 0);
    HAL_NVIC_EnableIRQ(USART1_IRQn);

    /* USER CODE BEGIN USART1_MspInit 1 …
Run Code Online (Sandbox Code Playgroud)

fifo stm32 dma usart stm32cubemx

5
推荐指数
1
解决办法
3020
查看次数

如何修复 STM32CubeProgrammer 找不到 STM32 目标

大家好,
这里有人以前遇到过这个问题吗?
在我将代码运行到 stm32f446re 中后,我无法在最后一个代码之后上传任何代码,并给出此错误“未找到 STM32 目标”

在此输入图像描述


我尝试执行以下选项:-
1- 更新我的 ST-Link 驱动程序并将其作为“dpinst_amd64”运行。
2-更新我的 ST-Link 固件,它是从 STM32CubeProgrammer 运行并更新的,如图所示。


但这些解决方案都不起作用。

embedded microcontroller arm stm32 stm32cubemx

5
推荐指数
3
解决办法
4万
查看次数

STM32CubeIDE 中的 CMSIS DSP

我想使用 CMSIS 中提供的 DSP 功能。我正在使用 STM32CubeIDE,我的目标板是 ST32F411RE Discovery。将 CMSIS DSP 与 Keil uVision 结合使用非常简单,您只需选择所需的包并使用它即可,但使用 STM32CubeIDE 就不那么简单了。CMSIS 包含在最新的固件包 STM32Cube_FW_F4_V1.24.2 中,但 CubeMX 或 IDE 中似乎没有任何选项来添加 DSP 库(存在于固件包中)。默认添加 CORE 库。我已将 DSP Include 和 Source 文件夹添加到我的工作区,我已将包含路径添加到 IDE,但是当我添加

#include "arm_math.h到main.c

我收到一条错误消息

fatal error: arm_math.h: No such file or directory它针对每个DSP源文件。

过去几天我一直在努力克服这个问题。有人在 STM32CubeIDE 中使用过 CMSIS DSP 功能吗?如果使用过,他们是如何设置 CMSIS DSP 来与 IDE 配合使用的?我的设置还有什么可以尝试的吗?我很惊讶集成的 CubeMX 代码生成器没有提供包含 DSP 的选项。

非常感谢

在此输入图像描述

arm stm32 cmsis stm32cubemx

4
推荐指数
1
解决办法
9635
查看次数

FreeRTOS 任务优先级和堆栈大小

我有 STM32F746ZG Nucleo-144pin 板并使用 STMCubeMx 生成代码。我选择了 CubeMx 提供的 10.0.0 版本的 FreeRTOS,工具链是 SW4STM32。

我做了两个任务,以下是我的功能。我的代码在这里:

void led1_task(void)
{
    while(1)
    {
        HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_7);
        HAL_Delay(1000);
    }
}

void led2_task(void)
{
    while(1)
    {
        HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_14);
        HAL_Delay(4100);
    }
}
Run Code Online (Sandbox Code Playgroud)
  1. 任务优先。

我发现如果两个任务具有相同的任务优先级,则这两个任务可以正常工作,但是如果它们的任务优先级不同,则低任务不起作用。

  xTaskCreate(led1_task, "led1_task", 1024, NULL, 2, NULL);  ==> Works fine.
  xTaskCreate(led2_task, "led2_task", 1024, NULL, 2, NULL);  ==> Works fine.

----------------------------------------------------------------------------

  xTaskCreate(led1_task, "led1_task", 1024, NULL, 2, NULL);  ==> This task is not working.
  xTaskCreate(led2_task, "led2_task", 1024, NULL, 3, NULL);  ==> Works fine.

Run Code Online (Sandbox Code Playgroud)
  1. 任务堆栈大小。

如果两个任务的堆栈大小加起来大于 3 KB,则确认任务未正常工作。下面的代码工作正常。

  xTaskCreate(led1_task, …
Run Code Online (Sandbox Code Playgroud)

stm32 freertos stm32f7 cubemx stm32cubemx

2
推荐指数
1
解决办法
3118
查看次数

尝试在无头模式下构建我的项目,但收到警告:没有匹配的项目

我在 STM32CubeIDE 中有一个项目,我使用以下命令在无头模式下从命令行运行该项目:

headless-bat -project "my-project-name/Debug" -build

并且构建成功。但是,当我尝试将同一项目复制到另一个目录并尝试运行它时,我收到此错误警告:没有与我用它编写的项目名称匹配的项目。我将项目复制到 c:/myworkplace,然后运行以下命令:

headless-bat -project "my-project-name/Debug" -workplace "c:\myworkplace" -build

但我收到了上面提到的错误。有人有什么主意吗?

microcontroller stm32 stm32cubemx

0
推荐指数
1
解决办法
5280
查看次数

标签 统计

stm32 ×6

stm32cubemx ×6

arm ×2

microcontroller ×2

cmsis ×1

cubemx ×1

dma ×1

embedded ×1

fifo ×1

freertos ×1

stm32f7 ×1

usart ×1