Например TDA7294

Форум РадиоКот • Просмотр темы - Ассемблер для STM32. Сложно ли, стоит ли пытаться?
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Чт сен 25, 2025 00:51:48

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 291 ]     ... , , , 11, , , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Ср дек 16, 2020 15:28:10 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
VladislavS писал(а):
или будет неэффективная команда записи в память? Я думаю второе.
Правильно думаете
СпойлерНа 64 бита, с возможностью выбора 8-16-32-64, в любой последовательности пинов.
Не знаю поддерживает ли GCC uint128_t?
Код:
#define k_bit   uint64_t//64бита uint32_t-32бита uint16_t-16бита uint8_t-8бита

typedef struct{
   volatile uint32_t * port;
   k_bit            or;
} port_pin;


#define PORTA (GPIOA->ODR)
#define PORTB (GPIOB->ODR)
#define PORTC (GPIOC->ODR)


#define pn(p,b) {&PORT ## p, (1<<b)}

const port_pin pins[] = {
  pn(A,3),
  pn(A,5),
  pn(A,4),
  pn(A,1),
  pn(A,2),
  pn(A,0),
  pn(A,7),
  pn(A,8),
  pn(A,12),
  pn(A,13),
  pn(A,14),
  pn(A,15),
  pn(C,4),
  pn(C,6),
  pn(C,3),
  pn(C,5),
  pn(C,2),
  pn(C,7),
  pn(C,8),
  pn(C,12),
  pn(C,13),
  pn(C,14),
  pn(B,3),
  pn(B,5),
  pn(B,4),
  pn(B,6),
  pn(B,1),
  pn(B,2),
  pn(B,7),
  pn(B,0),
  pn(B,8),
  pn(B,9),
  pn(B,12),
  pn(B,13),
  pn(B,14)
};

const port_pin pin_ns[] = {
  pn(C,1)
};

void port_write (volatile const port_pin *p, uint8_t a, k_bit data)
{   k_bit s=1;
      for(uint8_t i=0; i<a; i++, s<<=1){
      if (data & s)
         *p->port |= p->or;
         else
            *p->port &= ~(p->or);
      p++;
   }
}

int main(void)
{

   RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPBEN | RCC_APB2ENR_IOPCEN;

   GPIOA->CRL &= ~GPIO_CRL_CNF;
   GPIOA->CRL |= GPIO_CRL_MODE;

   GPIOA->CRH &= ~GPIO_CRH_CNF;
   GPIOA->CRH |= GPIO_CRH_MODE;

   GPIOB->CRL &= ~GPIO_CRL_CNF;
   GPIOB->CRL |= GPIO_CRL_MODE;

   GPIOB->CRH &= ~GPIO_CRH_CNF;
   GPIOB->CRH |= GPIO_CRH_MODE;

   GPIOC->CRL &= ~GPIO_CRL_CNF;
   GPIOC->CRL |= GPIO_CRL_MODE;

   GPIOC->CRH &= ~GPIO_CRH_CNF;
   GPIOC->CRH |= GPIO_CRH_MODE;

   port_write (pins, sizeof(pins)/sizeof(port_pin), 0b00100001001001000001000010000100100);
   port_write (pins, sizeof(pins)/sizeof(port_pin), 0b00100101101001001000001010010100100);
   port_write (pins, sizeof(pins)/sizeof(port_pin), 0);

   port_write (pin_ns, sizeof(pin_ns)/sizeof(port_pin), 1);
   port_write (pin_ns, sizeof(pin_ns)/sizeof(port_pin), 0);

    while(1)
    {
    }
}
да же еще без ошибок собирается.
Честно говоря, до последнего не думал что будет работать.
Пусть это и далеко не эффективный код, но он работает, и прекрасно работает.

На F103
Код:
Program Size:
      text      data       bss       dec       hex   filename
      1456         0      1024      2480       9b0   port_103.elf


Есть еще один метод, но он посложнее будет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Ср дек 16, 2020 15:34:12 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2516
Рейтинг сообщения: 0
Если и начинать изучать С++ это надо начинать с буквы А и года 4 зубрить.

Сдается мне, что четырех лет не хватит!
Это С можно за полгода спокойно изучить. А вот С++…
И при этом вообще не видно никакой выгоды над С! Зато тексты исходников получаются на порядок-два сложней, компилируются они значительно дольше, да еще и неприятным "бонусом" является необходимость каждый год изучать, что там нового всякие козлы в С++ привнесли! Зато С стабилен, и выучив его один раз, можно пользоваться всю жизнь!!!

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Ср дек 16, 2020 15:54:33 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 256
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2089
Рейтинг сообщения: 0
Не знаю поддерживает ли GCC uint128_t?

