Изучаю STM8l151 что означает "->"

Кто любит RISC в жизни, заходим, не стесняемся.
king-live
Прорезались зубы
Сообщения: 238
Зарегистрирован: Сб янв 29, 2011 20:26:48

Изучаю STM8l151 что означает "->"

Сообщение king-live »

Доброго времени суток! Изучаю STM8l151 в частности АЦП в IAR. Есть примеры в инете по настройке АЦП к примеру строка

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

CLK->PCKENR2 |= CLK_PCKENR2_ADC1; //Тактирование
Что означает вот такое написание "->"? Или как его по другому написать, близкое к стилю AVR студии. Заранее спасибо!
Реклама
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18614
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Изучаю STM8l151 что означает "->"

Сообщение ARV »

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

Мой уютный бложик... заходите!
Реклама
king-live
Прорезались зубы
Сообщения: 238
Зарегистрирован: Сб янв 29, 2011 20:26:48

Re: Изучаю STM8l151 что означает "->"

Сообщение king-live »

Посмотрел конструкции в стандартной Си. и указатели в них объявлены через "*" и ни где в моих учебниках нет такой конструкции "->". Вот где конкретно описанны такие конструкции, подскажите если сможете. И потом второй вопрос был связан, с чем его можно заменить такую конструкцию, что бы близко было по стилю AVR студии!
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18614
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Изучаю STM8l151 что означает "->"

Сообщение ARV »

при чем тут стиль студии? в студии вы можете делать то же самое - это ЯЗЫК СИ.
CLK - это указатель на структуру. обращение к полю структуры, адрес которой содержит этот указатель, делается оператором -> то есть CLK->PCKENR2 означает, что мы обращаемся к полю PCKENR2 структуры, адрес которой содержится в CLK.
что еще добавить? учите язык Си

можно, конечно, написать криво (*CLK).PCKENR2 - это будет по-вашему "в стиле"?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
amv2000
Опытный кот
Сообщения: 723
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Re: Изучаю STM8l151 что означает "->"

Сообщение amv2000 »

king-live писал(а):ни где в моих учебниках нет такой конструкции "->"
Ну так почитайте чужие http://cppstudio.com/post/5377/
или http://cpp.com.ru/kr_cbook/ch6kr.html
Реклама
king-live
Прорезались зубы
Сообщения: 238
Зарегистрирован: Сб янв 29, 2011 20:26:48

Re: Изучаю STM8l151 что означает "->"

Сообщение king-live »

Про указатели понял! Кстати за около 5 лет проектов, а их огромное количество по всем направлениям (от пожара-охранных систем до станков с ЧПУ) ни разу не использовал указатели. Просто напросто не знал об их существовании. Не дошёл до этой темы, из за ненадобности! Вот кстати самое крутое объяснение и самое доходчивое - для чего нужны указатели? http://www.cyberforum.ru/cpp-beginners/ ... 82564.html
И вот после понятия что и к чему и для чего эти указатели, понял что в предыдущих моих проектах они действительно не нужны были (проекты все на AVR Atmega,Attiny). И уверяю и сейчас они мне не нужны. Но!!!!! Вот теперь как мне обойти этот "->" ? В данном случае связанное с работой АЦП.
Реклама
king-live
Прорезались зубы
Сообщения: 238
Зарегистрирован: Сб янв 29, 2011 20:26:48

Re: Изучаю STM8l151 что означает "->"

Сообщение king-live »

Вот к примеру в студии писал под мегу8 (работа с битом "регистром" ADEN)

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

ADCSRA|=(1<<ADEN); // АЦП включён
Всё понятно и просто! Работа с 1 битом регистра ADCRA.

Так почему здесь в IAR такого стиля нет, или так не позволяет делать сама структура STM8 ?
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: Изучаю STM8l151 что означает "->"

Сообщение Myp3ik »

А что такое ADCSRA в Вашем примере Вам известно? :)))
Иван Сусанин - первый полупроводник :solder:
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18614
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Изучаю STM8l151 что означает "->"

Сообщение ARV »

king-live писал(а):И вот после понятия что и к чему и для чего эти указатели, понял что в предыдущих моих проектах они действительно не нужны были (проекты все на AVR Atmega,Attiny). И уверяю и сейчас они мне не нужны. Но!!!!! Вот теперь как мне обойти этот "->" ? В данном случае связанное с работой АЦП.
вот именно сейчас они вам очень нужны, потому что для выбранного вами МК без них просто невозможно обойтись.

