ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
463337 Топик полностью
Vit (14.11.2013 02:41 - 13:10, просмотров: 98) ответил 1111111 на Еще раз - оскорбления в чей адрес? Еще раз - примеры адекватного применения? Явное преимущество перед тупой записью регистров, или хотя бы для экономии времени. Ну да тот же уарт.
Для меня оскорбительно то, что Вы называете то, чем я пользуюсь, постыдным и недостойным использования, а сами "не читал, но осуждаю". Каких примеров Вы хотите?  Запись в регистры никто не отменял, но я уже объяснял, что с появлением стандарта CMSIS (не "CMSIS-библиотек от производителя") упорядочилось размещение регистров периферии - их стали размещать слитно (для модуля) и для повторяющихся модулей как правило одинаково, т.е. стало проточено под копирование структур. Можно вспомнить корявые типы для GPIO AVR в EWAVR и по-проще, но всё-равно через костыли, в AVR-GCC - дык у CORTEX сама архитектура и CMSIS сподвигнули на унификацию через структурированные обращения. Оно, конечно, не столь ново, как вовремя принято, но спасибо им и на этом. Так вот это и есть реально нормальная поддержка параметризации при работе с периферией. Но, просто набор регистров это чуть. А ещё чуть это то удобство, которое должно обеспечивать пользователю API (типа системное) и лучше иметь хоть какое удобоваримое API, чем никакого. Когда у Вас не один УАРТ с фиксированной скоростью или автободом, а несколько UART-ов, и несколько протоколов, с разными скоростями, четностями, полудуплексами и прочим, и всё это конфигурируется в рантайме, то обёртки по-любому нужны. Вряд ли Вы будете хранить настройки как побитовые копии регистров, тем более никто не обещает, что всякие регистры данных не попадут дырочкой в адресах. Вы выберете удобный Вам способ. А при реинициализации ввиду изменения этих настроек вызовете обертку, преобразующую Ваши настройки (а-ля DCB в венде) в пригодные для регистров. Ваши ли будут обёртки, или чужими воспользуетесь - не суть важно. Зато дальше один маленький момент - либо в обертку параметром передаётся указатель на структуру УАРТа, либо иначе - хэндл, либо прямо рулим вручную прибитыми гвоздями функциями/рукопашно (с хэндлом так тоже случается). Так вот за этот указатель на структуру, используемый и как хэндл, но главное - по прямому назначению, и боролись. Для 16-ти УАРТ всё-таки одна функция, а не 16 плюс рулёжка, например, обдефайненными обертками. Настройки GPIO тоже содержат фактически не набор однотипных кусков кода, а наборы параметров. Да, вызов функции для "махнуть ногой" это долгая и казалось бы печальная история. Но если Вам нужно быстрее - можно уже написать капочку своего - например, тупо то же заинлайнить, а если хочется быстрее, то никто не мешает воспользоваться BitBang-ом. Я возможно написал бы многое по-другому, с блэкджеком и шлюхами, но как-то не вижу особого смысла. Мне эти "либы" хорошо экономят время. И для того они делались. Я спокойно пишу и без либ и умею пользоваться макросами, но так же не стесняюсь пользоваться либами. Зачем Вы всем тут пытаетесь сказать, что кто пользуется либами, тот не умеет читать доки, не умеет писать без либ, не умеет пользоваться дефайнами? Вы говорите, что сами "либы" не хотите изучать и тут же говорите, что они говнокод, потому их постыдно применять. Вы считаете это вескими аргументами? Я это назвал как есть. ЗЫ. Насчет расстроил - я рад:) Я действительно не читаю хелпов к либам - просто когда пишу программы ищу нужное мне в доках и сорцах, только чаще дока до написания достаточно изучена, потому чаще начинается с сорцов - нахожу быстро и легко. И я правда, поверьте, даже ни разу не видел и не искал хелп к "либе":)