stm32 и переменные в структурах

Кто любит RISC в жизни, заходим, не стесняемся.
Professor Chaos
Открыл глаза
Сообщения: 41
Зарегистрирован: Вс мар 21, 2021 11:06:04

Re: stm32 и переменные в структурах

Сообщение Professor Chaos »

Код: Выделить всё

struct {
  volatile unsigned char menu_btn;
  volatile unsigned char menu_lcd;
} nastroyki, *nastroyki_p;

// использование доступа через указатель
nastroyki_p = &nastroyki;
nastroyki_p->menu_btn = 0;
nastroyki_p->menu_lcd = 0;

if(nastroyki_p->menu_btn != 0) {
  (nastroyki_p->menu_lcd)++;
  nastroyki_p->menu_btn = 0;
}
Вы такое хотели?
Доступ к данным внутри структуры осуществляется через указатель на эту структуру. Инкремент (++) работает.
Реклама
ivan dimir
Мучитель микросхем
Сообщения: 440
Зарегистрирован: Вс дек 29, 2019 08:05:21

Re: stm32 и переменные в структурах

Сообщение ivan dimir »

[uquote="Professor Chaos",url="/forum/viewtopic.php?p=4155816#p4155816"]

Код: Выделить всё

struct {
  volatile unsigned char menu_btn;
  volatile unsigned char menu_lcd;
} nastroyki, *nastroyki_p;

// использование доступа через указатель
nastroyki_p = &nastroyki;
nastroyki_p->menu_btn = 0;
nastroyki_p->menu_lcd = 0;

if(nastroyki_p->menu_btn != 0) {
  (nastroyki_p->menu_lcd)++;
  nastroyki_p->menu_btn = 0;
}
Вы такое хотели?
Доступ к данным внутри структуры осуществляется через указатель на эту структуру. Инкремент (++) работает.[/uquote]
Получается две структуры похожие. Только одна через указатель. А другая нет .Химия какая то. Но немножко не так.У меня в дефайнах кнопки.А в структуре переменные. Когда нажимаю кнопку выставляю флаг. При отжатии кнопки .И флаг обнуляю (nastroyki_p->menu_lcd)++;Это идея.Вы использовали две одинаковые структуры. И у вас всё вышло. Вам респект и уважение.1 строка как в учебнике.Вы присвоили одной структуры надругую структуры на &nastroyki;nastroyki_p = &nastroyki; структуре с левой стороны присваиваются адреса структуры правой стороны не так ли?Нужно попробовать в железе.С праздником вас с Рождеством Христовым.Не хватает мне образованности.Но до этого я не додумался.И ещё одно если if(nastroyki_p->menu_btn != 0) вот это флаг.То он в логической 1 или в 0.Я думаю в 1.Я правда пишу по топорному флаг==1;то nastroyki_p->menu_btn = 0;вот эту строчкуя вначале ставлю после (nastroyki_p->menu_lcd)++;инкримента.У меня иначе в железе с перебоями работает.Огромное спасибо.Но если использовать одну структуру с указателем на эту структуру.То наверное не выйдет.Я пока использую простые структуры.Но за этот момент.Редко делятся информацией.Спасибо.

Добавлено after 2 minutes 42 seconds:
Professor Chaos, Ваш ник подходит вам.

Добавлено after 3 minutes 7 seconds:
Я не могу похвастаться багажом знаний.Так как просто электрик.Любитель программирования STM32 AVR
Реклама
Professor Chaos
Открыл глаза
Сообщения: 41
Зарегистрирован: Вс мар 21, 2021 11:06:04

Re: stm32 и переменные в структурах

Сообщение Professor Chaos »

Почиитайте про структуры и указатели на них в любом учебнике по С/С++. Например тут.
Получается две структуры похожие. Только одна через указатель. А другая нет .Химия какая то.
Структура одна.
Создаются две разных переменных. Одна имеет тип структуры. Вторая - тип указатель на структуру (звёздочка перед именем переменной при её объявлении/определении говорит о том, что это указатель). Затем указателю на структуру присваивается значение адреса структуры. И далее все действия над элементами структуры производятся через указатель на неё, используя оператор стрелка (->). Все те же самые операции над элементами структуры можно сделать используя имя структуры и оператор точка.

Данный фрагмент кода лишь показывает синтаксис указателей на структуры. При этом необходимости в них он не показывает. Всё то же можно было сделать и без указателя, обращаясь к структуре по её имени и используя оператор точка.
В реальной жизни указатели на структуры применяются в более сложных случаях:
1. Для доступа к данным структуры из функций.
2. Для прохода по массиву структур.
3. При конструировании и работе со сложными типами данных: связанные списки, деревья, кольцевые буферы и т.п.
ivan dimir
Мучитель микросхем
Сообщения: 440
Зарегистрирован: Вс дек 29, 2019 08:05:21