то, что вам были "не нужны" указатели, свидетельствует лишь о крайней примитивности решаемых задач. ну или о крайне малом опыте программирования.

обойти -> можно обычным разыменованием указателя - выше я приводил пример кривой записи этого действия.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
king-live
Прорезались зубы
Сообщения: 238
Зарегистрирован: Сб янв 29, 2011 20:26:48

Re: Изучаю STM8l151 что означает "->"

Сообщение king-live »

А что такое ADCSRA в Вашем примере Вам известно?
Как то в прошлом, один дядька программист (очень мудрый программист, ходячая энциклопедия) на мои дотошные распросы вот типа таких, сказал очень умные слова. - Чем меньше знаешь, тем крепче спишь! Я сначала не понял его слов и даже обиделся немного! Но когда он мне объяснил что он этим хотел сказать, я для себя открыл путь обсалютно не логичный и не понятный скажем для 99% программистов. Но этот путь стал самым эфективным для понятия мира программирования микроконтроллеров в плане производства. Он сказал следующее -ты новичок, скажем маленький ребёнок и поэтому объясню тебе на "пальцах". Вот предположем у тебя есть машина и называется она ADCSRA. У неё есть двери(ADEN) колёса(ADSC) руль(ADIF) коробка передач(ADMUX), магнитафон и т.п, и т.д...... Это "игра в ассоциации" И вот зачем тебе знать конструкцию двери из чего оно сделанно, если тебе только надо её открыть. (лишняя информация!!!!) зачем нужно знать как устроенно колесо если нужно просто чтобы оно вращалось(лишняя информация!!!!!) зачем нужно знать как устроенна коробка передач, если мне нужно просто переключать скорости, то есть менять входные каналы портов в МК(опять же лишняя информация!!!!!) И вот действительно, каждый из нас пользуется тем, что уже предоставленно кем то специально для пользования! И вот вопрос: Какой из 2-х людей действует эффективнее и увереннее в жизни, если им сейчас дать одинаковое задание к примеру съесть яблоко? Один просто возьмёт яблоко съест его не раздумывая(так как в памяти сидит информация что это еда, вкусная и его можно есть) и пойдёт по своим делам. А второй сначала вспомнит ботанику, химию, разабъёт всё яблоко по структуре до кожуры и косточек, начнёт вспоминать как оно на вкус кислое или сладкое и сделает как и первый человек, он его съест......, а может и не съест!!!!!! :shock: :)) :)). Так что лишняя информация это не есть хорошо! Есть компилятор и есть язык высокого уровня в данном случае Си. Это их работа определять что такое ADCSRA и мне все го лишь надо в нём открыть дверь, завести его, и поехать (если эта машина ........ шутка конечно, но из жизни!)
А вот
то, что вам были "не нужны" указатели, свидетельствует лишь о крайней примитивности решаемых задач. ну или о крайне малом опыте программирования.
это от части верно! Задачи логического уровня, которые решаются обычными логическими микросхемами. Но зачем тратить 2 месяца на разработку устройства на логике если за час можно собрать на микроконтроллере. И потом чтобы прочесть уровень АЦП на ноге контроллера и в зависимости от него что то где то включить или выключить указатели не нужны. Нужна только правильная логика! А к STM8 перешёл пото му что нужны 20 каналов АЦПи они дешевле оптом чем к примеру Attiny828. Я занимаюсь серийным оборудованием, а количество не маленькое. В год порядком 20 000 микросхем программируем под разные устройства и для дома и для промышленности! Спасибо за помощь, придётся изучать указатели, всё равно когда то пришёл бы к этому.
Аватара пользователя
optima
Прорезались зубы
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

Re: Изучаю STM8l151 что означает "->"

Сообщение optima »

king-live писал(а): придётся изучать указатели, всё равно когда то пришёл бы к этому.
А стоил ли? сон не пропадет? :))
king-live писал(а): сказал очень умные слова. - Чем меньше знаешь, тем крепче спишь!,
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18614
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Изучаю STM8l151 что означает "->"

Сообщение ARV »

optima писал(а):А стоил ли? сон не пропадет? :))
king-live писал(а): сказал очень умные слова. - Чем меньше знаешь, тем крепче спишь!,
и сон пропадет, и седина появится... многие знания - многие печали...
Последний раз редактировалось ARV Вт июл 21, 2015 10:38:13, всего редактировалось 1 раз.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
balmer
Это не хвост, это антенна
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

