对“MX_USART2_UART_Init”的未定义引用

问题描述 投票:0回答:1

我收到“MX_USART2_UART_Init”未定义引用的错误

这是我的主要代码

#include "main.h"
#include "ai_platform.h"
#include "ai_datatypes_defines.h"
#include "network_1705163992743.h"
#include "network_1705163992743_data.h"
#include "network_1705163992743_data_params.h"
#include "network_1705163992743_config.h"
#include "app_x-cube-ai.h"
#include <stdio.h>

void SystemClock_Config(void);
...
static void MX_USART2_UART_Init(void);
...
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

static void MX_USART2_UART_Init(void)
{

  
  huart2.Instance = USART2;
  huart2.Init.BaudRate = 115200;
  huart2.Init.WordLength = UART_WORDLENGTH_8B;
  huart2.Init.StopBits = UART_STOPBITS_1;
  huart2.Init.Parity = UART_PARITY_NONE;
  huart2.Init.Mode = UART_MODE_TX_RX;
  huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
  huart2.Init.OverSampling = UART_OVERSAMPLING_16;
  if (HAL_UART_Init(&huart2) != HAL_OK)
  {
    Error_Handler();
  }


}

和我的 app_x-cube-ai.c

MX_UARTx_Init();是什么给了我错误

void MX_X_CUBE_AI_Init(void)
{
    MX_UARTx_Init();
    aiValidationInit();
    /* USER CODE BEGIN 5 */
    /* USER CODE END 5 */
}

在 bsp_ai.h 中对 main 中的 MX_USART2_UART_Init 的引用

#define MX_UARTx_Init MX_USART2_UART_Init
c stm32 microcontroller
1个回答
0
投票

您可能更改了 Cube 生成的启动和配置文件的文件结构。

由于

static void MX_USART2_UART_Init(void)
static
它必须在您所说的同一个文件(更准确地说是编译单元)中定义。

您可以从

app_x-cube-ai.c
调用此函数,并在
main.c
文件中定义它。它不会工作,因为
MX_USART2_UART_Init
没有外部链接。

您可以:

  1. 从函数原型和定义中删除
    static
  2. 将定义移动到调用此函数的编译单元(文件)。
© www.soinside.com 2019 - 2024. All rights reserved.