[STM32F0] 什么原因?

[复制链接]
1085|15
 楼主| dingy 发表于 2020-6-3 23:37 | 显示全部楼层 |阅读模式
从STM32F103程序移植到STM32F030,遇到
__set_FAULTMASK(1);
这个语句链接通不过,错误信息是:
F030R8\F030R8.axf: Error: L6218E: Undefined symbol __set_FAULTMASK (referred from gizwits_product.o).
查询__set_FAULTMASK()函数在cmsis_armcc.h文件里定义如下:
__STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
{
  register uint32_t __regFaultMask       __ASM("faultmask");
  __regFaultMask = (faultMask & (uint32_t)1);
}
请教是什么原因?
bqyj 发表于 2020-6-3 23:40 | 显示全部楼层
__set_FAULTMASK是不是没有定义?
 楼主| dingy 发表于 2020-6-3 23:44 | 显示全部楼层

主楼后半部分指明,函数已在cmsis_armcc.h文件里定义。
并且程序已包含了此.h文件。
songqian17 发表于 2020-6-3 23:48 | 显示全部楼层
找不到这个定义。
llljh 发表于 2020-6-3 23:52 | 显示全部楼层

看看你的工程代码
huanghuac 发表于 2020-6-3 23:55 | 显示全部楼层
使用右键 goto decalaration?
 楼主| dingy 发表于 2020-6-8 20:05 | 显示全部楼层
是的,移植自动生成的机智云程序。__set_FAULTMASK()函数已定义,但是__set_FAULTMASK(1);移植到STM32F030通不过。
 楼主| dingy 发表于 2020-6-8 20:10 | 显示全部楼层
右键goto definition提示函数未定义;但是从project窗口可以看出函数所在的c文件已经包含cmsis_armcc.h了,为什么?
houcs 发表于 2020-6-8 20:13 | 显示全部楼层
在工程 配置中也要是设置头文件路径,不是包含在工程就可以的
 楼主| dingy 发表于 2020-6-8 20:16 | 显示全部楼层

是不是指Option For Target----C/C++----Include Paths的路径设置?
这个地方已经设置了。
 楼主| dingy 发表于 2020-6-8 20:19 | 显示全部楼层
真正的原因是M3有FAULTMASK寄存器而M0没有。
因此需把
__set_FAULTMASK(1);
语句改成
__set_PRIMASK(1);
lium 发表于 2020-6-8 20:24 | 显示全部楼层
找到问题就好,看来M3和M0的区别还是挺大的
llia 发表于 2020-6-8 20:27 | 显示全部楼层
工程 配置中也要是设置头文件路径的
wangzsa 发表于 2020-6-8 20:32 | 显示全部楼层

右键 goto decalaration
 楼主| dingy 发表于 2020-6-8 20:35 | 显示全部楼层

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先
爱情海玩偶 发表于 2021-4-7 17:54 | 显示全部楼层
dingy 发表于 2020-6-8 20:35
其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

大佬琢磨好了吗,我也是这个问题,想弄清楚
您需要登录后才可以回帖 登录 | 注册

本版积分规则

745

主题

10920

帖子

6

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