Re: Изучаю STM8l151 что означает "->"

Сообщение balmer »

Самое смешное, что в мелких контроллерах, где не требуется new/delete можно обойтись статическим распределением памяти. Соответственно не знать о указателях вооообще.

В данном случае можно взять StdPeriph_Driver от STM и дальше пребывать в неведении о б операторе ->
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18614
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Изучаю STM8l151 что означает "->"

Сообщение ARV »

не знать об указателях в Си - это примерно как всю жизнь сверлить ручным буравчиком дырки, не зная о существовании дрелей.

без указателей работать со строками? пересылать более 4 байтов? передавать в функции структуры?

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

Мой уютный бложик... заходите!
Аватара пользователя
balmer
Это не хвост, это антенна
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

Re: Изучаю STM8l151 что означает "->"

Сообщение balmer »

ARV писал(а): без указателей работать со строками?
Элементарно:

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

char str[] = "abc";
bool contains(char str[], int len, char c)
{
  for(int i=0; i<len; i++)  
  {
     if(str[i]==c)
       return true;
  }
  return false;
}
ARV писал(а): пересылать более 4 байтов?
Не например так.

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

struct A
{
  uint32_t a;
  uint32_t b;
  uint32_t c;
};

struct A s1, s2;

s1 = s2;
ARV писал(а): передавать в функции структуры?
Можно по значению передавать. Получится функциональное программирование :)
А можно воспользоваться С++ и передавать по ссылке :))
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18614
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Изучаю STM8l151 что означает "->"

Сообщение ARV »

bool contains(char str[], int len, char c) - здесь str разве не указатель? ;)

структуры копируете, а массивы?

ну передайте структуру по значению, и результат тоже верните... ссылки в С++ - те же указатели, только иначе названные :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Galizin
Мучитель микросхем
Сообщения: 478
Зарегистрирован: Ср окт 15, 2008 09:33:03
Откуда: Воронеж

Re: Изучаю STM8l151 что означает "->"

Сообщение Galizin »

king-live писал(а):Вот к примеру в студии писал под мегу8 (работа с битом "регистром" ADEN)
Код:
ADCSRA|=(1<<ADEN); // АЦП включён

Всё понятно и просто! Работа с 1 битом регистра ADCRA.
Просто считайте, что в некоторых контроллерах вместо ADCSRA нужно писать секретную комбинацию ADC->SRA. И снова забудьте про указатели, до поры до времени.
В stm это сделано просто ради того, что бы показать, что такой то регистр относится к такой то периферии.
Если очень сильно колбасит, перепишите h файл без структур, как это сделано в заголовках atmel. Да, в этом случае таки да придется разбираться, что такое указатели.
Аватара пользователя
Myp3ik
Мучитель микросхем
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Re: Изучаю STM8l151 что означает "->"

Сообщение Myp3ik »

king-live, тогда, например, в Атмеле чтоб сбросить счетные регистры двух таймеров мы делали так:

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

TCNT0 = 0;
TCNT2 = 0;
Теперь нам нужно сбросить счетные регистры у таймеров на СТМ, это счетные регистры CNT и CNT. А как тогда компилятор поймет к какому таймеру относится конкретный CNT :shock: ? А очень просто: :solder:

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

TIM1->CNT = 0;
TIM2->CNT = 0;
Мысленно поверните стрелку в обратную сторону и она Вам покажет путь истинный :)) , или хотя бы к какому "блоку" контроллера Вы обращаетесь.
Иван Сусанин - первый полупроводник :solder:
king-live
Прорезались зубы
Сообщения: 238
Зарегистрирован: Сб янв 29, 2011 20:26:48

Re: Изучаю STM8l151 что означает "->"

Сообщение king-live »

Спасибо, начинаю разбираться с указателями, но забыв что это указатели! Пока как то так!
king-live
Прорезались зубы
Сообщения: 238
Зарегистрирован: Сб янв 29, 2011 20:26:48

Re: Изучаю STM8l151 что означает "->"

Сообщение king-live »

Мысленно поверните стрелку в обратную сторону и она Вам покажет путь истинный , или хотя бы к какому "блоку" контроллера Вы обращаетесь.
А это как раз выход из не понятной ситуации! Спасибо всем за помощь!
Ответить

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