реклама на сайте
подробности

 
 
> STM32 + GCC Константные поля в структуре, Как инициализировать константные поля структуры?
nanorobot
сообщение Apr 4 2015, 05:29
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 244
Регистрация: 29-02-08
Пользователь №: 35 503



В дивайсе два однотипных канала, которые могут параметрироваться. Канал описывется структурой, в которой, помимо полей-параметров, имеются константные поля, описывающие привязку конкретного канала к железу, например
кнопки, леды, NSS ноги SPI, которые хотелось бы инициализировать при об'явлении переменной типа TChannel адресами соответсвующих пинов в bit-bang области. Нижеприведенный код (условный), компилятор проглатывает, но соответсвующие поля не инициализирует.


CODE
typedef struct _Channel{
unsigned long int * const NSS; // нога NSS
unsigned long int * const LEDR; // красный светодиод
unsigned long int * const LEDG; // зеленый светодиод
...
...
}TChannel;



TChannel Channel1 = {.NSS = GPIOA_PIN_1, .LEDR = GPIOC_PIN15, .LEDG = GPIOD_PIN9};


макросы типа GPIOx_PINy не привожу, в силу их очевидности, но в их работоспособности убедился экспериментально.

Подобный финт в IAR прокатывал, там в таких полях я даже const не использовал.
В ГСС пробовал и с const и без него, один х.
Чисто константные структуры инициализируются, да. А инициализировать часть полей неконстантной структуры не удается.
Во всех случаях речь идет об инициализации при об'явлении экземпляра типа TChannel;

Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 23:19
Рейтинг@Mail.ru


Страница сгенерированна за 0.01346 секунд с 7
ELECTRONIX ©2004-2016