Страница 1 из 2
stm32 и переменные в структурах
Добавлено: Пн янв 03, 2022 22:45:34
ivan dimir
У меня вопрос захотел я переменные записать в структуру.Возникли проблемы при записи.В структуре нельзя писать = 0 .А как записывать если нужно выставить в ноль или др. число .И ещё одно .Я объявил переменную меню в структуре.При нажатии кнопки выставляю флаг и при отжатии её добавляю ++.Если пишу в структуре то не работает.А если пишу переменную до майна то работает.Да кнопку прописываю в прерывании по таймеру.В обработчике прерываннии по таймеру.Как прописать правильно чтоб работало?
Re: stm32 и переменные в структурах
Добавлено: Пн янв 03, 2022 23:07:48
Аlex
Мдя.... Это финиш....
И как вы только пишите программы ? Так же, как на форуме сообщения ?
Re: stm32 и переменные в структурах
Добавлено: Пн янв 03, 2022 23:25:25
ivan dimir
Вот так безграмотно и пишу.Я не программист.Но люди которые занимаются программированием советуют писать все переменные в структурах.Как прописывать что бы работало?.Этот майн с AVR. В STM32 такая же беда.
Re: stm32 и переменные в структурах
Добавлено: Вт янв 04, 2022 00:01:39
Eddy_Em
Не, так не получится! Чтобы научиться программированию, сначала надо хоть один естественный язык выучить. Можно начать с родного. Но без знания языков точно ничего не получится.
Re: stm32 и переменные в структурах
Добавлено: Вт янв 04, 2022 00:11:21
ivan dimir
А пример можно практичный? Если не жалко.
Re: stm32 и переменные в структурах
Добавлено: Вт янв 04, 2022 00:16:17
Martian
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4153579#p4153579"]Но люди которые занимаются программированием советуют писать все переменные в структурах.[/uquote]Маловероятно, что они именно так советовали.
В приведенном Вами коде нет необходимости применять структуру, она ничего не даёт.
Структура - это некий тип переменной, а не сама переменная. Объявили структуру, затем объявили переменную, тип которой - эта структура (иногда эти процессы объединены в один).
Примеры:
https://learnc.info/c/structures.html
Re: stm32 и переменные в структурах
Добавлено: Вт янв 04, 2022 15:16:00
ivan dimir
[uquote="Martian",url="/forum/viewtopic.php?p=4153609#p4153609"][uquote="ivan dimir",url="/forum/viewtopic.php?p=4153579#p4153579"]Но люди которые занимаются программированием советуют писать все переменные в структурах.[/uquote]Маловероятно, что они именно так советовали.
В приведенном Вами коде нет необходимости применять структуру, она ничего не даёт.
Структура - это некий тип переменной, а не сама переменная. Объявили структуру, затем объявили переменную, тип которой - эта структура (иногда эти процессы объединены в один).
Примеры:
https://learnc.info/c/structures.html[/uquote]
Так структура- тип переменой .А тогда вложенные допустим int a int b int c- что это?.А есть пример на контроллерах на СИ.STM32 .AVR?
Добавлено after 6 minutes 22 seconds:
А почему не работает программа .Вот где я накопал
https://narodstream.ru/c-urok-25-struktury/.Где сказано. Структура в языке C — это сгруппированные (ая) под одним именем одна или несколько переменных (возможно, различных типов). В качестве этих переменных могут быть также массивы данных, указатели на различные типы данных, также переменные других типов структур и т.д.
Добавлено after 9 minutes 12 seconds:
И как правильно сделать что бы работало?
Добавлено after 5 hours 46 minutes 17 seconds:
с указателем на тип переменных не работает а без указателя работает?
Re: stm32 и переменные в структурах
Добавлено: Вт янв 04, 2022 16:02:29
Martian
Вложенные в структуру int a и т.д. можно назвать её полями. Никто не обещал, что понятие типа обязано быть элементарным, тип int тоже можно назвать структурой, например структурой из 4 байт, или двух слов, или 8 бит и строить дальнейший алгоритм рассматривая его именно так.
Можно понимать и как сгруппированные переменные, хотя как тип значительно удобнее, так как группа - это всего лишь слово, поясняющее, что куча переменных собрана во что-то одно. А вот если считать это типом, то сразу становится понятно, как дальше работать, ведь операции с типом - это всё-таки не операции с какой-то группой. Хотя, конечно, это может быть субъективно, и кому-то группа более понятна.
То есть, если описана некая структура, например, mystruct, то можно объявит переменную а типа mystruct, передать её в функцию и получить как результат функции и т.д. То есть, вместо передачи кучи полей (отдельных переменных) можно передать одну. Это очень удобно.
Указатели работают так же, как и в других случаях, с другими типами переменных, вопрос про них я не понял.
Re: stm32 и переменные в структурах
Добавлено: Вт янв 04, 2022 19:21:51
ivan dimir
struct
{
volatile unsign menu_btn;
volatile char menu_lcd;
}nastroyki;
вот так работает
if(nastroyki.menu_lcd==0)
{
}
struct
{
//volatile unsign menu_btn;
volatile char menu_lcd;
}*nastroyki;
а вот так не работает.
if(nastroyki->menu_btn==0)
{
}
почему так не работает?
Re: stm32 и переменные в структурах
Добавлено: Вт янв 04, 2022 19:30:57
Eddy_Em
А почитать К&Р - не судьба? Точка - доступ к компоненту структуры, стрелочка - по указателю на структуру.
Re: stm32 и переменные в структурах
Добавлено: Вт янв 04, 2022 19:45:45
ivan dimir
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=4153998#p4153998"]А почитать К&Р - не судьба? Точка - доступ к компоненту структуры, стрелочка - по указателю на структуру.[/uquote]
Я чего то считал что стрелочка что стрелочка тоже делает доступ к компонентам структыры но через указатель .Если неправильно то как правильно?В гитабе много файлов а где который мне нужно как называется?
Re: stm32 и переменные в структурах
Добавлено: Вт янв 04, 2022 19:49:28
Martian
Вам не файл нужен, а учебник по программированию. Например, "Самоучитель С++" Герберта Шилдта. Специально положил здесь в "Сундук":
https://sunduk.radiokot.ru/view/?id=1641315192
Re: stm32 и переменные в структурах
Добавлено: Вт янв 04, 2022 20:08:47
ivan dimir
[uquote="Martian",url="/forum/viewtopic.php?p=4154025#p4154025"]Вам не файл нужен, а учебник по программированию. Например, "Самоучитель С++" Герберта Шилдта. Специально положил здесь в "Сундук":
https://sunduk.radiokot.ru/view/?id=1641315192[/uquote]
Учебник нужен но про указатели на элементы структуры там нет этой инфы.STM32 AVR компилятор подерживает C .Не все команды C++ подойдут для контроллеров.
Re: stm32 и переменные в структурах
Добавлено: Вт янв 04, 2022 20:28:15
Martian
Re: stm32 и переменные в структурах
Добавлено: Вт янв 04, 2022 22:48:32
Аlex
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4154065#p4154065"]про указатели на элементы структуры там нет этой инфы[/uquote]Нас тролят ?
Вот, прям буква в букву, ваша фраза -
тынц
Вам инфы мало ?

