[其他ST产品] 已经包含头文件但无法引用其中的函数

[复制链接]
1126|17
 楼主| lvluoo 发表于 2025-5-1 10:00 | 显示全部楼层 |阅读模式
Stm32cubeIDE中尽管包含f_utime fatfs.h“ 和 ”ff.h“ 文件,但我无法引用其中的函数。
更奇怪的是,当我单击:Open declaration 时,IDE 对此没有反应。

代码如下:

#include "sd.h"#include <stdio.h>#include <string.h>#include "fatfs.h"#include "clock.h"#include "ff.h" FRESULT SD_setFileTime(char* patho, DateTime* dateTime){    FILINFO infoo;    // time assign here...    f_utime((const TCHAR*)patho, &infoo); // << ERROR: undefined reference to f_utime    return FR_OK;}
classroom 发表于 2025-5-6 12:53 | 显示全部楼层
FATFS库未正确链接?
flycamelaaa 发表于 2025-5-6 12:54 | 显示全部楼层
FATFS版本可能不支持f_utime函数。
powerantone 发表于 2025-5-6 12:56 | 显示全部楼层
重启STM32CubeIDE试试。
powerantone 发表于 2025-5-6 20:00 | 显示全部楼层
清理项目并重新构建,所有文件为最新版本。
stormwind123 发表于 2025-5-6 23:00 | 显示全部楼层
FATFS库的版本是否与STM32CubeIDE兼容。
公羊子丹 发表于 2025-5-26 07:23 | 显示全部楼层
是的,每次启动调试后都得点“Start Trace”,我也是这么干的,确实挺麻烦。        这个简单,在编译选项里加个 -save-temps 就能生成 .s 文件了。        这个我也踩过坑,f_utime 需要在 ffconf.h 里启用 FF_FS_NORTC 和 FF_FS_READONLY 等配置,建议检查下。        感觉像是调试模式下系统时钟没跑起来,I2C总线时序乱了。试试在CubeMX里确认下debug模式下的时钟配置。        看起来 CubeMX 生成的 MAC 地址实际是从 ethernetif.c 里赋值的,改宏没用是因为代码里没用到。        线长15cm已经是极限了,确实需要注意阻抗,尤其是USB高速的话对差分阻抗要求挺严格的。        看起来不像是温度问题,你有没有实时查看TIM1的状态寄存器,看看是不是进了中断或者被强制关闭了?        是不是电流采样点跟实际导通时刻对不上,PWM死区时间确实可能让采样偏早或偏晚。        是不是SPI和I2S切换的时候有残留配置没清掉?GPIO可能还保留上一次的模式。        你那个振铃可能是走线太长或者阻抗不匹配造成的,加串联电阻是对的方向。
周半梅 发表于 2025-5-26 07:25 | 显示全部楼层
头文件只是声明,f_utime 可能根本没被编译进去,确认下 ff.c 源文件里有没有编译进项目。
帛灿灿 发表于 2025-5-26 07:26 | 显示全部楼层
单击 Open declaration 没反应,可能是路径没索引成功,clean 一下项目然后 rebuild 再试试。
童雨竹 发表于 2025-5-26 07:27 | 显示全部楼层
f_utime 这个函数是可选功能,CubeMX 默认不启,你得手动打开 ffconf.h 里相关宏。
万图 发表于 2025-5-26 07:28 | 显示全部楼层
看样子是链接错误,"undefined reference" 说明头文件声明了但链接器找不到实现。
Wordsworth 发表于 2025-5-26 07:29 | 显示全部楼层
f_utime 在 FatFs 的源码中不是默认启用的函数,你要改配置文件并重新生成代码才行。
Bblythe 发表于 2025-5-26 07:30 | 显示全部楼层
有没有用 CubeMX 重新生成 FatFs 配置?很多函数默认是关的,只有启用宏它才会编译进来。
Pulitzer 发表于 2025-5-26 07:31 | 显示全部楼层
如果你用的是 CubeMX 自动生成的 FatFs,有些接口是裁剪掉的,节省资源。你得手动加进去。
Uriah 发表于 2025-5-26 07:32 | 显示全部楼层
有时候 IDE 的 Open declaration 功能出问题,可以用 Ctrl+Shift+R 直接搜函数看它在哪定义的。
Clyde011 发表于 2025-5-26 07:32 | 显示全部楼层
你也可以临时自己写一个 f_utime 的简单实现,如果只为了测试时间写入功能的话。
t60yz 发表于 2025-5-31 23:44 | 显示全部楼层
f_utime 需要底层实现的 RTC 支持或者手动时间函数回调。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

86

帖子

0

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