[STM32F7] 未定义引用 `HAL_DFSDM_ChannelInit'

[复制链接]
431|6
jerry尧 发表于 2025-10-8 14:10 | 显示全部楼层 |阅读模式


在应用程序中使用BSP音频函数。这些都是直接从GitHub获取。当前的问题是链接器无法找到从STM32F769i_discovery_audio.c中调用的几个HAL_DFSDM函数。有一段代码……

if(HAL_OK != HAL_DFSDM_ChannelInit(&hAudioInTopLeftChannel))

{

return AUDIO_ERROR;

}

链接器报告未定义引用。但是就在同一个函数(static uint8_t DFSDMx_Init(uint32_t AudioFreq))中,仅二十行之后的这段代码

if(HAL_OK != HAL_DFSDM_ChannelInit(&hAudioInTopRightChannel))

{

return AUDIO_ERROR;

}

却没有报告错误。

这是怎么回事?链接器怎么会报告未定义引用,但在同一个函数的稍后部分出现相同的调用时却没有报告问题?

main.c是一个C++函数,但stm32f769i_discovery.h和stm32f769i_discovery_audio.h是通过以下方式包含的:

extern "c" {

#include "stm32f769i_discovery.h"

#include "stm32f769i_discovery_audio.h"

}

643757107 发表于 2025-10-8 21:39 | 显示全部楼层
默认的示例是如何做的呢
内政奇才 发表于 2025-10-9 14:56 | 显示全部楼层
重新生成代码
海滨消消 发表于 2025-10-9 14:56 | 显示全部楼层
检查链接器顺序
麻花油条 发表于 2025-10-9 14:57 | 显示全部楼层
可能的原因是 hAudioInTopLeftChannel 没有被正确定义或初始化,或者它的定义被条件编译屏蔽。
classroom 发表于 2025-10-9 15:57 | 显示全部楼层
检查 hAudioInTopLeftChannel 的定义和声明。
cr315 发表于 2025-10-9 16:57 | 显示全部楼层
看是否有条件编译宏影响 hAudioInTopLeftChannel 的定义。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

94

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部