Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
макросов, вызывающих макросы, которые вызывают макросы можно насчитать десятки
#define CDC_DATA_MAX_PACKET_SIZE 64

Лучше по-минимуму чужие библиотеки использовать.Это только если говорить про hal. Тот же udp/ip стек я писал, но не вижу смысла не использовать uip или lwip, когда нужно работать с сетью.
d = SPIx->DR; и d = SPI_I2S_ReceiveData(SPIx);, но второе добавляет оверхед как в плане дополнительного bl, так и с точки зрения восприятия кода.стараться только на регистрах все делать, напрямую: все равно быстрей почитать даташит и выяснить, что с каким регистром надо делать
А CMSIS-то при чем? Там всего-то общие define'ы и обертки
Чушь! Все равно придется очень много переделыватьна мой взгляд, идеальный вариант, если Вы действительно меняете 1 строчку, где стоит указание компилятору и среде о типе используемого процессора, а код программы вообще не меняется. В принципе, было бы неплохо, если бы среда программирования сама определяла тип подключенного программируемого МК и выдавала предупреждение о несоответствии, но это уже экзотика.
А еще вопрос — про CMSIS все забыли — вроде неплохая была идея?cmsis все используют. Тот же spl построен поверх оного.
Доработка USB-стека в микроконтроллерах STM32 и TivaC