Не поддерживает, а иногда было бы полезно, в основном на C++, т.к. там такой тип можно использовать на стадии компиляции.
По коду... Указатель - 4 байта, 8 пинов - 1 байт, итого 5, но по умолчанию структура выровняется и будет 8 байт на пин, а для M0, из-за отсутствия невыровненного доступа придется самому дополнять до 8 байт. Опять же в коде инициализация пинов для F1, если взять любую другую серию, то ее придется переделать и общий размер станет еще больше. У меня был байт на пин, хотя будет немного медленнее, что не существенно для и так в десятки раз более медленного подхода. И с классами в каждом новом проекте придется написать всего несколько строк, сама либа неизменна и просто копируется между проектами.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Ср дек 16, 2020 18:19:58 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 430
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2539
Рейтинг сообщения: 0
Код:
#define PORTA (GPIOA->ODR)

Пусть это и далеко не эффективный код, но он работает, и прекрасно работает.
Хоть бы через BSRR сделали.

Добавлено after 32 minutes 1 second:
И при этом вообще не видно никакой выгоды над С
Посмотри какую дичь Dimon456 сообщением выше сотворил. Всё потому что не может на С передать в функцию список пинов эффективно.

Зато тексты исходников получаются на порядок-два сложней,
Опять таки, несколько сообщений выше Reflector пример с std::size(pins) приводил. Сильно наглядней читается. Да и вообще код на уровне использования классов более читаемый получается. Вон Dimon456 с первого раза правильно применил шаблонный класс PinList - всё интуитивно понятно. Внутри библиотек, конечно, посложнее, но это лишь от отсутствия знаний.
компилируются они значительно дольше,
Да уж... 10-15 или 20 секунд прошивка собирается так принципиально. Вот когда FPGA 10-15 или 20 минут разводится, тут уже подумаешь стоит ли её по любому чиху перекомпилировать. Прошивка для микроконтроллера просто мухой компилируется.
да еще и неприятным "бонусом" является необходимость каждый год изучать, что там нового всякие козлы в С++ привнесли!
Стандарт раз в три года обновляют. Так редко "вкусняшки" завозят. При этом новое обратно совместимо со старым. Никто не заставляет сразу всё новое применять. Можно постепенно расширять границы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Ср дек 16, 2020 20:28:13 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
VladislavS писал(а):
пример с std::size(pins) приводил.
size() - функция компилятора, после компиляции это будет какое-то число.
size(pins) != size(pin_ns)/size(port_pin)
size(pins) - выдаст количество байт в массиве.
size(pin_ns)/size(port_pin) - выдаст, скажем так, количество строк.
Reflector писал(а):
По коду... Указатель - 4 байта, 8 пинов - 1 байт, итого 5
Структуру я поменял
Спойлер
Код:
typedef struct{
   volatile uint32_t * port;
   uint16_t            or;
} port_pin;
uint16_t определяет количество пинов в порту, а их 16 всего, 0-15.
Итого, по карте памяти, указатель 4 байта, 2 байта на порт, + выравнивание 2 байта, и того 8 байт.

Да же не в этом суть, это частный случай,
максимум что я буду иметь - это 20 выводной корпус F030, ну может быть F042,
а там 3 пина питание 2 еще куда-то, 2 может на кварц, и того - ни чего не остается.
У вы, паяльником, чем тазы паяют, 60 выводной корпус, да еще в добавок с таким мелким шагом и не в маем возрасте - это не запаяешь. Да еще и плату надо изготовить.
Уже давно почти все цепляют то по spi то по i2c, а делать на этих чипах какой-то "видео-регистратор" с 60 фпс на параллельном интерфейсе - ну не знаю. Проще, по моему, купить готовый, дешевле выйдет во много раз.

Если вы хотите преподнести С++ преподносите в каком нибудь другом формате, а подергать одним выводом, поморгать светодиодом, и для этого что? городить целый класс?
Проще скачать с инета готовую библиотеку и там уже разбираться.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Ср дек 16, 2020 21:03:14 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 430
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2539
Рейтинг сообщения: 0
size() - функция компилятора
Только не size(), а sizeof().
size(pin_ns)/size(port_pin) - выдаст, скажем так, количество строк.
std::size(pin_ns) выдаст то же самое.
Если вы хотите преподнести С++ преподносите в каком нибудь другом формате, а подергать одним выводом, поморгать светодиодом, и для этого что?
Для понимания. Всегда надо от простого к сложному переходить.
городить целый класс?
А почему нет? Что страшного в классе? Даже на простом светодиоде это уже имеет смысл. Вы описываете поведение этого объекта абстрагировавшись от того как и куда он подключен. Код получается универсальным. В программе вы просто инстанцируете его на каком-то порту. И не важно какой это микроконтроллер, какая полярность включения - всё будет работать как задумано. Или, например, типичная проблема С-программиста - сделать inline функцию. Начинают лепить макросы LED1_ON, LED1_OFF, LED2_ON и т.д. С классами решается на раз два.
Проще скачать с инета готовую библиотеку и там уже разбираться.
Кто-то же её должен написать? А если все будут только скачивать?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Ср дек 16, 2020 21:20:50 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
VladislavS писал(а):
Кто-то же её должен написать?
Наверно кто-то должен написать, может, вы?
VladislavS писал(а):
А если все будут только скачивать?
В большинстве случаев так и делают.
Вы еще предложите fat с нуля написать, будет интересно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Ср дек 16, 2020 21:35:08 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 430
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2539
Рейтинг сообщения: 0
Наверно кто-то должен написать, может, вы?
Пошёл второй шнурок гладить :)))
Вы еще предложите fat с нуля написать, будет интересно.
И чего в нём интересного? На один вечер скушного кодинга по спецификации.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Ср дек 16, 2020 21:42:19 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
VladislavS писал(а):
И чего в нём интересного? На один вечер скушного кодинга по спецификации.
Не, одним это дано, а другим нет. Мне это не дано, я научился только готовое использовать.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Ср дек 16, 2020 21:46:10 
Прорезались зубы
Аватар пользователя

