С программатором - понятно. Купите, это дешево, супер. Нно чтобы доставить, нужно время. Пока ждете доставки, включите STM32 к PC чрез USB: UART модуль к RX/TX на STM32. Чрез STM32CubeProgrammer можно и записать, и читать, и стереть STM32. Ниже: мой UART модуль на CH340G к A9/A10 на STM32F103C8T6: читаем, записиваем ...
Stm32 с чего начать изучение...
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1905
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Stm32 с чего начать изучение...
Adrift выше писал, STM32 можно прошивать/читать разными способами/методами.
С программатором - понятно. Купите, это дешево, супер. Нно чтобы доставить, нужно время. Пока ждете доставки, включите STM32 к PC чрез USB: UART модуль к RX/TX на STM32. Чрез STM32CubeProgrammer можно и записать, и читать, и стереть STM32. Ниже: мой UART модуль на CH340G к A9/A10 на STM32F103C8T6: читаем, записиваем ...

С программатором - понятно. Купите, это дешево, супер. Нно чтобы доставить, нужно время. Пока ждете доставки, включите STM32 к PC чрез USB: UART модуль к RX/TX на STM32. Чрез STM32CubeProgrammer можно и записать, и читать, и стереть STM32. Ниже: мой UART модуль на CH340G к A9/A10 на STM32F103C8T6: читаем, записиваем ...
Re: Stm32 с чего начать изучение...
Тут одновременно с стм32 и визио изучаю. Скопировал папку с проектом (не моим, тот что с гитхаба), решил его оставить первозданным а тренироваться на копии, создал другую папку и вставил в нее проект. Запустил скомпилировал, а в Дебуге бин старый, и он файлы проекта не видит кроме головного main, походу он из старой папки их подхватывает. Это нормально? Теперь и проект не скопировать? кстати запускаю проект из старой папки, выкидывает сообщение что он плохой, запускать не буду. Я знал что тамошние прогеры мудаки, но не знал что настолько. На дельфи раньше прожки делал, такого не было, пока серьезные дядьки не сказали "на нашем предприятии пиратское по использовать низззяяя", ну нельзя так нельзя, я больше не программист. VisioGDB релиз срок проходит, ключ просит. Сынок посоветовал cubeIDE поставить и cubeMX, с ними тоже не слава богу, сейчас затык скачать openocd не может. Толи санкции толи сам не допетриваю. Посоветуйте чего ребята.
Re: Stm32 с чего начать изучение...
[uquote="vispower",url="/forum/viewtopic.php?p=4650811#p4650811"]VisioGDB релиз срок проходит, ключ просит.[/uquote]
На rutracker ломаный есть.
На rutracker ломаный есть.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Stm32 с чего начать изучение...
[uquote="vispower",url="/forum/viewtopic.php?p=4650811#p4650811"]Посоветуйте чего ребята.[/uquote]Займитесь чем-нибудь, что у вас лучше получается - не мучайте себя.
Re: Stm32 с чего начать изучение...
[uquote="VladislavS",url="/forum/viewtopic.php?p=4650849#p4650849"][uquote="vispower",url="/forum/viewtopic.php?p=4650811#p4650811"]Посоветуйте чего ребята.[/uquote]Займитесь чем-нибудь, что у вас лучше получается - не мучайте себя.[/uquote]
Конкуренции боитесь? Не успеете глазом моргнуть, придут молодые, с высокими амбициями, способные, талантливые... Нам бы от альцгеймера убежать, с нашими болезнями. Как говорится, не учите меня жить... и несколько вариантов продолжения
Я ж пишу как сам делаю, делюсь, может поможет такому же начинающему. Вам как профессионалу, интереснее общаться с более компетентными товарищами. Не осуждаю.
На готовых проектах как раз лучше всего начинать, тема же про это
Конкуренции боитесь? Не успеете глазом моргнуть, придут молодые, с высокими амбициями, способные, талантливые... Нам бы от альцгеймера убежать, с нашими болезнями. Как говорится, не учите меня жить... и несколько вариантов продолжения
Я ж пишу как сам делаю, делюсь, может поможет такому же начинающему. Вам как профессионалу, интереснее общаться с более компетентными товарищами. Не осуждаю.
На готовых проектах как раз лучше всего начинать, тема же про это
Re: Stm32 с чего начать изучение...
[uquote="vispower",url="/forum/viewtopic.php?p=4652826#p4652826"]Конкуренции боитесь? Не успеете глазом моргнуть, придут молодые, с высокими амбициями,[/uquote]Так и приходят..... но - дальше питона мало кто продвигается. Кубокодинг на си для них - уже коцмас. А чтобы самому прочитать мануалы, разобраться по ним в периферии и самостоятельно написать код - это уже за гранью фантастики для них.
У нас в конторе основная масса - "молодые и амбициозные". И из этой массы только один или два человека умеет на си контроллеры программировать. А чтобы без Куба - ни одного.
И имхо - это не только у нас так. А везде.
Мне уже сказали, что "в моём коде во всей конторе никто не может разобраться".
Потому как написан на си и без Кубов. А ведь простой си. Почти без ++ и с маленькими вкраплениями asm.
Потому - не боимся. Боимся наоборот - что на пенсию не дадут уйти.
[uquote="vispower",url="/forum/viewtopic.php?p=4652826#p4652826"]способные, талантливые... Нам бы от альцгеймера убежать[/uquote]Где-то читал, что - чем активнее человек использует свои извилины, тем меньше вероятность развития оного у него.
Так что - грызите гранит науки языки программирования активнее - и альцгеймер в страхе будет обходить вас стороной, десятой дорогой.
У нас в конторе основная масса - "молодые и амбициозные". И из этой массы только один или два человека умеет на си контроллеры программировать. А чтобы без Куба - ни одного.
И имхо - это не только у нас так. А везде.
Мне уже сказали, что "в моём коде во всей конторе никто не может разобраться".
Потому - не боимся. Боимся наоборот - что на пенсию не дадут уйти.
[uquote="vispower",url="/forum/viewtopic.php?p=4652826#p4652826"]способные, талантливые... Нам бы от альцгеймера убежать[/uquote]Где-то читал, что - чем активнее человек использует свои извилины, тем меньше вероятность развития оного у него.
Так что - грызите гранит науки языки программирования активнее - и альцгеймер в страхе будет обходить вас стороной, десятой дорогой.
- TEPEM
- Нашел транзистор. Понюхал.
- Сообщения: 153
- Зарегистрирован: Чт дек 05, 2019 16:28:11
- Откуда: Самара
Re: Stm32 с чего начать изучение...
Ребята здравствуйте! помогите пожалуйста с поиском CMSIS и Startup к STM32G431
Спасибо огромное!!!
Спасибо огромное!!!
Re: Stm32 с чего начать изучение...
Проект для STM32G431CB.
- Вложения
-
- STM32G431CB.7z
- (155.16 КБ) 88 скачиваний
- TEPEM
- Нашел транзистор. Понюхал.
- Сообщения: 153
- Зарегистрирован: Чт дек 05, 2019 16:28:11
- Откуда: Самара
Re: Stm32 с чего начать изучение...
[uquote="Мурик",url="/forum/viewtopic.php?p=4734871#p4734871"]Проект для STM32G431CB.[/uquote]
Мурик! Я вас люблю, Мурик!!!
Что то у меня тактирование от внутреннего генератора не пашет. С внешним морочится не стал( Ни у кого нет готовой настройки на 170мГц?
Мурик! Я вас люблю, Мурик!!!
Что то у меня тактирование от внутреннего генератора не пашет. С внешним морочится не стал( Ни у кого нет готовой настройки на 170мГц?
Код: Выделить всё
RCC->CR |= RCC_CR_HSION;
RCC->CR |= RCC_CR_HSIRDY;
while(!(RCC->CR & RCC_CR_HSIRDY)) {}
RCC->PLLCFGR |= RCC_PLLCFGR_PLLM_2; //PLLM 4
RCC->PLLCFGR = RCC_PLLCFGR_PLLN_0 | RCC_PLLCFGR_PLLN_2 | RCC_PLLCFGR_PLLN_4 | RCC_PLLCFGR_PLLN_6;
RCC->CR |= RCC_CR_PLLON;
RCC->CFGR = RCC_CFGR_SW_1 | RCC_CFGR_SW_0;
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Stm32 с чего начать изучение...
Первые три команды не нужны, hsi и так включен. Вторая вообще бессмысленна - зтот бит только для чтения.
Делитель M неправильно задан, там не 4 получится.
Пятая команда фактически отменяет действие четвёртой.
После включения pll надо подождать его готовности.
Последняя команда наверняка затирает в cfgr что-то полезное.
Итого: ни одной правильной команды.
Добавлено after 1 hour 36 minutes 48 seconds:
Начни с такого.
Делитель M неправильно задан, там не 4 получится.
Пятая команда фактически отменяет действие четвёртой.
После включения pll надо подождать его готовности.
Последняя команда наверняка затирает в cfgr что-то полезное.
Итого: ни одной правильной команды.
Добавлено after 1 hour 36 minutes 48 seconds:
Начни с такого.
Код: Выделить всё
FLASH->ACR = FLASH_ACR_DBG_SWEN
| FLASH_ACR_ICEN
| FLASH_ACR_DCEN
| FLASH_ACR_PRFTEN
| _VAL2FLD(FLASH_ACR_LATENCY,4);
RCC->PLLCFGR = RCC_PLLCFGR_PLLSRC_HSI
| _VAL2FLD(RCC_PLLCFGR_PLLM,4-1)
| _VAL2FLD(RCC_PLLCFGR_PLLN,85)
| RCC_PLLCFGR_PLLREN
| _VAL2FLD(RCC_PLLCFGR_PLLR,0); // R=2
RCC->CR = RCC_CR_PLLON | RCC_CR_HSION;
while(!(RCC->CR & RCC_CR_PLLRDY));
RCC->CFGR = RCC_CFGR_MCOPRE_DIV8
| _VAL2FLD(RCC_CFGR_MCOSEL,1)
| RCC_CFGR_PPRE2_DIV1
| RCC_CFGR_PPRE1_DIV2
| RCC_CFGR_HPRE_DIV1
| RCC_CFGR_SW_PLL;Re: Stm32 с чего начать изучение...
[uquote="TEPEM",url="/forum/viewtopic.php?p=4734875#p4734875"]настройки на 170мГц?[/uquote]
а смысл запускать такой лапоть на милигерцах?
а смысл запускать такой лапоть на милигерцах?
глаза баяца, руки из жопы, но я не здаюсь
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: Stm32 с чего начать изучение...
[uquote="sc0rpy",url="/forum/viewtopic.php?p=4735026#p4735026"]а смысл запускать такой лапоть на милигерцах?[/uquote]Что такое милигерц?
Re: Stm32 с чего начать изучение...
[uquote="VladislavS",url="/forum/viewtopic.php?p=4735041#p4735041"]Что такое милигерц?[/uquote]Не все владеют русским. Даже если говорят на нём. И даже если пытаются учить других правильно говорить. 
Re: Stm32 с чего начать изучение...
[uquote="jcxz",url="/forum/viewtopic.php?p=4735043#p4735043"]Не все владеют русским. Даже если говорят на нём. И даже если пытаются учить других правильно говорить.
[/uquote]
а как это читаеца?
[uquote="TEPEM",url="/forum/viewtopic.php?p=4734875#p4734875"]настройки на 170мГц?[/uquote]
а как это читаеца?
[uquote="TEPEM",url="/forum/viewtopic.php?p=4734875#p4734875"]настройки на 170мГц?[/uquote]
глаза баяца, руки из жопы, но я не здаюсь
- TEPEM
- Нашел транзистор. Понюхал.
- Сообщения: 153
- Зарегистрирован: Чт дек 05, 2019 16:28:11
- Откуда: Самара
Re: Stm32 с чего начать изучение...
Так ни чего и не понял 
Re: Stm32 с чего начать изучение...
[uquote="TEPEM",url="/forum/viewtopic.php?p=4735597#p4735597"]Так ни чего и не понял
[/uquote]
вам готовый ответ дали
вам готовый ответ дали
VladislavS писал(а): Начни с такого.Код: Выделить всё
FLASH->ACR = FLASH_ACR_DBG_SWEN | FLASH_ACR_ICEN | FLASH_ACR_DCEN | FLASH_ACR_PRFTEN | _VAL2FLD(FLASH_ACR_LATENCY,4); RCC->PLLCFGR = RCC_PLLCFGR_PLLSRC_HSI | _VAL2FLD(RCC_PLLCFGR_PLLM,4-1) | _VAL2FLD(RCC_PLLCFGR_PLLN,85) | RCC_PLLCFGR_PLLREN | _VAL2FLD(RCC_PLLCFGR_PLLR,0); // R=2 RCC->CR = RCC_CR_PLLON | RCC_CR_HSION; while(!(RCC->CR & RCC_CR_PLLRDY)); RCC->CFGR = RCC_CFGR_MCOPRE_DIV8 | _VAL2FLD(RCC_CFGR_MCOSEL,1) | RCC_CFGR_PPRE2_DIV1 | RCC_CFGR_PPRE1_DIV2 | RCC_CFGR_HPRE_DIV1 | RCC_CFGR_SW_PLL;
Re: Stm32 с чего начать изучение...
[uquote="TEPEM",url="/forum/viewtopic.php?p=4734875#p4734875"]Что то у меня тактирование от внутреннего генератора не пашет.[/uquote]
Сконфигурируйте через Cube и не мучайте опу. Дался вам этот CMSIS - оставьте его для умных.
Сконфигурируйте через Cube и не мучайте опу. Дался вам этот CMSIS - оставьте его для умных.
Re: Stm32 с чего начать изучение...
[uquote="jcxz",url="/forum/viewtopic.php?p=4652921#p4652921"]Мне уже сказали, что "в моём коде во всей конторе никто не может разобраться". Потому как написан на си[/uquote]
Эхехех. Сегодня случайно натолкнулся я на это "никто не может разобраться":
Программирование микроконтроллеров - это не только биты и регистры, но и принципы построения вообще программного кода. И этому тоже надо учиться, а не пренебрегать. Те, кто учился в ВУЗах по специальности, это прошли в рамках образовательной программы. Остальным - самообразование никто не запрещал.
Есть такой "принцип единственной ответственности", который гласит, что функция (класс, модуль) должна отвечать только за что-то одно. Если функция работает с регистрами SPI, то она должна работать только с регистрами SPI, никаких побочных вычислений какой-то переменной faza, никаких вызовов какой-то PingMain(), которая вообще черт знает что там делает, никаких вызовов посторонних модулей. Принцип единственной ответственности! Если надо вычислить переменную faza, это делается ВНЕ этой функции. Если надо вызывать PingMain(), это делается ВНЕ этой функции. Если нужно активировать DMA, это делается ВНЕ этой фукнции. Нельзя смешивать в одной функции разные уровни - уровень работы с железом и прикладной уровень. Каждая функция занимается только тем, для чего она предназначена. WriteSpi(GetPhase(i)); - уже лучше. (Причем, орфографически правильно не faza, а phase)
Из вышесказанного следует еще один принцип - принцип открытости/закрытости. Он гласит, что если нужно расширить функционал, то не следует изменять уже написанный модуль или функцию. Добавьте этот функционал в отдельной функции, не переписывая готовой. Потому что каждое дописывание готовой функции требует повторной её отладки, тестирования. Зачем переделывать работу, которая уже была сделана?
А если потом потребуется наоборот уменьшить функционал или использовать модуль в другом месте с меньшим функционалом, потребуется опять переписывать написанный модуль, выбрасывая лишнее.
Используйте интерфейсы модулей. Взаимодействие с программным модулем должно происходить только через предоставляемый модулем интерфейс. Интерфейс - это набор функций для доступа к внутренней структуре модуля. WriteSpi() - это интерфейс модуля Spi для передачи байта. GetPhase() - это интерфейс модуля фазы чего-то там для получения значения этой фазы через вычисление.
Отсюда следует принцип повторного использования кода. Он предполагает, что написанный модуль (класс, функцию) можно без изменений(!) использовать в другом проекте или в другом месте проекта. Показанный выше фрагмент не предполагает повторного использования - в новом проекте с другим функционалом этот фрагмент придется переписывать заново. Из-за этого увеличивается время разработки, усложняется отладка и поиск багов, а структура проекта выглядит как бесформенное месиво с трудноотслеживаемыми зависимостями. Невозможно что-либо изменить в одном месте, каждое изменение тянет за собой клубок тесносвязанных зависимостей. Невозможно один модуль заменить другим без внесения правок и переотладки уже отлаженного кода. Потому что в одной функции тесно переплетены как работа с регистрами микроконтроллера, так и работа с бизнес-логикой проекта. Выдернуть, поменять, переставить что-то - задача не из легких и сопряжена с риском человеческих ошибок.
Если попросить автора этого кода быстро в режиме "надо вчера" что-то изменить в функционале, он, этот автор, не сможет выполнить работу в короткий срок. Даже если он в собственной каше хорошо ориентируется, простая замена какого-либо функционального модуля потребует внесения множества правок, переписываний и повторных тестов уже протестированного. Это противоречит принятым принципам программирования и создает множество рисков и задержек в работе. И получается всё действительно будет завязано на одном человеке, который это написал. Обычно, такой человек является самым ненадежным звеном в компании, да еще и шантажирует руководство своей якобы незаменимостью. Типа, "вот если я уйду, вы все рухните". Но как показывает практика, вместе с этим шантажистом выкидывают и все его проекты, заменяя на правильно написанные. Некоторое переходное время компания испытывает трудности, но после устаканивания о предыдущем работнике-шантажисте больше вообще никогда и не вспоминают. А если и вспоминают, то только в негативном контексте. Хреновая перспектива, однако. Такой человек никогда не будет внесен в историю компании, даже если и многое сделал. Срабатывает обычная психология.
В общем, если кому-то сказали, что "в вашем коде никто не может разобраться", то это следует воспринимать как сигнал того, что вы не знаете принципов программирования и пишите ужасный код. Вряд ли эта фраза несет похвалу. Скорее, прямой намек на то, что погромист безграмотен и генерирует весьма опасный код разового применения. И скорее, все только и ждут, когда же этот горе-погромист свалит всё-таки на пенсию. А после этого никто даже и не будет разгребать это месиво, просто выкинут всё и заменят другим, структурированным кодом, с которым можно будет быстро работать и поддерживать его без создания рисков для компании.
PS. Есть принцип "Keep it simple, stupid", что в переводе означает "пиши проще, чувак!"
Эхехех. Сегодня случайно натолкнулся я на это "никто не может разобраться":
Жжжжуткое месиво из magic numbers и бестолковых смешиваний обращений к регистрам из разных периферийных модулей и прикладных вычислений. Принцип единственной ответственности (и не только он один) попран ногами. Всё склеено в такой жуткий комок, который действительно невозможно разодрать. Так обычно пишут либо начинающие, либо безграмотные. Начинающие то быть может научатся, а вот безграмотные годами пишут месиво и гордятся им. Хотя гордиться тут нечем, это безграмотная позорная мешанина.Спойлер
Код: Выделить всё
case F_TRA: spiC->TRBSCR = B0 | B14; if (!(n = faz.tra.dlast)) { if (i & 1 << SO_ER) { faza = i += F_TRA_STOP - F_TRA << SO_n; PingMain(); } else EndTra(); return; } if (n >= BURST_SPI_R * 2) { IntDis(concat(NVIC_USIC, USIC_UNIT(nUSIC_spi), _, SRUSIC_SR(nUSIC_SR_spi_RX))); AtomicOrI(&DLR.LNEN, 1 << nDMALINE_spi_RX); spiC->RBCTR_b[1] = BURST_SPI_R * 2 - 1 - 1; __DMB(); rdmaU->CHEN = (1 << (nDMALINE_spi_RX & 7)) * (B0 | B8); } else { spiC->RBCTR_b[1] = USIC_FIFO_SIZE; __DMB(); } tdmaU->CHEN = (1 << (nDMALINE_spi_TX & 7)) * (B0 | B8); CCU_PIN_IN(nCCU_mlx1, PIN_MLX1) << EVENT_MLX_fall * 4 | 2 << EVENT_MLX_fall * 2 + 16 | 3 << EVENT_MLX_fall * 2 + 25;
Программирование микроконтроллеров - это не только биты и регистры, но и принципы построения вообще программного кода. И этому тоже надо учиться, а не пренебрегать. Те, кто учился в ВУЗах по специальности, это прошли в рамках образовательной программы. Остальным - самообразование никто не запрещал.
Есть такой "принцип единственной ответственности", который гласит, что функция (класс, модуль) должна отвечать только за что-то одно. Если функция работает с регистрами SPI, то она должна работать только с регистрами SPI, никаких побочных вычислений какой-то переменной faza, никаких вызовов какой-то PingMain(), которая вообще черт знает что там делает, никаких вызовов посторонних модулей. Принцип единственной ответственности! Если надо вычислить переменную faza, это делается ВНЕ этой функции. Если надо вызывать PingMain(), это делается ВНЕ этой функции. Если нужно активировать DMA, это делается ВНЕ этой фукнции. Нельзя смешивать в одной функции разные уровни - уровень работы с железом и прикладной уровень. Каждая функция занимается только тем, для чего она предназначена. WriteSpi(GetPhase(i)); - уже лучше. (Причем, орфографически правильно не faza, а phase)
Из вышесказанного следует еще один принцип - принцип открытости/закрытости. Он гласит, что если нужно расширить функционал, то не следует изменять уже написанный модуль или функцию. Добавьте этот функционал в отдельной функции, не переписывая готовой. Потому что каждое дописывание готовой функции требует повторной её отладки, тестирования. Зачем переделывать работу, которая уже была сделана?
А если потом потребуется наоборот уменьшить функционал или использовать модуль в другом месте с меньшим функционалом, потребуется опять переписывать написанный модуль, выбрасывая лишнее.
Используйте интерфейсы модулей. Взаимодействие с программным модулем должно происходить только через предоставляемый модулем интерфейс. Интерфейс - это набор функций для доступа к внутренней структуре модуля. WriteSpi() - это интерфейс модуля Spi для передачи байта. GetPhase() - это интерфейс модуля фазы чего-то там для получения значения этой фазы через вычисление.
Отсюда следует принцип повторного использования кода. Он предполагает, что написанный модуль (класс, функцию) можно без изменений(!) использовать в другом проекте или в другом месте проекта. Показанный выше фрагмент не предполагает повторного использования - в новом проекте с другим функционалом этот фрагмент придется переписывать заново. Из-за этого увеличивается время разработки, усложняется отладка и поиск багов, а структура проекта выглядит как бесформенное месиво с трудноотслеживаемыми зависимостями. Невозможно что-либо изменить в одном месте, каждое изменение тянет за собой клубок тесносвязанных зависимостей. Невозможно один модуль заменить другим без внесения правок и переотладки уже отлаженного кода. Потому что в одной функции тесно переплетены как работа с регистрами микроконтроллера, так и работа с бизнес-логикой проекта. Выдернуть, поменять, переставить что-то - задача не из легких и сопряжена с риском человеческих ошибок.
Если попросить автора этого кода быстро в режиме "надо вчера" что-то изменить в функционале, он, этот автор, не сможет выполнить работу в короткий срок. Даже если он в собственной каше хорошо ориентируется, простая замена какого-либо функционального модуля потребует внесения множества правок, переписываний и повторных тестов уже протестированного. Это противоречит принятым принципам программирования и создает множество рисков и задержек в работе. И получается всё действительно будет завязано на одном человеке, который это написал. Обычно, такой человек является самым ненадежным звеном в компании, да еще и шантажирует руководство своей якобы незаменимостью. Типа, "вот если я уйду, вы все рухните". Но как показывает практика, вместе с этим шантажистом выкидывают и все его проекты, заменяя на правильно написанные. Некоторое переходное время компания испытывает трудности, но после устаканивания о предыдущем работнике-шантажисте больше вообще никогда и не вспоминают. А если и вспоминают, то только в негативном контексте. Хреновая перспектива, однако. Такой человек никогда не будет внесен в историю компании, даже если и многое сделал. Срабатывает обычная психология.
В общем, если кому-то сказали, что "в вашем коде никто не может разобраться", то это следует воспринимать как сигнал того, что вы не знаете принципов программирования и пишите ужасный код. Вряд ли эта фраза несет похвалу. Скорее, прямой намек на то, что погромист безграмотен и генерирует весьма опасный код разового применения. И скорее, все только и ждут, когда же этот горе-погромист свалит всё-таки на пенсию. А после этого никто даже и не будет разгребать это месиво, просто выкинут всё и заменят другим, структурированным кодом, с которым можно будет быстро работать и поддерживать его без создания рисков для компании.
PS. Есть принцип "Keep it simple, stupid", что в переводе означает "пиши проще, чувак!"
Re: Stm32 с чего начать изучение...
[uquote="КотПротон",url="/forum/viewtopic.php?p=4737357#p4737357"]Эхехех. Сегодня случайно натолкнулся я на это "никто не может разобраться":/[/uquote]
а человек-оркестр за миску риса еще и коментов должэн был накидать?
а человек-оркестр за миску риса еще и коментов должэн был накидать?
Последний раз редактировалось sc0rpy Вс авг 10, 2025 09:21:41, всего редактировалось 1 раз.
глаза баяца, руки из жопы, но я не здаюсь
Re: Stm32 с чего начать изучение...
Причем здесь комменты? Там в том коде чушь собачья написана, это и без комментов видно. Никакой структуры, никакой логики, всё в навал. И я объяснил подробно, почему так. Читайте литературу по программированию.
Такое бестолковое месиво пишут либо начинающие, либо безграмотные. И это барахло никто разбирать не будет, выкинут файлы по Shift+Del и вспоминать не будут.
Если "человек-оркестр" ни в зуб ногой в теме вопроса, то пусть лучше в "оркестре" на балалайке пиликает за свою тарелку риса, коль он за еду работает. Кто не умеет, тому не следует и браться, чтоб не воротить такой вот дичи, которую потом только в помойку, на свалку истории.
Такое бестолковое месиво пишут либо начинающие, либо безграмотные. И это барахло никто разбирать не будет, выкинут файлы по Shift+Del и вспоминать не будут.
Если "человек-оркестр" ни в зуб ногой в теме вопроса, то пусть лучше в "оркестре" на балалайке пиликает за свою тарелку риса, коль он за еду работает. Кто не умеет, тому не следует и браться, чтоб не воротить такой вот дичи, которую потом только в помойку, на свалку истории.