LINUX.ORG.RU

включить тактирование

 


0

1

здрасьте здрасьте люди добрые. скажите пожалуйста как правильно включить тактирование? МК 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 битом
поправте пожалуйста уважаемые форумчане меня. я не совесем понимаю как правильно считать



Последнее исправление: Assembler (всего исправлений: 1)

Ответ на: комментарий от anonymous

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

Assembler
() автор топика
Ответ на: комментарий от anonymous

если можете просто скажите что у меня неправильно. зачем ссылки?

Assembler
() автор топика
Ответ на: комментарий от Assembler

почему там IOPC вдруг вторым битом?

потому что пример от процессора другой серии, тут 4-м

http://dimoon.ru/obuchalka/stm32f1/programmirovanie-stm32-chast-5-portyi-vvoda-vyivoda-gpio.html

этими примерами инет завален - почему вы не можете читать ?

anonymous
()
Ответ на: комментарий от anonymous

этими примерами инет завален

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

Assembler
() автор топика

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

Нет. Этим извращением пользоваться вообще не надо. Читаете регистр, накладываете маску, записываете обратно.

Псевдокод на Си:

temp = RCC_APB2ENR;
temp = temp | RCC_APB2ENR_GPIOCEN;
RCC_APB2ENR = temp;

Считать все эти адреса и биты лично мне лень: ST свели их в заголовочный файл, вот пускай машина оттуда и читает. А я именованные константы ей называть буду.

то есть если я задаю вопрос на техническом форуме о касаемо МК и прошу знающих людей посмотреть где запутался, то

То есть если вы задаете вопрос, который обсуждался ВЕЗДЕ и обсосан со всех сторон, это говорит, что вы не хотите учиться. А значит, будете задавать подобные вопросы и дальше. Решать какие-то свои задачи за счет форумчан, ничего не давая взамен.

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

COKPOWEHEU
()

https://clbin.com/EpHmH
Такую штуку собирал чтобы проверять новые мк. Блинк на гнутом асме с delay в виде nop на всю возможную флеш память. Но сейчас там конкретно вариация для F411

bga_ ★★★★
()
Ответ на: комментарий от bga_
.word 0,0,0,0,0

Зачем это?

