Перейти к содержанию
    

давайте делится удобными дефайнами для stm32f10x

не очень понимаю в чем спор то?

Изначально - нужен bit-band или "можно и без него обойтись, не очень-то и хотелось".

 

я если что-то иничу или ремаплю, то делаю это один раз, и могу выбрать последовательность в которой все пройдет гладко

Ключевое слово здесь "я". Это частный случай. Но начиная с какого-то размера, трудоемкость raw кодирования сильно увеличивается. Избежать этого поможет разбиение на блоки. Но появляется ограничение - блоки должны работать корреткно, в т.ч. независимо от того, в какой последовательности их вызывают. В моем случае, есть несколько разных модулей верхнего уровня, каджый из которых может вызвать инициализацию в произвольный момент, а не только в начале программы. Больше того, модули верхнего уровня могут быть написаны сторонними людьми, поэтому достоверно определить, когда вызывается инициализация - затруднительно. Совсем не факт, что она вызывается только один раз в самом начале.

 

Нет там никаких проблем с ремапом... ни в каком виде... изначально... всё это надуманно...

Вообще-то, проблему я выше изложил. Позже даже разжевал, причем подробно. Но раз нет - значит нет. На том и порешим.

P.S.

"Пушкин, он как гамлЕт. Все отрицал." (с) Шура Каретный

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

проблему я выше изложил. Позже даже разжевал, причем подробно. Но раз нет - значит нет.

Хорошо...

Почему проблема возникла только у вас... судя по отсутствию "горячего" обсуждения... проблема "чисто ваша"...

Иначе... было-бы и обсуждение и методы решения...

Думать, что ремапом пользуетесь только вы.... наивно, по крайней мере...

Отсюда: Проблемы нет... и она никому не интересна, ввиду её полного отсутствия...

 

Дальше...

Регистр прочитать нельзя... но писать то можно??? Трудности с установкой/ очисткой битов??? Не знаете что такое маска???

Очистили нужные биты, потом установили... в хэдэр хоть заглядывали??? Так в чём проблемы???

А бит-бэндинг/ не бит-бэндинг это уже частности... а не панацея...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возвращаясь в тему.

ИМХО для АРМов использовать "дефайны" и "инлайн функции" в заголовочниках сейчас не имеет никакого практического смысла. Современные компиляторы (свежие GCC с опцией -flto) прекрасно анализируют код и при необходимости сами "заинлайнят" нужные функции. А если указана опция оптимизировать по размеру, то наоборот не будут "разворачивать" код.

Отказ от "дефайнов" приводит к более красивому коду и к простоте отладки. Дефайны не осуществляют проверку типов и т.п.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это-то тут причём? Ради флуда?

 

Отказ от "дефайнов" приводит к более красивому коду и к простоте отладки. Дефайны не осуществляют проверку типов и т.п.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дальше...

Регистр прочитать нельзя... но писать то можно??? Трудности с установкой/ очисткой битов??? Не знаете что такое маска???

Очистили нужные биты, потом установили... в хэдэр хоть заглядывали??? Так в чём проблемы???

А бит-бэндинг/ не бит-бэндинг это уже частности... а не панацея...

 

вы не совсем правы. Если регистр прочитать нельзя, то нельзя установить его значения. Следовательно присвоение по маске тоже не сработает.

 

так как общее правило для него считать значение, изменить нужные маскированные биты, и записать значение обратно. В этом случае если нет возможности достоверного считывания значения то и нет возможности записать его достоверно обратно.

к примеру бит который читается всегда как 0, но может быть выставлен в единицу, после считывания и записывания обратно гарантировано занулиться...

 

единственное мне очень странно слышать недоступный для чтения бит, недоступный для записи я могу понять, но для чтения?... Зачем они такие...

 

Такое возможно только если этот бит реально не надо читать, то есть допустим он задает режим работы, который жестко определен и не может быть изменен, тогда этот режим определяет константную часть регистра, которую либо вычисляют от состояния либо хранять в памяти. как то так....

 

но бит-банд на самом деле сделан для экономии инструкций и увеличения скорости битошевеления, замена изменения одного бита - одной инструкцией против читать, маскировать, менять, записывать весьма соблазнительная для быстрого кода.

 

а что нет портов ввода вывода, так это потому что часто для них есть свой регистр поставить бит и стереть бит, меняющий именно один бит одного регистра за один такт, и нет смысла отъедать лишнюю память...

 

резюме: без бит-банда можно обойтись, иначе не было прошлых процов без него, он также удобен - иначе бы его не делали. То есть это инструмент который делает нашу жизнь лучше и не надо его отрицать:), ровно как и положить за него жизнь... ИМХО

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вы не совсем правы. Если регистр прочитать нельзя, то нельзя установить его значения. Следовательно присвоение по маске тоже не сработает.

Ещё раз... читать нельзя... но есть Reset value... есть от чего отталкиваться...

А дальше... или я по маске набью переменную и целиком затолкаю в регистр... или положу в регистр заранее подготовленное значение... или буду дёргать бит-бэндом... всё от задачи...

А сама проблема ремапа... где???

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ещё раз... читать нельзя... но есть Reset value... есть от чего отталкиваться...

Индусский подход? Именно так в либах от ST и сделано ( о чудо, оказывается я заглядываю в "хидеры" и "либы" ). К чему это приводит, я уже объяснял. По второму разу жевать одно и тоже - никакого желания.

 

А сама проблема ремапа... где???

Круто. Расписать несколько вариантов "костылей", а потом самому же скромно спросить - а где, собственно, проблема? Я оценил. :biggrin:

 

Отказ от "дефайнов" приводит к более красивому коду и к простоте отладки. Дефайны не осуществляют проверку типов и т.п.

Все верно. И таким образом, тема плавно перетекает в грамотно продуманный API.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Круто. Расписать несколько вариантов "костылей", а потом самому же скромно спросить - а где, собственно, проблема? Я оценил. :biggrin:

Если подумать... то вариант с бит-бэндом, при частом ремапе, самый бестолковый "костыль"... :biggrin:

Но это ваша "проблема"... :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...