здрасьте здрасьте люди добрые. скажите пожалуйста как правильно включить тактирование? МК stm32f103c8. нарыл что порты ввода|вывода расположены на шине APB2. причем все порты. нельзя включить отдельно порт допустим
GPIO A
GPIO B
можно только подать тактирование на шину
APB2
нахожу
RCC_APB2ENR
в этом регистре нахожу бит
IOPC// так как светодиод висит у меня на PC13
и теперь видимо мне нужно его выставить в едниницу.
нахожу в memory map вижу адрес не APB2 а RCC
RCC 0x40021000
и правильно ли я понимаю что теперь чтобы мне включить бит нужно вычислить адрес по формуле
40021000-40000000=offset
(offset*32)+(4*4)
потому что (4*4) IOPC=4 битом
поправте пожалуйста уважаемые форумчане меня. я не совесем понимаю как правильно считать
я с вами не спорю. я у вас учусь. с удовольствием читаю то что вы пишите в темах. мне намного интересней учиться общаясь с МК напрямую без IDE. поэтому с большим вниманием отношусь к тому что вы говорите. хотя без того примера, который(куска кода), что написал Anonymous ничего бы не получилось. даже если он и пернул в лужу,как вы выразились, то сделал это настолько грамотно, что вряд ли кто повторит! его кусок кода = 1000комментов что были в той теме. хотя они и были посути ниочем. кроме ваших.
Вот примерно так и происходит разработка. Естественно, это я здесь расписывал подробно, шаг за шагом свои действия, чтобы даже Assembler понял. В реальности проверяется отнюдь не каждый шаг, а только сомнительные. Но суть та же - берем заведомо работоспособный вариант и пытаемся привести к неработоспособному. Когда очередным изменением кода мы добились, что код ведет себя не так, как ожидалось - мы нашли первую ошибку. Исправляем и ищем следующую.
когда я написал шаблон, сможете реализовать битбанд на оперативке?
вам что психологически нездоровиться? я же написал еще утром, что тема решена и закрыта. вы только сейчас сами научились Bit Band и слава богу и спасибо за это Anonymous, но давайте не будет тут тренироваться высчитивать Bit Band. делайте это на листочке дома.
вы только сейчас сами научились Bit Band и слава богу и спасибо за это Anonymous
Да, только сейчас научился, потому что bitband почти нигде не применяется. И показал вам как этот процесс обучения происходит у здорового человека. Можете сравнить со своим.
У тебя тоже не очень: нужно определять все эти RCC_APB2ENR_IOPBEN_Pos и т.п. Тогда уж логичней будет из структуры смещение вычислить, вычитая (&RCC->APB2ENR - RCC).
Как грубо. А ты представь, что я новичок. Вот ты дал мне какой-то сниппет. И что мне с этим делать? Оно не запускается.
Где документация к этому:
void __attribute__((weak)) _init(void){} //костыли для стандартного стартапа
void __attribute__((weak)) SystemInit(void){}
Как мне прочитать статусный регистр? Как настроить маску прерываний? Как отправить проц в сон? Где про всё это можно почитать, в контексте программирования на Си и с использованием «stm32f1xx.h»?
И ты хочешь сказать, что для новичка это просто всё?
У тебя тоже не очень: нужно определять все эти RCC_APB2ENR_IOPBEN_Pos
Зачем? Их ST в заголовочнике прописали. Я ведь в начале отдельно завел клоны стандартных регистров, чтобы продемонстрировать как вычисляются адреса, а потом заменил на стандартные.
Плюс когда используются стандартные имена регистров, это повышает читаемость кода, проще разобраться.
Вот поэтому сначала новичку нужно дать сишный стартап, линкер-скрипт и Makefile. Ну и объяснить, откуда скачать заголовочные файлы CMSIS и периферии конкретной серии МК.
А дальше все у него будет компиляться. Скажем, с моим линкер-скриптом и стартапом код COKPOWEHEU тоже не будет собираться.
Как пытаться подловить на слове или обвинять в некомпетентности, так нормально, а как отвечают тем же, так «грубо».
Вот ты дал мне какой-то сниппет.
Я дал алгоритм, а не готовый код. Если бы ты хотел им воспользоваться, ты бы его прочитал, а не искал за что зацепиться.
Как мне прочитать статусный регистр? Как настроить маску прерываний? Как отправить проц в сон? Где про всё это можно почитать, в контексте программирования на Си и с использованием «stm32f1xx.h»?
Какое это имеет отношение к моему примеру? В моих проектах и сон, и прерывания, и все остальное работает. Собственно, шаблон кода я выдернул из своей реализации USB, только поубирал все лишнее.
И ты хочешь сказать, что для новичка это просто всё?
Разумеется, нет. Именно поэтому надо не попрошайничать на форумах, а учиться искать ответы самостоятельно.
Для того же USB ну вот нет готовой вменяемой библиотеки, сколько ни спрашивай по форумам. Либо HAL’овое убожество, либо не все реализовано и с неочевидным использованием. Не то чтобы мою было так просто использовать…
Ну и объяснить, откуда скачать заголовочные файлы CMSIS и периферии конкретной серии МК.
Ну так и откуда?
А вот это важный вопрос! Потому что готовых примеров кода, не тянущих за собой хвост из HAL’а или всяких IDE и собирающихся обычным make’ом довольно трудно. Но все же можно. Как минимум, мои шаблоны в открытом доступе уже лежат. Но в данном случае это, думаю, больше академический вопрос: Ассемблер доволен говнокодом Анонимуса и бегает с ним - ему мой код вроде без надобности. У Эдди свои наработки. А местному анонимусу нужен не код, а повод.
Если бы ты хотел им воспользоваться, ты бы его прочитал, а не искал за что зацепиться.
Так я хочу. Что мне надо сделать, чтобы его скомпилировать-то, скажи?
Какое это имеет отношение к моему примеру? В моих проектах и сон, и прерывания, и все остальное работает.
А такое, что ты сам предлагал начать с простого и потом пробовать что-то дописывать. А как я буду дописывать без документации? Я даже не знаю с какой буквы начать что-то писать.
В моих проектах и сон, и прерывания, и все остальное работает.
Опять послал нахер новичка, получается.
Разумеется, нет. Именно поэтому надо не попрошайничать на форумах, а учиться искать ответы самостоятельно.
Так…
Вы собрали минимальный работоспособный код, на котором можно экспериментировать?
А то берете адреса фиг знает откуда и фиг знает зачем, а потом крики «что я делаю не так». Вот именно это - попытка угадать ответ вместо последовательного изучения и понимания что и зачем делается. Алгоритм отладки я вам тоже уже расписал - строим минимально рабочий код и тестируем новые фичи по одной, чтобы сразу видеть какую именно не понимаем. Если не лень будет вечером откопаю платку с f103 и по шагам покажу как это делается. Не на асме, а на Си, разумеется.
Это не твои слова что ли? Это называется ты показал как по шагам собрать минимальный работоспособный код? Да иди ты сам туда, понял.
ты неделю просидел в моих темах, где мне объясняли люди как надо работать с МК еще один день в этой теме и заявляешь мне что ты начитался манов и все понял? раскажи тем кто не знает, здоровый ты наш человек. по манам ты бы до сих пор не разобрался если бы тебе Anonymous не разложили все по полочкам. ты только вторил как попогай: маны, маны, читайте маны! хотя сам из них ничего понять не мог и ждал когда же наконец кто-нибудь объяснит. вобщем поблагодари Anonymous и срули с этой темы.
Не новичка, а тролля, не путай. Ты тут ко мне чуть ли не с начала темы цеплялся.
Это не твои слова что ли? Это называется ты показал как по шагам собрать минимальный работоспособный код?
Еще раз: это не готовый код, это алгоритм решения простой задачи на примере задачи Ассемблера. У него ведь проблема не с кодом была, а с непониманием что с кодом делать дальше.
я заглянул в makefile и понял, что для новичка это не прояснения, а затмение. там опять все скрыто, и все из области : тыкни там, нажми здесь, запусти это. все СИ с их кучей макросов, которые похожи на шифр Энигмы, не помогут. Только код Anonymuous на assemblere пролил свет, только его пример. все остальное филькина грамота.
по манам ты бы до сих пор не разобрался если бы тебе Anonymous не разложили все по полочкам
Ты читать вообще не умеешь? Я раз десять сказал, что и не начал бы разбираться с bitband’ом, потому что не нужен он. А с тем, что нужно - сном, таймерами, UART’ом, USB - разбирался по манам, чужим исходникам и статьям. Что считаю полезным - описываю статьями хотя бы на Хабре.
Ты дал код. Неполный. Нерасширяемый. Без документации. Без инструкции сборки и настройки окружения. Он не компилируется. Ну и кто после этого тролль?
Всё, что ты показал — это только твой пустой гонор и твоё отношение к аудитории и больше ничего. С тем же успехом мог просто, под честное слово сказать, что у тебя всё работает. Научил, ага.
А теперь усложни задачу и поменяй программно яркость. Или навесь кнопку, которая на каждое нажатие будет включать или выключать светодиод. Или навесь дисплей. Или датчик какой. Быстро поймешь, что твой код это одноразовое днище, которое ничему не учит. Ведь без помощи анонима ты ничего не сделаешь.
ну я не видел сам код. да и ниселен чтобы давать советы. это фрагмент кода из темы, который написал Anonymous
Это точно. Потому что для Си-шного кода надо еще указать флаги компилятора, указать пути к заголовочным файлам, отключить стандартные библиотеки, а потом линковщику указить файл сборочного скрипта. В общем, немножко больше действий. И все они специфичны для окружения - где хранятся библиотеки, какой используется компилятор. Короче, от вашей «подсказки» толку не больше, чем от кода того Анонимуса.
Последовательность вызовов будет скорее такой (вырвано на глазок из makefile’а):
А теперь усложни задачу и поменяй программно яркость
А не слишком резкий скачок? Это ведь надо либо программный, либо аппаратный ШИМ городить. Ассемблер небось и слов-то таких не знает.
Вот кнопка - хорошо. Два светодиода с разной частотой тоже.
Семисегментник совсем наглядно продемонстрирует убожество bitband подхода. А вот BSRR с ним справляется неплохо.
Потому что для Си-шного кода надо еще указать флаги компилятора, указать пути к заголовочным файлам, отключить стандартные библиотеки, а потом линковщику указить файл сборочного скрипта.
какие же вы есть! намного проще написать код и скомпилировать на Assembler, но вы меня одговоривали и убеждали что надо делать на CИ. короче вопрос исчерпан.
здесь начать проще с чужого шаблона, и только потом разбираться в его магии
То есть ты предлагаешь начать с рабочего шаблона доброго дяди, а сам при этом огрызаешься и шлёшь новичков нахер? Так тебе повезло просто, что дядя добрый был. И теперь ты на этой счастливой случайности, получается, пытаешься выехать.
Ну и наконец-то разобрались, кто тут на самом деле ардуинщик-говнокодер.
ты почитай мои комменты. я точно самое и говорю. где я сказал что это мое и что я сам написал. я сказал, что все ваши советы кроме этого кода что написал Anonymous -дерьмо. и что я только начинаю. это третий день моего знакомства с МК. так о чем ты говоришь? или вы просто хотите посмотреть что я могу? ну так я тут перед вами не стану хвост пушить. я не кого не учу, псевдоновичок что выше хотел посмотерть код как пример. я ему дал пример от Anonymous.
А не слишком резкий скачок? Это ведь надо либо программный, либо аппаратный ШИМ городить. Ассемблер небось и слов-то таких не знает.
Ну можно взять пример с ШИМ для куба или hal’а из chibios и поразбираться, какие параметры на что влияют. Вполне доступно для новичка. ТС уже микроменеджментом пытается заниматься, хотя даже общую картинку не представляет.
Да в этом даже я не разберусь! При том, что человеческими способами ШИМ делается просто. А параметры - да какие у ШИМ параметры. Скважность да частота.
Хотя если удастся ТСу объяснить что такое ШИМ, может программную реализацию и осилит. Правда, ограничений битбанда на ней видно не будет - единственный диод же. На таймерах с текущими знаниями не осилит.