You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32F0代码从IAR7.60移植到9.20.4时__no_operation报错求解决

解决IAR 9.20.4中__no_operation()未定义的问题

针对你从IAR 7.60移植代码到9.20.4时遇到的__no_operation()报错和警告,可通过以下几种方式解决:

  • 替换为CMSIS标准空操作宏
    STM32F0基于Cortex-M0内核,直接使用CMSIS定义的__NOP()宏即可,它在core_cm0.h头文件中声明,是ARM官方标准的空操作实现,兼容性更好。替换后代码示例:

    __NOP();
    
  • 直接使用汇编指令
    若不想依赖头文件,可直接嵌入ARM汇编的空操作指令,代码示例:

    asm("nop");
    
  • 手动兼容旧函数名
    如果不想大面积修改代码,可在项目的公共头文件中手动定义__no_operation()函数,让其映射到标准空操作实现:

    #include "core_cm0.h"
    static inline void __no_operation(void)
    {
        __NOP();
    }
    

    或者用汇编实现:

    #pragma language=extended
    void __no_operation(void)
    {
        asm("nop");
    }
    

问题原因说明

IAR 9.x版本相比7.x做了标准兼容性升级,默认启用C99标准(隐式声明函数会触发警告),同时移除了部分非标准的内置函数/宏,旧版本中的__no_operation()属于这类被移除的非标准实现,因此出现链接错误和编译警告。

内容的提问来源于stack exchange,提问作者NicoCaldo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 11:06:23