Карма: 2
Рейтинг сообщений: 14
Зарегистрирован: Сб янв 09, 2016 15:51:17
Сообщений: 202
Рейтинг сообщения: 0
Я вот могу написать, но никто не просит. Могу утюг для VladislavS подогнать, для ускорения.

_________________
sRtoS


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Ср дек 16, 2020 23:04:46 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 256
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2089
Рейтинг сообщения: 0
Структуру я поменял
Спойлер
Код:
typedef struct{
   volatile uint32_t * port;
   uint16_t            or;
} port_pin;
uint16_t определяет количество пинов в порту, а их 16 всего, 0-15.
Итого, по карте памяти, указатель 4 байта, 2 байта на порт, + выравнивание 2 байта, и того 8 байт.

Было 8 байт на пин и осталось 8 байт на пин. Если это попытка передать сразу 16 пинов в виде маски, то работать не будет в силу невозможности таким образом передать информацию о порядке этих пинов.

Цитата:
Да же не в этом суть, это частный случай,
максимум что я буду иметь - это 20 выводной корпус F030, ну может быть F042,
а там 3 пина питание 2 еще куда-то, 2 может на кварц, и того - ни чего не остается.

Насколько я помню плеер ARV рассчитанный на mega328 ты запускал на mega128 и еще какие-то часы собирал на mega8, а тут вдруг с 64-х и 28-32-х ног максимум опустился до 20-ти :) Причем у LQFP32 шаг 0.8mm, а у TSSOP20 - 0.65mm...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Чт дек 17, 2020 06:00:47 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Reflector писал(а):
Было 8 байт на пин и осталось 8 байт на пин.
Было 16 байт на пин. Не важно.
Reflector писал(а):
на mega128
была запаяна на плате, я просто отрезал лишнее. Фото приложить?
мага8 в дип корпусе.
Reflector писал(а):
максимум опустился до 20-ти
Ценник играет важную роль.
А как то 15$ за кусок платы 10*10 я брать точно не буду. Сам изготовить этот кусок платы я то же не смогу, из материалов у меня текстолит и рапидограф, даже принтера нет, так что шаг в 0.8mm я точно не осилю.

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

Если вы хотите преподнести С++ преподносите в каком нибудь другом формате, spi, i2c, а то люди всякий hal да cmsis используют, да в добавок мало примеров, чего только i2c в F030 стоит.
Вот на это упор делайте, может кто и заинтересуется. А вы ...
VladislavS писал(а):
не может на С передать в функцию список пинов эффективно
Да кому это нужно? Это, в первую очередь, вам нужнее, а не мне.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Чт дек 17, 2020 08:16:53 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 430
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2539
Рейтинг сообщения: 0
Если вы хотите преподнести С++ преподносите в каком нибудь другом формате, spi, i2c, а то люди всякий hal да cmsis используют, да в добавок мало примеров, чего только i2c в F030 стоит.
Перечитайте название темы! Мы показываем примеры кода с результатом компиляции в асм, которые отвечают на поставленный вопрос. Если у вас проблемы с I2C, создайте тему да обсуждайте. Чего там такого сложного то? Класс I2C у меня что-то около 3-4 экранов кода.
Вот на это упор делайте, может кто и заинтересуется. А вы ...
Приходят такие студенты первого курса на лекцию по матану и с порога профессору: чего ты нам про производные втираешь, давай сразу преобразование Лапласа. Давай уравнение Шрёдингера - требуют у физика. Вы сначала пинами дёргать не через ODR научитесь.
Да кому это нужно? Это, в первую очередь, вам нужнее, а не мне.
У меня при общении с вами возникает устойчивое ощущение, что я вам должен. Не припомню что-то такого.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Чт дек 17, 2020 14:11:34 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 256
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2089
Рейтинг сообщения: 0
была запаяна на плате, я просто отрезал лишнее. Фото приложить?

