Включать надо не тип аргументов, а единицы измерения, причем не только в функции, но и в переменные, константы и т.п. Особенно если это настройки.
Скажем, в прошивке устройства используется таймаут, задаваемый через константу (
#define TIMEOUT 2
). В каких он единицах? Секунды, микросекунды, тики таймера? А вот если явно указать человеко-читемую единицу
#define TIMEOUT_S 2
, сразу ясно, что в секундах. Потом, для машинного представления, можно добавить формулу, по которой препроцессор переведет в тики или в чем там удобно. Но настройки должны быть человеко-читаемы.
Еще хуже с физическими величинами. Переменная
double channel_len;
в каких единицах? Но стоит добавить суффикс, и неоднозначность исчезает:
double channel_len_mm;
. А совсем хорошо непосредственно перед наложением переменных на формулу привести их к единой системе единиц (для научных формул — СИ). Разумеется, поименовав в соответствии с размерностью. Добавляется перекладывание переменных, зато меньше риск ошибки.
И в этом смысле удачно сделали разработчики Atmel со своими _delay_ms, _delay_us или, если кому ближе usleep. Гораздо нагляднее всяких Sleep, delay и т.п.
Не имею ничего против темной темы, она не лучше и не хуже любой другой, даже пурпурной на зеленом. Совсем хорошо если у приложения есть набор тем и возможность кастомизации. Но вот если приложение по своему усмотрению решает переключить тему — сбивает с толку. Наткнулся в OSMand и тут же отключил.
Не воспринимайте настолько буквально. Разумеется, бывают задачи, где узкое место не в оперативке. Разумеется, всегда можно добавить оптимизацию или, в крайнем случае, поставить внешнюю ОЗУ. Но ведь нередки и задачи, где кэширование результатов увеличивает быстродействие.
Да чего ходить за примером: в статье есть видео с трехмерной графикой. Экран 320х240х16, то есть 150кБ. Это уже далеко за пределами 20кБ памяти stm32f103, а ведь еще хорошо бы задний буфер, да буфер глубины, и данные моделей хранить где-то надо.
Мне бы ваши проблемы. Я вот в мегабайт оперативки (STM32H7) с трудом вмещаюсь. И 300к флэш на прошивку. Все просто — большие матрицы (GNSS) и куча кода для математической обработки.
Про оперативку согласен на 100%: ее всегда не хватает. Собственно, «подопытный» контроллер я и выбирал в первую очередь за ОЗУ и потребление, а вовсе не за выводы или флеш.
Но и про флеш согласен с вами: забить туда константы, препрощитанные данные и тому подобное — логичный и правильный подход. Уж точно более правильный, чем забивать то же место говнокодом :)
А не проще купить за 200 рублей?
Объективно — проще. Да я об этом и в выводах написал. Но вот захотелось сделать вручную. Тренировка в изготовлении плат, если хотите.
Вот ссылки: STM32CubeIDE, STM32CubeMX. Внизу есть кнопочка «Get Software». Регистрироваться, разумеется, придется.
И об этом я писал. Скачать весь этот софт без регистрации точно так же невозможно, как и библиотеки. Но его проще найти на просторах интернета, а если кто боится венерических «подарков», которые к нему могут подложить, то виртуальная машина стерпит.
2. Если повернуть текст так, чтобы надпись читалась, то первый пин слева‐снизу (кстати, у вас написано, что справа‐сверху, так что кто‐то ошибается; скорее всего, вы, т.к. в datasheet нарисовано то же самое).
Спасибо за исправление, внесу его в статью.
3. Если прозвонить тестером земли, то всё станет понятно.
Тоже хороший совет, добавлю как способ, которым можно воспользоваться
Немного дополню из личного опыта для новичков:
1. В качестве бумаги весьма неплохо показывает себя декоративная упаковочная бумага. Она продается в больших рулонах и имеет одну глянцевую сторону. Нарезать под А4 не проблема, а утюжить так и так лучше через обычную белую офисную бумагу. Это в случае если проблема достать специальную бумагу.
2. Шкурка не должна быть слишком мелкой. Пробовал шкурку с обозначением М40 — оказалась слишком мелкой, половина тонера не прилипает.
3. В качестве обезжиривателя и легкого абразива хорошо работает пемолюкс, им же можно оттирать тонер после неудачного опыта. Качество обезжиривания хорошо контролируется на глаз по смачиваемости. После окунания заготовки в воду должна образовываться тонкая пленка. Те места, которые смачиваются плохо, стоит еще потереть.
4. После травления имеет смысл сразу насверлить отверстия, а потом обработать шкуркой чтобы снять все заусенцы а заодно и тонер.
5. Для травления односторонней платы можно приклеить к ней кусок пенопласта и пусть плавает медью вниз. Конечно, это хуже системы активного перемешивания, зато гораздо проще. Бесплатный бонус — можно красиво класть плату на пленку поверхностного натяжения. Главное чтобы пузыри воздуха не скапливались.
Вы можете исправить СЕБЯ если осознали что ведете себя как один из них.
Скажем, в прошивке устройства используется таймаут, задаваемый через константу ( ). В каких он единицах? Секунды, микросекунды, тики таймера? А вот если явно указать человеко-читемую единицу , сразу ясно, что в секундах. Потом, для машинного представления, можно добавить формулу, по которой препроцессор переведет в тики или в чем там удобно. Но настройки должны быть человеко-читаемы.
Еще хуже с физическими величинами. Переменная в каких единицах? Но стоит добавить суффикс, и неоднозначность исчезает: . А совсем хорошо непосредственно перед наложением переменных на формулу привести их к единой системе единиц (для научных формул — СИ). Разумеется, поименовав в соответствии с размерностью. Добавляется перекладывание переменных, зато меньше риск ошибки.
И в этом смысле удачно сделали разработчики Atmel со своими _delay_ms, _delay_us или, если кому ближе usleep. Гораздо нагляднее всяких Sleep, delay и т.п.
Да чего ходить за примером: в статье есть видео с трехмерной графикой. Экран 320х240х16, то есть 150кБ. Это уже далеко за пределами 20кБ памяти stm32f103, а ведь еще хорошо бы задний буфер, да буфер глубины, и данные моделей хранить где-то надо.
Про оперативку согласен на 100%: ее всегда не хватает. Собственно, «подопытный» контроллер я и выбирал в первую очередь за ОЗУ и потребление, а вовсе не за выводы или флеш.
Но и про флеш согласен с вами: забить туда константы, препрощитанные данные и тому подобное — логичный и правильный подход. Уж точно более правильный, чем забивать то же место говнокодом :)
Объективно — проще. Да я об этом и в выводах написал. Но вот захотелось сделать вручную. Тренировка в изготовлении плат, если хотите.
И об этом я писал. Скачать весь этот софт без регистрации точно так же невозможно, как и библиотеки. Но его проще найти на просторах интернета, а если кто боится венерических «подарков», которые к нему могут подложить, то виртуальная машина стерпит.
Спасибо за исправление, внесу его в статью.
Тоже хороший совет, добавлю как способ, которым можно воспользоваться
1. В качестве бумаги весьма неплохо показывает себя декоративная упаковочная бумага. Она продается в больших рулонах и имеет одну глянцевую сторону. Нарезать под А4 не проблема, а утюжить так и так лучше через обычную белую офисную бумагу. Это в случае если проблема достать специальную бумагу.
2. Шкурка не должна быть слишком мелкой. Пробовал шкурку с обозначением М40 — оказалась слишком мелкой, половина тонера не прилипает.
3. В качестве обезжиривателя и легкого абразива хорошо работает пемолюкс, им же можно оттирать тонер после неудачного опыта. Качество обезжиривания хорошо контролируется на глаз по смачиваемости. После окунания заготовки в воду должна образовываться тонкая пленка. Те места, которые смачиваются плохо, стоит еще потереть.
4. После травления имеет смысл сразу насверлить отверстия, а потом обработать шкуркой чтобы снять все заусенцы а заодно и тонер.
5. Для травления односторонней платы можно приклеить к ней кусок пенопласта и пусть плавает медью вниз. Конечно, это хуже системы активного перемешивания, зато гораздо проще. Бесплатный бонус — можно красиво класть плату на пленку поверхностного натяжения. Главное чтобы пузыри воздуха не скапливались.