STM32 новичку в ARM что к чему
- Сообщения: 6457
- Зарегистрирован: Пт сен 13, 2013 13:11:31
Не, не преувеличивайте. "Нельзя" никто не говорит. Говорят "глупо".
- Реклама
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
[uquote="VladislavS",url="/forum/viewtopic.php?p=3904199#p3904199"]Раст то тебе что плохого сделал???[/uquote]
Мне одного этого ублюдства с вики:
Хватило, чтобы понять, какое говно этот ваш педеRust!
Мне одного этого ублюдства с вики:
Код: Выделить всё
match x {
1 | 2 => println!("один или два"),
3 => println!("три"),
_ => println!("что угодно"),
}Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
Блин, парни срач устроили.
У меня вопрос
К кому можно обратится за помощью ( Платной ) в обучении. F4
с нуля.
У меня вопрос
К кому можно обратится за помощью ( Платной ) в обучении. F4
с нуля.
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
Погоди немного, скоро помощника совсем отпустит - всему научит. Вон уже зарок потёр 
[uquote="Reflector",url="/forum/viewtopic.php?p=3903927#p3903927"]И т.д., там много всего. С виду код высокоуровневый, но он практически весь выполняется на этапе компиляции.[/uquote]
Ниче не понял. Как он может разбивать шину данных с разбросанными пинами по разным ножкам в регистр bsrr ведь, управляющие понятно как, но данные на этапе компиляции не делаются же, только в рантайме можно анализировать байты и собирать маску. Либо код ассемблера не весь был показан и нас держут за лохов, либо такой функции нет и шина данных может быть только кратно байту, а управляющие пины любые. Потому что не складывается код в логику.
Должен быть код который будет собирать маску. Во вторых должен быть код который добавит запись в другие порты .A B C и так далее.
Ниче не понял. Как он может разбивать шину данных с разбросанными пинами по разным ножкам в регистр bsrr ведь, управляющие понятно как, но данные на этапе компиляции не делаются же, только в рантайме можно анализировать байты и собирать маску. Либо код ассемблера не весь был показан и нас держут за лохов, либо такой функции нет и шина данных может быть только кратно байту, а управляющие пины любые. Потому что не складывается код в логику.
Должен быть код который будет собирать маску. Во вторых должен быть код который добавит запись в другие порты .A B C и так далее.
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
- Реклама
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
[uquote="Oxford",url="/forum/viewtopic.php?p=3904356#p3904356"]Должен быть код который будет собирать маску. Во вторых должен быть код который добавит запись в другие порты .A B C и так далее.[/uquote]
Не боись, код есть. Но "они скрывают"!
Не боись, код есть. Но "они скрывают"!
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
С управляющими любыми на этапе компиляции я могу препроцессор запрограммировать, но если и данные надо то это нужно 8 бит анализировать в какие порты и какие биты записывать. Это дополнительный код будет в рантайме. Потому что данные неизвестны на этапе компиляции.
Поэтому нужно разобраться с шиной данных чтобы я смог правильно код написать на си
Поэтому нужно разобраться с шиной данных чтобы я смог правильно код написать на си
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
[uquote="Oxford",url="/forum/viewtopic.php?p=3904356#p3904356"]но данные на этапе компиляции не делаются же, только в рантайме.[/uquote]
Берем 8 пинов в старшей половине порта, получаем запись в половину ODR:
Сдвигаем пины в середину и указываем в обратном порядке, компилятор автоматические добавит сдвиг и RBIT, а запись теперь будет выполняться в BSRR:
Теперь возьмем пины с двух портов:
Далеко не для всех это очевидно, но данный список пинов удобен для обработки, т.к. на PB5 проецируется 0-й бит входных данных, на PB6 - первый, на PB8 - 3-й и т.д., т.е. разница между номером пина и номером бита везде равна пяти и это означает, что можно одной маской выделить сразу 4 бита для PB, а другой - сразу 4 бита для PC, затем полученные значения сдвигают и накладываются на посчитанные маски для BSRR, которые по 4 бита очищают. Это обобщенный алгоритм, даже для первого случая, когда писался байт в ODR, все рассчитывалось именно так, но на заключительной стадии записи в регистр выполняется дополнительная оптимизация в результате которой компилятор решает сохранять данные именно как байт, следовательно не нужно дополнительно ничего очищать и сдвигать.
Далее можно взять этот список и добавить к нему парочку управляющих сигналов:
Теперь в списке 10 пинов, при записи 8-ми битного значения в управляющие сигналы запишутся нули, если новых портов не добавилось, то получим дополнительно одну инструкцию.
Берем 8 пинов в старшей половине порта, получаем запись в половину ODR:
Код: Выделить всё
PinList<PB15, PB14, PB13, PB12, PB11, PB10, PB9, PB8> pins;
pins.write(GPIOA->IDR);
// ldr r3, [r3, #16]
// ldr r2, [pc, #700]
// uxtb r3, r3
// strb r3, [r2, #0]
Код: Выделить всё
PinList<PB3, PB4, PB5, PB6, PB7, PB8, PB9, PB10> pins;
pins.write(GPIOA->IDR & 0xFF);
// ldr r3, [r3, #16]
// uxtb r3, r3
// rbit r3, r3
// lsrs r3, r3, #21
// ldr r6, [pc, #708]
// and.w r3, r3, #0x7f8
// orr.w r3, r3, #0x7f80000
// str r3, [r6, #24]
Код: Выделить всё
PinList<PC13, PB11, PC11, PC10, PB8, PC8, PB6, PB5> pins;
pins.write(GPIOA->IDR & 0xFF);
// ldr r3, [r3, #16]
// ldr r1, [pc, #508]
// ldr r6, [pc, #508]
// uxtb r3, r3
// lsls r2, r3, #6
// lsls r3, r3, #5
// and.w r2, r2, #0x2d00
// and.w r3, r3, #0x960
// orr.w r2, r2, #0x2d000000
// orr.w r3, r3, #0x9600000
// str r2, [r1, #24]
// str r3, [r6, #24]
Далее можно взять этот список и добавить к нему парочку управляющих сигналов:
Код: Выделить всё
using Data= PinList<PC13, PB11, PC11, PC10, PB8, PC8, PB6, PB5>;
PinList<WR, RS, Data>::write(GPIOA->IDR & 0xFF);
Как я и говорил бестолковое программирование на С++. За это увольнять надо за такой код.
Я такой исход и предполагал. Ничего нового.
Это не обобщенное программирование это бредятина.
Я такой исход и предполагал. Ничего нового.
Это не обобщенное программирование это бредятина.
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
[uquote="Oxford",url="/forum/viewtopic.php?p=3904391#p3904391"]Я такой исход и предполагал. Ничего нового.[/uquote]
Я думал ты предполагал дополнительный код в рантайме, показалось наверное
Я думал ты предполагал дополнительный код в рантайме, показалось наверное
Так он и есть дополнительный код генерируется. Производительность будет плавать. На этапе компиляции просто создается код для рантайма как будет обрабатываться маска.
На Си мне такое никогда не требовалось, так как все гораздо проще программируется.
Никогда этим голову не забивал, и другим не советую.
Так как максимальная производительность будет когда все 8 пинов в одном байте. Другие варианты я даже не рассматриваю еще на этапе дизайна и выбора МК, потому как разбросанные пины шины не гуд.
Это просто ты себе проблему создал про разные пины и начал ее решать на C++.
DMA тоже гемморой прикрутить будет, особенно с разбросанными пинами.
Поэтому не надо голову всякой дрянью забивать себе и людей баламутить.
А так все понятно теперь. Спасибо С++ мне не надо, я дальше как все на Си буду прогать.
https://habr.com/ru/post/474732/
На Си мне такое никогда не требовалось, так как все гораздо проще программируется.
Никогда этим голову не забивал, и другим не советую.
Так как максимальная производительность будет когда все 8 пинов в одном байте. Другие варианты я даже не рассматриваю еще на этапе дизайна и выбора МК, потому как разбросанные пины шины не гуд.
Это просто ты себе проблему создал про разные пины и начал ее решать на C++.
DMA тоже гемморой прикрутить будет, особенно с разбросанными пинами.
Поэтому не надо голову всякой дрянью забивать себе и людей баламутить.
А так все понятно теперь. Спасибо С++ мне не надо, я дальше как все на Си буду прогать.
https://habr.com/ru/post/474732/
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
[uquote="Oxford",url="/forum/viewtopic.php?p=3904396#p3904396"]https://habr.com/ru/post/474732/[/uquote]
В статье описан полуфабрикат который даже write/read() не умеет, а set/reset() - это простые функции, объединил маску каждого пина и получил общую, даже порядок пинов не важен, не говоря уже о каком-то дополнительном анализе.
В статье описан полуфабрикат который даже write/read() не умеет, а set/reset() - это простые функции, объединил маску каждого пина и получил общую, даже порядок пинов не важен, не говоря уже о каком-то дополнительном анализе.
Reflector а с DMA будет пример назначения разных пинов.
да еще и строб надо будет пихнуть.
Или только ногодрыг могем?
Блин и все это ради того чтобы не покупать 100 ногий и не юзать FSMC + DMA
ну или SPI дисплей просто взять
Есть же специальные интерфейсы
А так в принципе очередная ардуино либа там тоже никто не заморачивался над оптимизацией и обьемом кода, важна была универсальность.
Или только ногодрыг могем?
Блин и все это ради того чтобы не покупать 100 ногий и не юзать FSMC + DMA
Есть же специальные интерфейсы
А так в принципе очередная ардуино либа там тоже никто не заморачивался над оптимизацией и обьемом кода, важна была универсальность.
Инженер R@D
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Telegram чат: https://t.me/radiowolf или в поиске приложения @radiowolf. Личка:@cncoxford
Подскажите пожалуйста, с какой средв разработки надо начинать изучать программирование на STM32FXXX
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
[uquote="u-vovchika",url="/forum/viewtopic.php?p=3904454#p3904454"]с какой среды[/uquote]С той, в которой удобно работать!
Можно и просто по F4 в mcedit/vim/nano код наколачивать...
Можно и просто по F4 в mcedit/vim/nano код наколачивать...
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
А STM32CubeIDE пойдет ??
И к кому можно обратится с просьбой обучить меня ???
И к кому можно обратится с просьбой обучить меня ???
- Сообщения: 56
- Зарегистрирован: Вт дек 29, 2015 11:33:49
[uquote="u-vovchika",url="/forum/viewtopic.php?p=3904466#p3904466"]А STM32CubeIDE пойдет ??
И к кому можно обратится с просьбой обучить меня ???[/uquote]
Хм, неужто сенсей еще личку не заспамил ))))
А чем открытые источники знаний не устраивают?
И к кому можно обратится с просьбой обучить меня ???[/uquote]
Хм, неужто сенсей еще личку не заспамил ))))
А чем открытые источники знаний не устраивают?
[uquote="pavell",url="/forum/viewtopic.php?p=3904499#p3904499"][uquote="u-vovchika",url="/forum/viewtopic.php?p=3904466#p3904466"]А STM32CubeIDE пойдет ??
И к кому можно обратится с просьбой обучить меня ???[/uquote]
Хм, неужто сенсей еще личку не заспамил ))))[/uquote]
Это как ??
Добавлено after 1 minute 5 seconds:
[uquote="pavell",url="/forum/viewtopic.php?p=3904499#p3904499"][uquote="u-vovchika",url="/forum/viewtopic.php?p=3904466#p3904466"]А STM32CubeIDE пойдет ??
И к кому можно обратится с просьбой обучить меня ???[/uquote]
А чем открытые источники знаний не устраивают?[/uquote]
Устраивают конечно, чем и занимаюсь. Но от личного общения и учения, не откажусь
И к кому можно обратится с просьбой обучить меня ???[/uquote]
Хм, неужто сенсей еще личку не заспамил ))))[/uquote]
Это как ??
Добавлено after 1 minute 5 seconds:
[uquote="pavell",url="/forum/viewtopic.php?p=3904499#p3904499"][uquote="u-vovchika",url="/forum/viewtopic.php?p=3904466#p3904466"]А STM32CubeIDE пойдет ??
И к кому можно обратится с просьбой обучить меня ???[/uquote]
А чем открытые источники знаний не устраивают?[/uquote]
Устраивают конечно, чем и занимаюсь. Но от личного общения и учения, не откажусь
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
[uquote="u-vovchika",url="/forum/viewtopic.php?p=3904466#p3904466"]А STM32CubeIDE пойдет ??[/uquote]
Калокуб - плохая идея...
Калокуб - плохая идея...
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Я на гитхабе, в ЖЖ
[uquote="Eddy_Em",url="/forum/viewtopic.php?p=3904532#p3904532"][uquote="u-vovchika",url="/forum/viewtopic.php?p=3904466#p3904466"]А STM32CubeIDE пойдет ??[/uquote]
Калокуб - плохая идея...[/uquote]
"кокос" ????
Калокуб - плохая идея...[/uquote]
"кокос" ????


