ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 апреля
1139762
Aleksey_75 (20.10.2021 11:34 - 11:54, просмотров: 1141) MBedder
Никогда такого не было и вот опять(с). Чтот я в тупике, подскажите плиз как решить проблему 

Портирую полностью рабочий проект с STM32 на GD32. Суть в следующем

все пины описаны через битовые поля

typedef struct { uint8_t pin:7; uint8_t pin_mode:7; uint8_t def_lvl:1; uint8_t dev_out_system:1; }gpio_set_t;

далее

#define DEVICE_OUT (gpio_set_t){PINA_0, GPIO_Mode_Out_PP, DEF_LOW_LVL, NO_DEV_OUT}

все это помещено в массив

const gpio_set_t pin_arr[] = { DEVICE_OUT, *****, *****, *****, };

Вот тут начинается самое интересное, на stm все собиралось и работало без проблем, тут выдает "error: #119: cast to type "gpio_set_t" is not allowed".

Убрал приведение из define все собралось без ошибок, идем дальше. Есть функции управления пинами типа

void set_pin_active(gpio_set_t pin_set); и void set_pin_inactive(gpio_set_t pin_set);

вызываем

set_pin_active(DEVICE_OUT );

получаем "error: #29: expected an expression"

Что за нах ???


если писать так , то

set_pin_active((gpio_set_t)DEVICE_OUT );

получаем error: #119: cast to type "gpio_set_t" is not allowed