打印
[STM8]

__asm("jrne EndWaitForVih")编译报错

[复制链接]
1064|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
llljh|  楼主 | 2021-8-14 18:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
编译DISCOVERY的例子,出现如下错误,不知道什么原因?
Error[As011]: Undefined symbol: EndWaitForVih E:\Work\PROCEDURE\ARM\Experiment\STM8\stm8s-discovery_dev\Libraries\STM8_TouchSensing_Driver\src\stm8_tsl_rc_acquisition.c 366
Error[As011]: Undefined symbol: EndWaitForVih E:\Work\PROCEDURE\ARM\Experiment\STM8\stm8s-discovery_dev\Libraries\STM8_TouchSensing_Driver\src\stm8_tsl_rc_acquisition.c 366
Error[As011]: Undefined symbol: EndWaitForVih E:\Work\PROCEDURE\ARM\Experiment\STM8\stm8s-discovery_dev\Libraries\STM8_TouchSensing_Driver\src\stm8_tsl_rc_acquisition.c 366
Error[As011]: Undefined symbol: WaitForVih E:\Work\PROCEDURE\ARM\Experiment\STM8\stm8s-discovery_dev\Libraries\STM8_TouchSensing_Driver\src\stm8_tsl_rc_acquisition.c 369
Error[As011]: Undefined symbol: WaitForVih E:\Work\PROCEDURE\ARM\Experiment\STM8\stm8s-discovery_dev\Libraries\STM8_TouchSensing_Driver\src\stm8_tsl_rc_acquisition.c 369
Error[As011]: Undefined symbol: WaitForVih E:\Work\PROCEDURE\ARM\Experiment\STM8\stm8s-discovery_dev\Libraries\STM8_TouchSensing_Driver\src\stm8_tsl_rc_acquisition.c 369
Error[Og010]: Inline assembler instruction does not have a unique size: "        bcp a, (x)" E:\Work\PROCEDURE\ARM\Experiment\STM8\stm8s-discovery_dev\Libraries\STM8_TouchSensing_Driver\src\stm8_tsl_rc_acquisition.c 301
Error[As011]: Undefined symbol: EndWaitForVil E:\Work\PROCEDURE\ARM\Experiment\STM8\stm8s-discovery_dev\Libraries\STM8_TouchSensing_Driver\src\stm8_tsl_rc_acquisition.c 302
Error[As011]: Undefined symbol: EndWaitForVil E:\Work\PROCEDURE\ARM\Experiment\STM8\stm8s-discovery_dev\Libraries\STM8_TouchSensing_Driver\src\stm8_tsl_rc_acquisition.c 302
Error[As011]: Undefined symbol: EndWaitForVil E:\Work\PROCEDURE\ARM\Experiment\STM8\stm8s-discovery_dev\Libraries\STM8_TouchSensing_Driver\src\stm8_tsl_rc_acquisition.c 302
Error[As011]: Undefined symbol: WaitForVil E:\Work\PROCEDURE\ARM\Experiment\STM8\stm8s-discovery_dev\Libraries\STM8_TouchSensing_Driver\src\stm8_tsl_rc_acquisition.c 305

使用特权

评论回复
沙发
jlyuan| | 2021-8-14 18:55 | 只看该作者
这么多未定义符号,肯定是头文件没有包含进来。

使用特权

评论回复
板凳
llljh|  楼主 | 2021-8-14 18:58 | 只看该作者
好像不是头文件问题,同样的代码在STVD里面可以编译通过的,在IAR下编译有错误,网上有些说IAR是版本问题,感觉汇编下的跳转标识都无法识别,认为没有定义。
__asm("bcp a, (x)");  // 1 cycles
  __asm("jrne EndWaitForVih");
  __asm("ldw y, TIMACQ_CNTR"); // 2 cycles; hw counter also used for timeout ...
  __asm("cpw y, #0x0E00");    // 2 cycles; Timeout compare
  __asm("jrult WaitForVih");
  __asm("EndWaitForVih:");

使用特权

评论回复
地板
heweibig| | 2021-8-14 19:00 | 只看该作者
  应该是库的版本问题

使用特权

评论回复
5
lizye| | 2021-8-14 19:02 | 只看该作者
楼主找到问题解决了吗?

使用特权

评论回复
6
zhaoxqi| | 2021-8-14 19:06 | 只看该作者
引用的符号超范围了,要在同一段程序代码范围内,比如这样使用:

  __asm(
    "WaitForVih: \n"
    "bcp a, (x) \n"
    "jrne EndWaitForVih \n"
    "ldw y, TIMACQ_CNTR \n"
    "cpw y, #0x0E00 \n"
    "jrult WaitForVih \n"
    "EndWaitForVih: \n"
  );

使用特权

评论回复
7
wyjie| | 2021-8-14 19:08 | 只看该作者
你好像不知道什么是条件编译?

使用特权

评论回复
8
llljh|  楼主 | 2021-8-14 19:12 | 只看该作者

好的,我明天去单位试一下,多谢各位大侠了哈        

使用特权

评论回复
9
guanjiaer| | 2021-9-9 10:06 | 只看该作者
汇编语言看不明白啊

使用特权

评论回复
10
heimaojingzhang| | 2021-9-9 10:09 | 只看该作者
没有引用相关头文件?

使用特权

评论回复
11
keaibukelian| | 2021-9-9 10:11 | 只看该作者
貌似都是未定义啊

使用特权

评论回复
12
labasi| | 2021-9-9 10:18 | 只看该作者
不知道为什么会报错

使用特权

评论回复
13
paotangsan| | 2021-9-9 10:20 | 只看该作者
引用的超过范围了

使用特权

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

本版积分规则

855

主题

11301

帖子

6

粉丝