STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

А потом идёт сравнение int с символом.

Вообще, лично вам можно любые типы использовать. А вот новичкам лучше дурные советы не давать.
Реклама
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

Не мелочитесь спорами со мной. Спорьте сразу с Керниганом:

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

#include <stdio.h>

#define IN  1 /* inside a word */
#define OUT 0 /* outside a word */

/* count lines, words, and characters in input */
main()
{
  int c, nl, nw, nc, state;

  state = OUT;
  nl = nw = nc = 0;
  while ((c = getchar()) != EOF) {
    ++nc;
    if (c == '\n')
      ++nl;
    if (c == ' ' || c == '\n' || c = '\t')
      state = OUT;
    else if (state == OUT) {
      state = IN;
      ++nw;
    }
  }

  printf("%d %d %d\n", nl, nw, nc);
}
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Эта по нынешним меркам глупость была написана в прошлом веке. В то время когда Ричи пропустил эту хрень ещё не стоял так остро вопрос разрядности стандартных типов. А потом люди придумали stdint.h, size_t, auto, nullptr и т.д. Если вы хотите оставаться в прошлом веке, то это ваш выбор, но не учите плохому других.

Сейчас компиляторы стали намного умнее и чем точнее вы опишете типы данных, тем оптимальнее код они сделают. И не надо доказывать, что в данном случае это не влияет. Сегодня не повлияет, а завтра с таким подходом может и боком выйти.
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3390329#p3390329"]Эта по нынешним меркам глупость была написана в прошлом веке.[/uquote]
Ни секунды не сомневался, что если потребуется, вы и мэтров станете валить не задумываясь. Но все-таки интересно, я что-то пропустил и в этом веке запретили int сравнивать с символом? Не поделитесь, откуда вы эти ваши откровения высасываете?
Если вы хотите оставаться в прошлом веке, то это ваш выбор, но не учите плохому других.
Окромя того, что указывал вам на вашу ерунду, более никого и никак не учил. Вы о чем?
Сегодня не повлияет, а завтра с таким подходом может и боком выйти.
Вам бы практичнее было за свой подход переживать. Не хотите заняться?
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Я дал товарищу полезные рекомендации. Контроль размерности типов должен быть в подсознании у современного программиста, а у эмбеддера особенно. Хотите использовать int, я же не запрещаю, используйте. Не понимаю, чего вы так возбудились, опять хамить начинаете. Пятница что ли?
Реклама
Родился
Сообщения: 17
Зарегистрирован: Вс янв 15, 2017 10:21:13

Сообщение jmp_eax »

А на поверку бодрейт - 4266. К сожалению осциллографа пока под рукой нет, смотрел под отладчиком, платка с HSE 8Mhz.
СпойлерИзображение
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

У вас проц от кварца работает. Либо BRR пересчитайте, либо проц на 72 МГц включите.
Родился
Сообщения: 17
Зарегистрирован: Вс янв 15, 2017 10:21:13

Сообщение jmp_eax »

Решено, всем спасибо. :) Пересчитал BRR. Буду курить доки :tea:
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3390488#p3390488"]Я дал товарищу полезные рекомендации.[/uquote]
Какие это еще полезные? Насчет того, что символьную константу нельзя с переменной int сравнивать? Так это совет из разряда "стыд и позор", прямо указывающий на незнание вами основ языка.
Контроль размерности типов должен быть в подсознании у современного программиста,
Лозунги здесь вряд ли смогут помочь. Средствами языка лучше пользоваться осознанно, а не на уровне подсознания или наития. Тогда и Кернигана анафеме не придется предавать.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="a5021",url="/forum/viewtopic.php?p=3391125#p3391125"]Какие это еще полезные?[/uquote]Почитайте мои посты, я дал точный диагноз сразу.
Раз и два.

[uquote="a5021",url="/forum/viewtopic.php?p=3391125#p3391125"]Насчет того, что символьную константу нельзя с переменной int сравнивать?[/uquote]Это ваши домыслы. Ничего подобного я не говорил, читайте внимательней. Я говорил, что будет приведение типов, а оно в общем случае не бесплатно. В данном случае ничего лишнего не будет, а если 8-битный проц взять?