Re: stm32 и переменные в структурах

Сообщение ivan dimir »

Ну это хорошо .А если мне до начала нужно переменные выставлять в ноль.Без структур я выставлял после инклудов и дефайнов .Где мне высттавлять.Потому что программа или вылетает в железе или глючит(зависает).Меню перестаёт переключатся.Я выставил в начала майна.?
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: stm32 и переменные в структурах

Сообщение Eddy_Em »

Ну так и выставляй в объявлении переменной с инициализацией. Можно вот так:

Код: Выделить всё

typedef struct {
...
} bullshit;
... 
bullshit ashit = {0};
А если аллокатор используешь, то сразу calloc.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Реклама
ivan dimir
Мучитель микросхем
Сообщения: 440
Зарегистрирован: Вс дек 29, 2019 08:05:21

Re: stm32 и переменные в структурах

Сообщение ivan dimir »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4157037#p4157037"]Ну так и выставляй в объявлении переменной с инициализацией. Можно вот так:

Код: Выделить всё

typedef struct {
...
} bullshit;
... 
bullshit ashit = {0};
А если аллокатор используешь, то сразу calloc.[/uquote]
А что это?
Реклама
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: stm32 и переменные в структурах

Сообщение Eddy_Em »

ivan dimir, коли такие вопросы на пустом месте, то читай внимательно K&R и выполняй все задания. Потом советую к Богатыреву перейти, у него классный сборник примеров и задач, правда, под старый С. Но и так сгодится.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
ivan dimir
Мучитель микросхем
Сообщения: 440
Зарегистрирован: Вс дек 29, 2019 08:05:21

Re: stm32 и переменные в структурах

Сообщение ivan dimir »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4157039#p4157039"]ivan dimir, коли такие вопросы на пустом месте, то читай внимательно K&R и выполняй все задания. Потом советую к Богатыреву перейти, у него классный сборник примеров и задач, правда, под старый С. Но и так сгодится.[/uquote]
А кто это такой?
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: stm32 и переменные в структурах

Сообщение Eddy_Em »

Вот, до сих пор не утратило актуальности.
Да, если ты хочешь серьезно работать, а не дурью маяться, забуть о мелкомягкой мастдайке, как о страшном сне! Поставь себе линукс. Для начала можешь даже не линукс ставить, а какую-нибудь мастдайку на линуксовом ядре (бубунту, например), а как войдешь, поймешь, что systemd - адское говнище, и поставишь себе нормальный дистрибутив линукса, а не мастдайки.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
ivan dimir
Мучитель микросхем
Сообщения: 440
Зарегистрирован: Вс дек 29, 2019 08:05:21

Re: stm32 и переменные в структурах

Сообщение ivan dimir »

[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4157065#p4157065"]Вот, до сих пор не утратило актуальности.
Да, если ты хочешь серьезно работать, а не дурью маяться, забуть о мелкомягкой мастдайке, как о страшном сне! Поставь себе линукс. Для начала можешь даже не линукс ставить, а какую-нибудь мастдайку на линуксовом ядре (бубунту, например), а как войдешь, поймешь, что systemd - адское говнище, и поставишь себе нормальный дистрибутив линукса, а не мастдайки.[/uquote]
это достойный ответ.Извените я включил дурака.И спасибо за дельный совет.
Professor Chaos
Открыл глаза
Сообщения: 41
Зарегистрирован: Вс мар 21, 2021 11:06:04

Re: stm32 и переменные в структурах

Сообщение Professor Chaos »

[uquote="ivan dimir",url="/forum/viewtopic.php?p=4157018#p4157018"]Ну это хорошо .А если мне до начала нужно переменные выставлять в ноль.Без структур я выставлял после инклудов и дефайнов .Где мне высттавлять.Потому что программа или вылетает в железе или глючит(зависает).Меню перестаёт переключатся.Я выставил в начала майна.?[/uquote]
Можно и так. Но лучше делать инициализацию, т.е. совмещение определения переменной структурного типа и записи начальных значений в её поля. Т.е. в момент резервирования памяти под структуру она сразу заполняется требуемыми начальными значениями. Поищите в интернете "инициализация структур". Есть несколько способов инициализации структур. Например тут показаны два.
Ответить

Вернуться в «ARM»