ldr r0,=40023800        /* RCC: Reset/Clock Control */
   ldr r1,[r0,#0x18]         /* APB2ENR: peripheral clock enable */

Неужели так трудно использовать именованные константы!

 .rept (512 * 1024 - 0x19c) / 2 
   nop
 .endr

Это чтобы прошивалось подольше?

COKPOWEHEU
()
Последнее исправление: COKPOWEHEU (всего исправлений: 1)
Ответ на: комментарий от COKPOWEHEU

мне есть что вам сказать. давайте потом.

странные вы. Анонаймус правильно сказал, что те кто пользуются кубами и кеилами, вы поголовке гладите, охотно заходите и объясняете. хотя этой дряни на ютубе и везде хоть завались. Но если кто-то зашел с просьбой помочь разобраться действительно в сложном вопросе, вы или игнорите или советуюете фигню, чтобы человек не разобрался. вы можете дать нормальный ответ, и посути тема закрыта! не сильно то я вопросами уж и достаю. я только спросил в что неправильно?

переведу в 16 в 10

0x40021000=1073876992
0x40000000=1073741824
0x42000000=1107296256
найду смещение. так как адрес RCC -0x40021000

(0x40021000=1073876992)-(0x40000000=1073741824)=135168
умножаю на 32
(135168*32)

и так как в таблице номер бита IOPC =4 то (135168*32)+(4*4)=4325392 прибавляю 4325392+(0x42000000=1107296256) получаю 1111621648 перевожу в 16 получаю

0x42420010

что неправльно?

Assembler
() автор топика
Ответ на: комментарий от COKPOWEHEU

Я особо не вникал в код. Взял его с гитхаба. Только хотел всю флеш память на запись проверить забив nop ами.
В этом коде сложно что то понять. Куча магических значений.
Вроде как в асме можно подключать си заголовки с константами если они сделаны через #define

bga_ ★★★★
()
Ответ на: комментарий от Assembler

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

Что-то я не помню чтобы гладил кого-то по головке за использование Куба

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

То есть совет не заниматься фигней и прочитать наконец учебник вы считаете фигней?

Хотите не-фигню? Забудьте, что можно задать вопрос в интернете. Искать информацию можно, что-то скачивать можно. А спрашивать - нельзя. Ищите, экспериментируйте, читайте - учитесь решать свои задачи самостоятельно, не побираясь по форумам.

вы можете дать нормальный ответ, и посути тема закрыта!

А потом открыто три новых, не менее дурацких. А потом приходит еще один халявщик и открывает точно такие же темы.

(0x40021000=1073876992)-(0x40000000=1073741824)=135168 умножаю на 32 (135168*32) что неправльно?

Использование bitband’а неправильно в данной задаче. Дальше можно не смотреть.

COKPOWEHEU
()
Ответ на: комментарий от Assembler

Я же написал - само по себе использование bitband здесь неправильно. Оно нужно только для тонких оптимизаций, а отнюдь не для повседневного использования.

COKPOWEHEU
()
Ответ на: комментарий от COKPOWEHEU

Вопрос не в том что правильно а что нет. вы сказали что этот форум не для простых задач. помогите правильно расчитать. где в моих расчетах ошибка?

Assembler
() автор топика
Ответ на: комментарий от Assembler

Вопрос не в том что правильно а что нет. вы сказали что этот форум не для простых задач. помогите правильно расчитать. где в моих расчетах ошибка?

Определитесь для начала с конечной целью. Вы хотите освоить данный контроллер? Тогда bitband вам вообще не нужен.

Вы хотите разобраться с тонкостями работы ARM-ядра? Тогда отладьте сначала минимально работающую платформу и вносите в нее изменение по одному, добиваясь чтобы каждое работало.

Например, сделайте нормальную мигалку с нормальной настройкой регистров. Потом поменяйте работу с ОДНИМ регистром с прямой записи на bitband - работает или нет. Если нет, придется искать в документации что именно вы упустили, может даже делать цикл по оперативке контроллера и смотреть какой регистр поменялся.

COKPOWEHEU
()
Ответ на: комментарий от COKPOWEHEU

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

Assembler
() автор топика
Ответ на: комментарий от Assembler

скажите просто что вы не знаете.

Конечно не знаю. Я же при вас с этим методом разбирался, причем только теоретически, на бумажке. Потому что на практике он не используется.

вы же мне понаписали такой гадости что волос дыбом.

То есть адекватно воспринять конструктивную критику вы не хотите? Я ведь подробно расписал что именно людям не нравится и как это исправить. И по вашей задаче с bitband’ом подробно расписал как подступиться к ее решению.

COKPOWEHEU
()
Ответ на: удаленный комментарий

Зачем вы заходите? Пусть начинающие изучают stmки.

anonymous
()
Ответ на: комментарий от COKPOWEHEU

Оеще одна бесполезная ссылка.

anonymous
()
Ответ на: комментарий от COKPOWEHEU

И по вашей задаче с bitband’ом подробно расписал как подступиться к ее решению.

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

Assembler
() автор топика

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

izzholtik ★★★
()
Последнее исправление: izzholtik (всего исправлений: 2)
Ответ на: комментарий от izzholtik

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

Assembler
() автор топика
Ответ на: комментарий от Assembler

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

О, уже пошли попытки взять «на слабо». Какая жалось, что они не сработали: мне эта задача не интересна, так что и силы я на нее тратить не собираюсь.

На счет «помогите разобраться» - уже помог, но вы этого упорно не желаете замечать. Сколько раз я вам говорил начать изучение контроллера от простого к сложному? Вы сейчас пытаетесь, грубо говоря, поднять штангу весом 100 кг без подготовки.

COKPOWEHEU
()
Ответ на: комментарий от Assembler

пытаемся расчитать адрес

RCC 0x40021000 (базовый адрес для регистров RCC)

RCC_APB2ENR 0x18 (смещение относительно базового адреса RCC)

0x40021000 + 0x18 = 0x40021018

вот тут это всё есть

http://pygmy.utoh.org/riscy/cortex/led-stm32.html#sec-4.1

.equ RCC_APB2ENR, 0x40021018

anonymous
()
Ответ на: комментарий от COKPOWEHEU

О, уже пошли попытки взять «на слабо»

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

Assembler
() автор топика
Ответ на: комментарий от Assembler

нет, это пошли попытки с вашей стороны слиться

Все еще слишком слабые попытки манипуляций. Подобным хорошо если школьника напугаете.

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

Так вроде ж показывал уже: stm32 мигаем светодиодом (комментарий)

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

COKPOWEHEU
()
Ответ на: комментарий от anonymous

получилось)))) надобыло смотреть RCC map)))) спасибо

