ImageCraft IDE 中的非法存储 class __flash

Illegal storage class __flash in ImageCraft IDE

我正在尝试构建一个最初在 Atmel Studio 中构建的项目,该项目编译良好,没有任何错误或警告,但如果我尝试在 ImageCraft IDE 中构建项目,它说没有错误,但无法构建。

我试图在 ImageCraft 中构建的源代码片段:

static inline void PORTA_set_pin_pull_mode(const uint8_t pin, const enum port_pull_mode pull_mode)
{

    if (pull_mode == PORT_PULL_UP)
    {

        DDRA &= ~(1 << pin);

        PORTA |= 1 << pin;
    }
    else if (pull_mode == PORT_PULL_OFF)
    {
        PORTA &= ~(1 << pin);
    }
}

这是构建日志的结果

iccavr.exe: 'C:\iccv8avr\bin\iccomavr.exe' returns error code -1073741819 Process terminated with status -1073741819 (0 minute(s), 2 second(s)) Build Failed: 0 error(s), 158 warning(s) (0 minute(s), 2 second(s))

尝试构建项目时显示的警告

!W C:\Sahil\Basic WifiBuild\WifiBoard\include\port.h(63):[warning] Illegal storage class __flash for parameter 'pin'. Storage class removed.

!W C:\Sahil\Basic WifiBuild\WifiBoard\include\port.h(63):[warning] Illegal storage class __flash for parameter 'pull_mode'. Storage class removed.

!W C:\Sahil\Basic WifiBuild\WifiBoard\include\port.h(92):[warning] Illegal storage class __flash for parameter 'mask'. Storage class removed.

!W C:\Sahil\Basic WifiBuild\WifiBoard\include\port.h(92):[warning] Illegal storage class __flash for parameter 'direction'. Storage class removed.

!W C:\Sahil\Basic WifiBuild\WifiBoard\include\port.h(123):[warning] Illegal storage class __flash for parameter 'pin'. Storage class removed.

!W C:\Sahil\Basic WifiBuild\WifiBoard\include\port.h(123):[warning] Illegal storage class __flash for parameter 'direction'. Storage class removed.

__flash 是一个 命名地址 space 用于指定某个常量 应保存在闪存中,而不是复制到 .data 程序启动时的 RAM 部分。它不是真正的标准 C,但是 属于一组名为 embedded C 的扩展。这是一个非常 AVR 上的有用功能,有助于节省宝贵的 RAM。 支持 由 gcc,并且显然被你正在尝试的 port.h header 使用 用你的代码编译。

从您显示的警告来看,您的编译器似乎不支持 这项特征。您可以尝试将 #define __flash 作为空字符串 在包括 header 之前。但是你会失去这个的好处 RAM-saver.