Re: stm32 и переменные в структурах
Добавлено: Вт янв 04, 2022 23:32:20
ivan dimir
Я живу на Украине.Яндекс закрыт по полетическим причинам.Но понял что структуру можно использовать но не с указателем на структуру.
Re: stm32 и переменные в структурах
Добавлено: Вт янв 04, 2022 23:41:29
Аlex
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4154277#p4154277"]Я живу на Украине.Яндекс закрыт[/uquote]Сделать это за вас ? -
тынц
Re: stm32 и переменные в структурах
Добавлено: Ср янв 05, 2022 00:14:25
ivan dimir
Спасибо Alex .С Новым годом и Рождеством Христовым!.З Новим роком та Різдвом Христовим!.Я понял свою ошибку.
Re: stm32 и переменные в структурах
Добавлено: Чт янв 06, 2022 11:29:43
Professor Chaos
[uquote="ivan dimir",url="/forum/viewtopic.php?p=4153988#p4153988"]
struct
{
//volatile unsign menu_btn;
volatile char menu_lcd;
}*nastroyki;
а вот так не работает.
if(nastroyki->menu_btn==0)
{
}
почему так не работает?[/uquote]
Вы пробовали проговорить человеческим языком (русским, украинским - не важно) то, что написали? Вы создали переменную типа указатель на структуру. Дальше начали сразу работать с ней. Т.е. пытаетесь получить доступ к члену (полю) структуры по указателю на структуру. А чему у вас равен указатель на структуру? На что он указывает? Где вы создали объект структуры в памяти? Где вы устанавливаете на него ваш указатель? Как вы собираетесь работать с переменной структурного типа не создав её и не установив на неё ваш указатель?
Re: stm32 и переменные в структурах
Добавлено: Чт янв 06, 2022 23:08:02
ivan dimir
Вы правильно всё поняли.Только в моём случае .Я не могу создавать программу таким образом.Так как указатель на элементы структуры
Не работают элементы так как я думал.Переменная занимает одну ячейку памяти.По простому сказать.Можно просто структуру создать.Тогда переменные можно произвести увилечение и уменьшение i++;i--;Эту операцию нелзя выполнить когда стоит указатель на структуру.Наверное можно .Но нужно выполнить больше операций.Точно не могу сказать.Просто в практике не сталкивался.