Что это меняет? Устаревший F103 популярен в первую очередь из-за дешевых Blue Pill и в целом плат где мк уже уже запаян в избытке.

Цитата:
мага8 в дип корпусе.
Ценник играет важную роль.
А как то 15$ за кусок платы 10*10 я брать точно не буду. Сам изготовить этот кусок платы я то же не смогу, из материалов у меня текстолит и рапидограф, даже принтера нет, так что шаг в 0.8mm я точно не осилю.

Шаг 0.8 не осилю, а 0.65 осилю? $15 за кусок платы жалко, 20 центов на переходник для lqfp32 тоже жалко?

Цитата:
Если вы хотите преподнести С++ преподносите в каком нибудь другом формате, spi, i2c, а то люди всякий hal да cmsis используют, да в добавок мало примеров, чего только i2c в F030 стоит.

Классы для SPI/USART/I2C ничем принципиально от класса портов не отличаются кроме того, что они значительно проще, потому никакого нового формата не будет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Чт дек 17, 2020 16:21:43 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
VladislavS писал(а):
Приходят такие студенты первого курса на лекцию по матану и с порога профессору:
Не знаю как там дела с профессором обстоят, у меня образование 5 классов церковно-приходской, и те под мостом, в одной руке коньки в другой клюшка. То есть я не был знаком с профессором.
VladislavS писал(а):
Вы сначала пинами дёргать не через ODR научитесь.
А что не так с ODR?
VladislavS писал(а):
что я вам должен.
Не, вы мне ни чего не должны.

Reflector, мне пока не попадались платы с STM на борту.
Платы с Атмегой с какого-то оборудования Российского производства, на платах Индезит какие-то другие МК стоят.

Переходник для lqfp32, шибко не рылся у китайцев, но комплект из 5шт 1,35$ +доставка 0,82$ = итог 2,17$, какие 20 центов?
А что за STM в таком корпусе?
Может быть, когда нибудь. А пока, лень, постарел я, лет так 10-15 назад бы, лень, я танк покатаю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Чт дек 17, 2020 18:05:33 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 430
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2539
Рейтинг сообщения: 0
А что не так с ODR?
Вот этот ваш код
Код:
if (data & s)
  *p->port |= p->or;
else
  *p->port &= ~(p->or);
можно сократить в три раза.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Чт дек 17, 2020 20:13:58 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
VladislavS писал(а):
можно сократить в три раза
Давайте, сократите в три раза.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Чт дек 17, 2020 20:52:53 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 430
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2539
Рейтинг сообщения: 0
Давайте, сократите в три раза.

Не, вы мне ни чего не должны.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Чт дек 17, 2020 21:38:06 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
VladislavS, а может потому что нельзя сократить, только усложнить?

Давайте я попробую:
Помнится вы что-то писали про регистр BSRR.
Регистр BSRR 32 битный, я должен хранить 32 битное значение, условно BR(31-16)+BS(15-0) бит.
Установленный бит BS имеет приоритет перед BR, что бы BR сработал я должен сбросить BS.
Хорошо бы использовать регистр BRR для сброса, но для этого потребуется хранить еще один 4-ех байтный указатель.

Так что сократить не получится, только усложнить.
Спойлер
Код:
typedef struct{
   volatile uint32_t * port;
   uint32_t            or;
   uint32_t            and;
} port_pin;

#define PORTA (GPIOA->BSRR)
#define PORTB (GPIOB->BSRR)
#define PORTC (GPIOC->BSRR)

#define pn(p,b) {&PORT ## p, (1<<b), (1<<(b+16))}

      if (data & s)
         *p->port |= p->or;
         else {
         *p->port |= p->and;
          *p->port &= ~(p->or); }
PS: да и, код не мой, я просто его использую, он максимально сокращен, больше сокращать тут не чего.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Ассемблер для STM32. Сложно ли, стоит ли пытаться?
СообщениеДобавлено: Чт дек 17, 2020 22:23:47 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 430
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2539
Рейтинг сообщения: 0
Хорошо бы использовать регистр BRR для сброса, но для этого потребуется хранить еще один 4-ех байтный указатель.
В ветке про асм стыдно не знать, что доступ к BSRR и BRR можно через один указатель получить.
Так что сократить не получится, только усложнить.
Получится. И именно в самом важном месте этого метода - в теле цикла. Пробуйте и смотрите листинги.

ЗЫ: Чуть не забыл, даже без BRR можно, там где его нет.

Спойлер
VladislavS, а может потому что нельзя сократить, только усложнить?
Хочу заметить, что я уже тоже не мальчик и просто так слова на ветер не бросаю.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 291 ]     ... , , , 11, , , ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y