打印
[STM32F0]

什么原因?

[复制链接]
576|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 | 只看该作者
找不到这个定义。

使用特权

评论回复
5
llljh| | 2020-6-3 23:52 | 只看该作者

看看你的工程代码

使用特权

评论回复
6
huanghuac| | 2020-6-3 23:55 | 只看该作者
使用右键 goto decalaration?

使用特权

评论回复
7
dingy|  楼主 | 2020-6-8 20:05 | 只看该作者
是的,移植自动生成的机智云程序。__set_FAULTMASK()函数已定义,但是__set_FAULTMASK(1);移植到STM32F030通不过。

使用特权

评论回复
8
dingy|  楼主 | 2020-6-8 20:10 | 只看该作者
右键goto definition提示函数未定义;但是从project窗口可以看出函数所在的c文件已经包含cmsis_armcc.h了,为什么?

使用特权

评论回复
9
houcs| | 2020-6-8 20:13 | 只看该作者
在工程 配置中也要是设置头文件路径,不是包含在工程就可以的

使用特权

评论回复
10
dingy|  楼主 | 2020-6-8 20:16 | 只看该作者

是不是指Option For Target----C/C++----Include Paths的路径设置?
这个地方已经设置了。

使用特权

评论回复
11
dingy|  楼主 | 2020-6-8 20:19 | 只看该作者
真正的原因是M3有FAULTMASK寄存器而M0没有。
因此需把
__set_FAULTMASK(1);
语句改成
__set_PRIMASK(1);

使用特权

评论回复
12
lium| | 2020-6-8 20:24 | 只看该作者
找到问题就好,看来M3和M0的区别还是挺大的

使用特权

评论回复
13
llia| | 2020-6-8 20:27 | 只看该作者
工程 配置中也要是设置头文件路径的

使用特权

评论回复
14
wangzsa| | 2020-6-8 20:32 | 只看该作者

右键 goto decalaration

使用特权

评论回复
15
dingy|  楼主 | 2020-6-8 20:35 | 只看该作者

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

使用特权

评论回复
16
爱情海玩偶| | 2021-4-7 17:54 | 只看该作者
dingy 发表于 2020-6-8 20:35
其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

大佬琢磨好了吗,我也是这个问题,想弄清楚

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

745

主题

10920

帖子

6

粉丝