LINUX.ORG.RU

delay stm32f103

 ,


0

1

здрасьте здрасьте люди добрые. ну вот и ожидаемая тема с просьбой помочь разобраться в задержках для stm32f103. пытался реализовать с помощью циклов, но получается что-то уж очень не настраиваемое и время задежки очень мало. нашел что правильно делать delay нужно с помощью systick, но открыв RM в упор не вижу адресов регистро, что очень странно. нагуглил какие-то адреса

0xE000E010 ;	Systick_Control_and_Status_Register
0xE000E014 ;  	Systick_Reload_Value_Register
0xE000E018 ;    Systick_Current_Value_Register
0xE000E01C ;    Systick_Calibration_Value_Register
если я хочу чтобы светодиод вспихивал и и гас через 2сек то как правильно нужно написать и расчитать? поправте пожалуйста для начала надо в SYST_CSR в нулевой бит записать '1' и в первый бит также '1'.
адрес SYST_CSR=0xE000E010

.cpu cortex-m3
.thumb
.word 0x2000000
.wort _start

.section .text
.global _start
_start:



mov r5, =0xE000E010
mov r1, #1
str r1, [r5];  пальцем в небеса! ну пусть я попаду в нулевой бит, а как высчитать первый бит?
у меня вопрос к вам, уважаемые форумчане, вот адрес SYST_CSR=0xE000E010, как высчитать его первый, второй и последующие нужные биты? только с помощью побитовых операций? если есть другой способ и описан в документации, то пожалуйста скажите в какой именно ?



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

Адрес начала, наверное. Флешка не с 0 начинается, а с 0x0800’0000

Если ты загружаешься с флешки, то она мапится на 0.

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

Если ты загружаешься с флешки, то она мапится на 0.

Но при прошивке-то нет

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

0x0800’0000

это адрес первой страницы памяти.

скажите спасибо, что я создаю эти темы. а то так бы и думали, что это адрес флешки.

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

0x0800’0000

это адрес первой страницы памяти.

скажите спасибо, что я создаю эти темы. а то так бы и думали, что это адрес флешки.

Вы можете сформулировать свою мысль по-человечески? А то я ничего не понял.

0x0800’0000 это адрес начала флеш-памяти в контроллере, туда записывается прошивка и оттуда же обычно начинается выполнение. Хотя ногами boot0, boot1 можно это изменить: начать выполнение из оперативки с адреса 0x2000’0000 или из самозагрузчика (вот его адрес я наизусть не помню, да и не нужен он).

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

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

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

Вы можете сформулировать свою мысль по-человечески?

нет. только

вав! вав! ррр
вы так сами выбрали.
0x0800’0000
это не физический адрес.

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

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

это не физический адрес.

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

На адрес 0x0800’0000 отображается начало флешки, на 0x2000’0000 оперативка и т.д. Если вам будет проще, считайте это точками монтирования, как в файловой системе.

Или вы раньше думали, что все 4 ГБ памяти физически присутствуют в контроллере?!

но сами сутками в моих темах заполняете огромные пробелы в своих знаниях

Например какие?

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

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

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

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

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

банам?

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

куча моих наработок уже выложена на всеобщее обозрение.

как статья в которой написано, что в адрес

 0x0800’0000
помещается адрес
0x20005000
?

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

как статья в которой написано, что в адрес

0x0800’0000

помещается адрес

0x20005000

?

Что за статья? Как у вас адрес помещается в адрес? Почитайте уже про таблицу векторов прерываний и ее структуру.

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

А над такими как вы и поиздеваться не грех

Боже, да что ты такое пишешь-то? Тебе это удовольствие доставляет? Чтоб твоих детей так учили.

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

Как у вас адрес помещается в адрес?

это не у меня, а у автора ссылку на которого вы дали!

Почитайте уже про таблицу векторов прерываний и ее структуру.

теперь уже опасаюсь изсходя из того что прочитал по вашей ссылке.

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

это не у меня, а у автора ссылку на которого вы дали!

Что за ссылка-то? Я в этой теме ни на что вроде не ссылался.

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

В интернате.

По любым форумам учиться - бред. Учиться можно по статьям, книгам. Некоторым вещам (не программированию, конечно) можно даже по видеороликам. Отличие от форумов в том, что материал структурирован, это не три предложения без контекста. А на форуме можно либо уточнить непонятный момент, либо задать конкретный вопрос.

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