我正在用宇宙编译器和为stm8编写固件。我使用astruct作为以下内容:
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;然后,我定义并初始化一个结构数组如下:
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数组成员的函数,如下所示:
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;
.
.
.
}哪里
led_data_t led_private;然后,在我的主要部分中,我按以下方式调用上述函数:
led_pattern_request (led_pattern[17]);然而,在编译之后,我得到了如下的错误:
这让我很困惑,我也试图传递一个指向函数的结构体的指针,但是我得到了相同的错误。任何帮助都是非常感谢的。我刚开始编程,需要你的帮助。
提前谢谢你。向你问好,沃里亚
发布于 2021-01-13 07:46:13
我找到了答案。要在其他.C文件中使用struct数组,我需要使用extern将结构包含在该.C文件中。
https://stackoverflow.com/questions/65680221
复制相似问题