首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在宇宙编译器和STM8中传递结构函数时出现的“无效的间接操作数”错误

在宇宙编译器和STM8中传递结构函数时出现的“无效的间接操作数”错误
EN

Stack Overflow用户
提问于 2021-01-12 08:20:49
回答 1查看 314关注 0票数 0

我正在用宇宙编译器和为stm8编写固件。我使用astruct作为以下内容:

代码语言:javascript
复制
typedef enum
{
    lcBlack = 0,
    lcRed,
    lcGreen,
    lcOrange
}
led_color_t;

    PUBLIC typedef enum
{
    lppEmpty,
    lppStartup,
    lpp_volt_off,
    lpp_volt_warn,
    lpp_volt_over,
    lpp_volt_under,
    lpp_volt_drop,
    lppPause,
    lppHY,
    lppMLZ,
    lppTD,
    lppOnOK,
    lppOff,
    lppLixilTestTouch
}
led_name_t;


typedef struct
{
    uint8_t             enable;
    led_name_t      led_name;
    led_color_t     led_color;
    uint8_t             prio;
    uint16_t            t_on_0;
    uint16_t            t_off_0;
    uint8_t             cnt_0;
    uint16_t            t_on_1;
    uint16_t            t_off_1;
    uint8_t             cnt_1;
    uint16_t            t_1;
    uint16_t            t_2;
}
led_patt_t;

然后,我定义并初始化一个结构数组如下:

代码语言:javascript
复制
 led_patt_t led_pattern[73] = {
{0, lppEmpty,           lcBlack,       0,      0,       0,      0,      0,       0,      0,      0,       0},
{0, lppStartup,           lcRed,     255,    100,     100,     10,      0,       0,      0,      0,     500},
{1, lpp_volt_off,         lcRed,     210,    100,     100,      2,      0,       0,      0,      0,    1100},
{1, lpp_volt_warn,        lcRed,     210,    150,     150,      2,      0,       0,      0,      0,    1300} 
... };

接下来,我需要定义一个使用struct数组成员的函数,如下所示:

代码语言:javascript
复制
result_t led_pattern_request (led_patt_t led_patt){       
{
    
led_private.pattern_current.color[0]            = led_patt.led_color;
led_private.pattern_current.color[1]            = led_patt.led_color;
led_private.pattern_current.priority            = led_patt.prio;
led_private.pattern_current.time_on_25ms[0]     = (uint8_t)led_patt.t_on_0;
.
.
.
}

哪里

代码语言:javascript
复制
led_data_t led_private;

然后,在我的主要部分中,我按以下方式调用上述函数:

代码语言:javascript
复制
led_pattern_request (led_pattern[17]);

然而,在编译之后,我得到了如下的错误:

  • #error cpstm8 ..\src\memory\flash.c:38(36+2)无效的间接操作数
  • #error cpstm8 ..\src\memory\flash.c:38(38)不兼容的参数类型
  • #error cpstm8 ..\src\memory\flash.c:38(24+11) led_pattern未定义的

这让我很困惑,我也试图传递一个指向函数的结构体的指针,但是我得到了相同的错误。任何帮助都是非常感谢的。我刚开始编程,需要你的帮助。

提前谢谢你。向你问好,沃里亚

EN

回答 1

Stack Overflow用户

发布于 2021-01-13 07:46:13

我找到了答案。要在其他.C文件中使用struct数组,我需要使用extern将结构包含在该.C文件中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65680221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档