PS: Кстати, что будет если включить контроль чётности? Боюсь, что тут вам даже Страуструп не поможет.
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3391144#p3391144"]Почитайте мои посты, я дал точный диагноз сразу.[/uquote]
Я в обсуждении конкретно этого нюанса не участвовал, так нафига, спрашивается, стрелки переводить? Отборную чепуху вы понесли, когда вам примерещилось, что типы использовались неправильно. Об этом разговор.
Это ваши домыслы. Ничего подобного я не говорил, читайте внимательней.
Раз и спрыгнул. Вроде и не было ничего. И Кернигана вроде, как и не поносил. Молодец, фигли.
Я говорил, что будет приведение типов, а оно в общем случае не бесплатно.
А вроде ни про какие "общие случаи" речь не шла? Здесь конкретный случай, о нем и говорим. Сравнение полностью корректное, каноническое, а не "Ричи пропустил эту хрень". Ваше счастье, что вы не понимаете, насколько глупо с такими утверждениями смотритесь.
В данном случае ничего лишнего не будет, а если 8-битный проц взять?
К чему эти полумеры? Четырехбитный берите.
Кстати, что будет если включить контроль чётности? Боюсь, что тут вам даже Страуструп не поможет.
Вы следите за темой обсуждения или речь из вас льется отдельно, произвольным образом?
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="a5021",url="/forum/viewtopic.php?p=3391211#p3391211"]Я в обсуждении конкретно этого нюанса не участвовал[/uquote]
Ну и чего тогда влезаете? Я рекомендации для конкретного случая и дал. И они все в точку. Скорость не та и регистр надо до 8 бит резать, чтобы бит чётности откинуть.
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3391230#p3391230"]Ну и чего тогда влезаете?[/uquote]
Во-первых, я никуда не влезаю. Это публичный форум, а не ваш личный огород.
Я рекомендации для конкретного случая и дал. И они все в точку. Скорость не та и регистр надо до 8 бит резать, чтобы бит чётности откинуть.
Еще раз, медленно и печально: мои возражения касались ваших рецептов "подсознательного" применения типов. Ошибочных и несостоятельных.
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

[uquote="a5021",url="/forum/viewtopic.php?p=3391211#p3391211"]К чему эти полумеры? Четырехбитный берите.[/uquote]Надо будет - возьму.
Мучитель микросхем
Аватара пользователя
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Сообщение Myp3ik »

int - это сколько бит ? 16 ? 32 ? 64 ? А при портировании кода ? Или передаче кода другому/от другого программиста ? stdint не зря придумали и все открытые проекты, с которыми мне приходилось работать, использовали int16_t, int32_t, int64_t, size_t. В эмбедде stdint является негласным стандартом. Когда приходится работать с чужим кодом, первым делом заменяю нативные типы на stdint. Кстати stdint пришел к нам вместе с стандартом C99, хотя многие до сих пор следуют стандарту C89.
Иван Сусанин - первый полупроводник :solder:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Ну вот, ещё один Кернигана ни во что не ставит. Ричи на тебя нет! :)))
Мучитель микросхем
Аватара пользователя
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Сообщение Myp3ik »

Срауструп регулярно стандарты на свой C++ обновляет и не чувствует себя ущемленным 8)

Если бы в наше время K&R переиздавали бы книгу по Си, я уверен, что в книге была бы рекомендация всегда и везде использовать stdint.
Иван Сусанин - первый полупроводник :solder:
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Сообщение a5021 »

[uquote="Myp3ik",url="/forum/viewtopic.php?p=3391885#p3391885"]А при портировании кода ?[/uquote]
А есть у вас в памяти свежий пример, где ваши слова выглядели бы особо убедительно? Какой-нибудь особо тяжелый случай, где только stdint и спас от верного краха. Из своей практики мне почему-то совсем ничего не вспоминается. По моим ощущениям, та же endianness больше неудобств создает, если мы взялись говорить про портирование между разными платформами.
Если бы в наше время K&R переиздавали бы книгу по Си, я уверен, что в книге была бы рекомендация всегда и везде использовать stdint.
А я не уверен. Что делать будем?

Понимаете, ваша уверенность -- это просто офигенно, но когда я открываю какой-нибудь stdio.h от только что вышедшей версии иара или кейла, то наблюдаю, что основной тип там по прежнему int. То ли разработчики не совсем разделяют вашей уверенности по поводу намерений K&R, то ли еще что.
Мучитель микросхем
Аватара пользователя
Сообщения: 450
Зарегистрирован: Вс янв 09, 2011 23:05:37
Откуда: СССР

Сообщение Myp3ik »

CMSIS от ARM откройте.
Иван Сусанин - первый полупроводник :solder:
Собутыльник Кота
Аватара пользователя
Сообщения: 2567
Зарегистрирован: Вт май 01, 2018 19:44:47

Сообщение VladislavS »

Уууу, как всё запущено. Кто же позволит менять stdio.h, если язык должен иметь совместимость. Для снятия проблемы разрядности стандартных типов придумали stdint.h. Кто-то явно остался в прошлом веке. Посмотрите библиотеки любого производителя, да тот же вышеупомянутый CMSIS.
Ответить

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