Assembler
() автор топика

Ну тебе ж было сказано, чтобы ты для начала научился через вменяемые регистры с вменяемыми флагами работать. А нужда в битбандинге возникает крайне редко. Вот у меня ни разу не было ситуаций, чтобы нужно было его использовать. Везде, где есть регистр BSRR, битбандинг не нужен. А вот где его нет — там, пожалуй, да, иногда пригодится.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от COKPOWEHEU

Ты на своем самокате в модераторы решил заехать что ли? Я посмотрел твою ссылку. Таких не берем. Иди учи матчасть.

anonymous
()
Ответ на: комментарий от anonymous

Ты на своем самокате в модераторы решил заехать что ли? Я посмотрел твою ссылку. Таких не берем. Иди учи матчасть.

Не берем куда, в анонимные диванные советчики? Как жеж теперь жить, абстрадаюсь весь!

COKPOWEHEU
()

anonymous, ты пока что вообще ничего дельного ТСу не посоветовал. Только бред с битбандингом.

Уж лучше вообще молчать, чем пакостить!

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Он через 7 дней если будет нас слушать станет разработчиком. Если же будет слушать вас то станет никем. В лучшем случае сможет установить кубик.

anonymous
()
Ответ на: комментарий от anonymous

Если он будет вас слушать, то станет либо абдуринщиком тупым, либо с ума сойдет, пытаясь в этом асмовском говнокоде разобраться!

Eddy_Em ☆☆☆☆☆
()

ТС! Слушай нас! Аноним плохому не научит!

anonymous
()
Ответ на: комментарий от Assembler

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

Дай угадаю. У тебя немного друзей. Ведь тебе подробнейшие указания дают, тратят драгоценное время, а ты просто не можешь воспринять советы. Что-то с самооценкой по ходу дела. Всё воспринимается как оскорбление.

anonymous
()
Ответ на: комментарий от Eddy_Em

Че вы щас пришли когда уже все ему разжевали? Когда он вопрос задаст все по норам спрячутся! Как только ему объяснят, тогда собираются все и начинают ему втирать про правильный поиск в GOOGLE. Я смотрел эти ссылки. Тот кто их давал далек от программирования.

anonymous
()
Ответ на: комментарий от anonymous

Ты не пету^W клон ли автора часом? А то один косит под дурочку, а другой одноразовые нечитаемые и немасштабируемые листинги рожает.

anonymous
()
Ответ на: комментарий от anonymous

Всё воспринимается как оскорбление.

Ну, справедливости ради, конструктивные сообщения от меня, Эдди или Адекватных анонимусов за оскорбление принять можно легко. Но ничего не поделаешь, это интернет, тут и послать могут. Надо уметь разделять форму и содержание и плевать на мнение всяких пустобрехов.

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

А та ссылка, которую я ему кидал, содержит ВЕСЬ расчет, который ему нужен. Достаточно было внимательно его просмотреть и спросить откуда взялись непонятные числа. Не помогло бы, конечно, поскольку без базовых знаний бесполезно лезть в недра, но хоть бы агрессивным неучем бы не выглядел

COKPOWEHEU
()
Ответ на: комментарий от anonymous

такие советы и я бы воспринимал как оскорбление.

Ну ты и есть ТС. Унылый тролль.

  1. придумываем никчемную задачу

  2. прикидываемся дурачком

  3. пишем от анонима выстраданное решение на 30 байт

  4. гнобим местных электронщиков, которые в этот момент делают что-то посложнее и полезнее

….

профит.

anonymous
()

Сокрощенец и Эдди ближе к практике, а аноним - теоретик. Осталось понять, что хочет автор.

anonymous
()
Ответ на: комментарий от anonymous

Сокрощенец

Неужеши «COKPOWEHEU» именно так читается? А я все ломаю язык: то «сокповехуу», то «цокпауеЕУ»..

Eddy_Em ☆☆☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.