Например TDA7294

Форум РадиоКот • Просмотр темы - stm32 и переменные в структурах
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс дек 21, 2025 19:22:34

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 31 ]    , 2
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: stm32 и переменные в структурах
СообщениеДобавлено: Пт янв 07, 2022 09:07:30 
Открыл глаза

Зарегистрирован: Вс мар 21, 2021 11:06:04
Сообщений: 41
Рейтинг сообщения: 0
Код:
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;
}

Вы такое хотели?
Доступ к данным внутри структуры осуществляется через указатель на эту структуру. Инкремент (++) работает.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 и переменные в структурах
СообщениеДобавлено: Сб янв 08, 2022 08:57:04 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
Код:
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;
}

Вы такое хотели?
Доступ к данным внутри структуры осуществляется через указатель на эту структуру. Инкремент (++) работает.

Получается две структуры похожие. Только одна через указатель. А другая нет .Химия какая то. Но немножко не так.У меня в дефайнах кнопки.А в структуре переменные. Когда нажимаю кнопку выставляю флаг. При отжатии кнопки .И флаг обнуляю (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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 и переменные в структурах
СообщениеДобавлено: Сб янв 08, 2022 09:33:15 
Открыл глаза

Зарегистрирован: Вс мар 21, 2021 11:06:04
Сообщений: 41
Рейтинг сообщения: 0
Почиитайте про структуры и указатели на них в любом учебнике по С/С++. Например тут.
Цитата:
Получается две структуры похожие. Только одна через указатель. А другая нет .Химия какая то.

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

Данный фрагмент кода лишь показывает синтаксис указателей на структуры. При этом необходимости в них он не показывает. Всё то же можно было сделать и без указателя, обращаясь к структуре по её имени и используя оператор точка.
В реальной жизни указатели на структуры применяются в более сложных случаях:
1. Для доступа к данным структуры из функций.
2. Для прохода по массиву структур.
3. При конструировании и работе со сложными типами данных: связанные списки, деревья, кольцевые буферы и т.п.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 и переменные в структурах
СообщениеДобавлено: Сб янв 08, 2022 17:41:00 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
Ну это хорошо .А если мне до начала нужно переменные выставлять в ноль.Без структур я выставлял после инклудов и дефайнов .Где мне высттавлять.Потому что программа или вылетает в железе или глючит(зависает).Меню перестаёт переключатся.Я выставил в начала майна.?


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: stm32 и переменные в структурах
СообщениеДобавлено: Сб янв 08, 2022 18:08:07 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
Ну так и выставляй в объявлении переменной с инициализацией. Можно вот так:
Код:
typedef struct {
...
} bullshit;
...
bullshit ashit = {0};

А если аллокатор используешь, то сразу calloc.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 и переменные в структурах
СообщениеДобавлено: Сб янв 08, 2022 18:10:35 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
Ну так и выставляй в объявлении переменной с инициализацией. Можно вот так:
Код:
typedef struct {
...
} bullshit;
...
bullshit ashit = {0};

А если аллокатор используешь, то сразу calloc.

А что это?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 и переменные в структурах
СообщениеДобавлено: Сб янв 08, 2022 18:13:03 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
ivan dimir, коли такие вопросы на пустом месте, то читай внимательно K&R и выполняй все задания. Потом советую к Богатыреву перейти, у него классный сборник примеров и задач, правда, под старый С. Но и так сгодится.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 и переменные в структурах
СообщениеДобавлено: Сб янв 08, 2022 18:17:46 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
ivan dimir, коли такие вопросы на пустом месте, то читай внимательно K&R и выполняй все задания. Потом советую к Богатыреву перейти, у него классный сборник примеров и задач, правда, под старый С. Но и так сгодится.

А кто это такой?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 и переменные в структурах
СообщениеДобавлено: Сб янв 08, 2022 18:53:19 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -24
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: -2
Вот, до сих пор не утратило актуальности.
Да, если ты хочешь серьезно работать, а не дурью маяться, забуть о мелкомягкой мастдайке, как о страшном сне! Поставь себе линукс. Для начала можешь даже не линукс ставить, а какую-нибудь мастдайку на линуксовом ядре (бубунту, например), а как войдешь, поймешь, что systemd - адское говнище, и поставишь себе нормальный дистрибутив линукса, а не мастдайки.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 и переменные в структурах
СообщениеДобавлено: Сб янв 08, 2022 18:56:15 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
Вот, до сих пор не утратило актуальности.
Да, если ты хочешь серьезно работать, а не дурью маяться, забуть о мелкомягкой мастдайке, как о страшном сне! Поставь себе линукс. Для начала можешь даже не линукс ставить, а какую-нибудь мастдайку на линуксовом ядре (бубунту, например), а как войдешь, поймешь, что systemd - адское говнище, и поставишь себе нормальный дистрибутив линукса, а не мастдайки.

это достойный ответ.Извените я включил дурака.И спасибо за дельный совет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32 и переменные в структурах
СообщениеДобавлено: Сб янв 08, 2022 19:23:55 
Открыл глаза

Зарегистрирован: Вс мар 21, 2021 11:06:04
Сообщений: 41
Рейтинг сообщения: 0
Ну это хорошо .А если мне до начала нужно переменные выставлять в ноль.Без структур я выставлял после инклудов и дефайнов .Где мне высттавлять.Потому что программа или вылетает в железе или глючит(зависает).Меню перестаёт переключатся.Я выставил в начала майна.?

Можно и так. Но лучше делать инициализацию, т.е. совмещение определения переменной структурного типа и записи начальных значений в её поля. Т.е. в момент резервирования памяти под структуру она сразу заполняется требуемыми начальными значениями. Поищите в интернете "инициализация структур". Есть несколько способов инициализации структур. Например тут показаны два.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 31 ]    , 2

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y