LINUX.ORG.RU

Помогите разобраться

 


0

1

Assembler посоветовал мне купить такой же контроллер как у него и воспользоваться уже готовыми примерами из его тем чтобы на создавать новых и не беспокоить зря форум. Я купил контроллер точ в точ как у него. зашел в его тему и скопировал код. stm32f103c8t

.syntax unified
.cpu cortex-m3
.thumb

RCC_APB2ENR = 0x40021018
RCC_APB2ENR_AFIOEN = (1 << 0)
RCC_APB2ENR_IOPAEN = (1 << 2)
RCC_APB2ENR_IOPCEN = (1 << 4)

GPIOA_CRH = 0x40010804
GPIOA_BSRR = 0x40010810

GPIOC_CRH = 0x40011004
GPIOC_ODR = 0x4001100c

AFIO_EXTICR3 = 0x40010010

EXTI_IMR = 0x40010400
EXTI_FTSR = 0x4001040c
EXTI_PR = 0x40010414

NVIC_ISER0 = 0xe000e100

.text
	.word   0x20002000
	.word   _start + 1
	.space  0x94
	.word   EXTI9_5_isr + 1

.global _start
_start:
	ldr    r0, =RCC_APB2ENR
	ldr    r1, [r0]
	orr    r1, #(RCC_APB2ENR_AFIOEN | RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPCEN)
	str    r1, [r0]

	ldr    r0, =GPIOA_CRH
	ldr    r1, [r0]
	and    r1, #0xFFFFFF0F
	orr    r1, #0x00000080
	str    r1, [r0]

	ldr    r0, =GPIOA_BSRR
	ldr    r1, =(1 << 9)
	str    r1, [r0]

	ldr    r0, =GPIOC_CRH
	ldr    r1, [r0]
	and    r1, #0xFF0FFFFF
	orr    r1, #0x00100000
	str    r1, [r0]

	ldr    r0, =GPIOC_ODR
	ldr    r1, [r0]
	orr    r1, #(1 << 13)
	str    r1, [r0]

	ldr    r0, =AFIO_EXTICR3
	ldr    r1, [r0]
	and    r1, #0xFFfFFF0F
	str    r1, [r0]

	ldr    r0, =EXTI_FTSR
	ldr    r1, [r0]
	orr    r1, #(1 << 9)
	str    r1, [r0]

	ldr    r0, =EXTI_PR
	ldr    r1, =0xFFFFF
	str    r1, [r0]

	ldr    r0, =EXTI_IMR
	ldr    r1, =(1 << 9)
	str    r1, [r0]

	ldr    r0, =NVIC_ISER0
	ldr    r1, =(1 << 23)
	str    r1, [r0]

	dsb

loop:
	wfi
	b loop

.global EXTI9_5_isr
EXTI9_5_isr:
	ldr    r0, =EXTI_PR
	ldr    r1, =(1 << 9)
	str    r1, [r0]

	ldr    r0, =GPIOC_ODR
	ldr    r1, [r0]
	eor    r1, #(1 << 13)
	str    r1, [r0]

	bx lr
ничего не работает. мне кажется ошибка в коде. наверное кто-то пошутил так. Тута много тех кто любит шутить. Но если серьезно то скажите где ошибка? почему код не работает? при замыкании ноги PA9 с Gnd должен был загораться светодиод PC13 как я понял из темы.



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

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

от всяких неучей

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

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

Это не твоё, забанься, не засирай форум. =)

Это какой по счёту аккаунт? Третий? Четвёртый? Предыдущие забанены. И каждый раз одна и та же история — ты приходишь с извратскими вопросами: «хачу генту», «хачу ассемблер».

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

Кончается всё предсказуемо, детской обидкой и истерикой — ну конечно, это форумчане виноваты. У них стажу по 20 лет, да. А ничего, что одиннадцатикласники вовсю программируют на сишечке? Задачи решают, олимпиады выигрывают, в том числе мирового уровня. Может это всё-таки с ТОБОЙ что-то не так?

anonymous
()

не беспокоить зря форум.

Вообще-то, форум только этим и живёт, если бы все гуглили и читали документацию, форум бы умер

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

Я как-то нашел ошибку в одной из версий калькулятора в книге программное окружение unix Роб Пайк и Брайан Керниган, могу страницу назвать и место, где ошибка, хотя, может, это я что-то не так понял

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

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

он так не сказал. он сказал надо вам меньше строить из себя богов.

Задачи решают, олимпиады выигрывают, в том числе мирового уровня

и про это говорили уже. вы все что-то решаете и выигрываете а глянешь на софт что пониписали эти олимпиадники и не похоже! похоже что писал какой-то пьяный фермер-свинопас. где софт достойный олимпиадников? бажный хромиум? или линукс? так линукс не вы написали. но берете debian станавливаете обои с русским флагом и называете это чисто русской ОС. о что вы свою не напишите? вы же олимпиадники? Где дела рук олипиадников и всех этих гениев? что вы изобрели? что написали? а я вам скажу НИЧЕГО! что толку от вас? вы заканчиваете и лезите в веб разработку потому что там повашему уму больше денег. и с приходом туда этих олимпиадников браузерам нужно не менее 16 гигов оперативы. Уж лучше бы вы не лезли туда дорогие олимпиадники.

что это для тех кто может читать маны

ты даже не знаешь как правильно пользоваться документацией. но давишь на то что надо уметь читать маны. маны не читают, это не художественная литература. вы услышали где-то звон и вам понравилось это умное словосочитание ЧТЕНИЕ МАНОВ! боже как умно звучит! и вы везде это вставляете. чтение манов в вашем понимании может заменить образование. деб..л! тебя словарь ожегова может научить читать? нет. и букварь тебя не научить читать. чтобы научиться читать надо уметь читать в таком случае. читать тебя может научить только учитель. странно, скажи же? почти у всех великих математиков родители были математики. и если ребенок умеет решать задачи на СИ то это значит что уже кто-то их обучил. и этот кто-то скорее всего родители которые кодят на СИ. или родители отдали свое чадо на курсы для детей. но старт нужен. без старта никак. ты из детдома видел детей-программистов? нет? все правильно! оттуда только или наркоманы или забитые бедные лишенные детства. свое вранье о саморазваитии и приобретения навыков из манов может оставить для других. мне эти сказки не нужны.

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

в точку. просто им играющим на гитарах, гармошках и балалайках не интересны вопросы о ассемблере и каких то там контроллерах. вот еслы бы про ноты….

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

он так не сказал. он сказал надо вам меньше строить из себя богов.

А кто строит богов? Или это разговор с голосами в своей голове? Просто не охота тратить время чтобы дебажить чужое ассемблерное говно, своего хватает. К тому же, если человек собирается научиться, то это его задача разобраться в том что идёт не так. Отладка написанных программ это часть работы программиста

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

А кто строит богов?

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

разговор с голосами в своей голове?

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

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

А ничего, что одиннадцатикласники вовсю программируют на сишечке?

слушайте, так это все меняет дело. значит в приоритете на поступление должны быть дети с плохими оценками. зачем учить олимпиадников, если они и так все знают. это как варить уже свареный суп, или печь испеченные пироги. раз олимпиадники всему научились читая маны, пусть продолжают это делать. учить надо тех кто не может научиться сам. РЕШЕНО.

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

читать тебя может научить только учитель.

Читать научиться можно только самому. Учитель ( если ему повезёт ) может только помочь научиться, а тех, кто не научитаться читать, учитель не научит.

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

Читать научиться можно только самому

зачем ты пишешь бред? учитель учить ребенка какой звук с каким графическим знаком связан(учат алфавит). как только ребенок зазубрил постоянным повторением за учителем это то только тогда начинает мямлить текс по слогам и при этом опять же со стороны учителя ведется постоянный котроль и корректировка действий ученика. ну открою я букварь. что я там вижу? какие-то значки и текс. но я даже не знаю что значки-это буквы, из которох состоят предложения из которых состоит текс. чтобы понять что буква «ю» передает два звука 'y' и 'й' мне нужно это прочитать из учебника. но я не умею же читать. это замкнуты круг. если ты не можешь понять такие простые вещи что читать нельзя научиться самому потому что чтобы научиться читать надо уметь уже читать, то я не верю что ты мог научиться программировать из МАНОВ. потому я разжевал тебе уже в двух сообщениях простую вещь и ты ее не осознал так как тогда ты осознаешь инфу из технической документации когда ее там ровно столько чтобы неподготовленный человек не смог осознать.

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

щас все решится. ты в школе учился?

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

Эка тебя прорвало.

Но написанного ты НЕ ПОНЯЛ. Даже не задумался на секунду. Сразу оскорбился, и побежал в атаку с шашкой.

не верю что ты мог научиться программировать из МАНОВ

Ты не веришь, а оно так и есть. Книжки уже есть, и в них всё написано. В том числе, и как программировать. В том числе, и как начать программировать, если не умеешь.

Форум — он для вопросов, про которые в книжках ЕЩЁ не написано. Либо для вопросов «где почитать по теме». =)

Проблема-то в другом. В том что...

ТЫ

НЕ МОЖЕШЬ (физически)

ЧИТАТЬ КНИЖКИ

...и не хочешь себе (и нам) в этом признаться.

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

Но штука в том, что у форумчан вообще-то своя жизнь есть, работу работать и заниматься тем, что ИМ интересно. Требовать от них переводить своё время на тебя — нагло и глупо. И дело не в деньгах, дело в том что жизнь человеческая, она короткая. Да, может быть кто-то сжалится над инвалидом, там поможет, тут поможет. Но в общем случае — тебе никто ничем не обязан.

Хочешь научиться программировать — не вопрос. Ищи видеолекции. Есть куча сайтов для самых начинающих, типа курсеры или степика.

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

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

чтобы понять что буква «ю» передает два звука ‘y’ и ‘й’ мне нужно это прочитать из учебника.

А в слове мюсли та же буква «ю» обозначает один, а не два звука ([мйусли]). Если понять, как читаются русские йотированные буквы в разных слогах, то научиться читать незнакомые русские слова уже несложно. Будут, конечно, ошибки в ударениях.

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

Форум — он для вопросов, про которые в книжках ЕЩЁ не написано.

киньте ссылку пожалуйста на те вопросы которые как вы считаете достойные этого форума. Где эти вопросы тут? я хочу прочитать их и понять как правильно тут нужно общаться и подойти уже более ответственно к моменту написания этих вопросов на форуме. вдруг чтобы тут что-то спросить нужна докторская степень.

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

это даже не уход от вопроса. это просто какое-то невнятное бормотание. ту учился или нет в школе? тебя там учили читать?

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

Форум — он для вопросов, про которые в книжках ЕЩЁ не написано.

О том, почему у меня ничего не работает, в книжках обычно не пишут.

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

Эка тебя прорвало

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

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

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

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

народная ЛОРОВСКАЯ мудрость: путь в программирование лежит через гитару.

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

Тоненькие детские книжки из этой серии http://publ.lib.ru/ARCHIVES/M/%27%27Moi_pervye_knijki%27%27/.Online/Teij85O1.jpg я читал до школы. Не меньше четверти моих одноклассников уже умели читать, когда пришли в первый класс, кто по слогам, кто уже прилично.

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

ну почти… он код взял с этого форума. ему сказали купи МК такой-то и учись. тут примеров много. он уже второй МК покупает

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

@COKPOWEHEU

Ась? Написать ему мигалку на асме? Так смысла нет: учиться он как и Ассемблер не желает, только время на поиски адресов и битов потрачу впустую.

Если бы эти клоуны действительно хотели учиться, они бы учились - читали даташит и рефман, искали в интернете статьи, анализировали чужой код, экспериментировали. Делали бы ХОТЬ ЧТО-ТО. Хотят на асме, пусть на асме. Это сложнее, чем на Си (особенно для ARM) но возможно.

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

Где эти вопросы тут?

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

http://rsdn.org/Info/Howtoask.xml

Кратко для Ъ: Описать проблему, описать как пытался её решить, и что, в процессе решения этой проблемы, пошло не так. После этого задать конкретный вопрос по теме, а не «ничего не работает, помогите».
И тогда, даже в этом клубе стареющих гиков, ты получишь и уважение, и ответ, если повезёт, конечно, а может быть и сам догадаешься, и запостиш ответь.

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

Кончается всё предсказуемо, детской обидкой и истерикой — ну конечно, это форумчане виноваты. У них стажу по 20 лет, да.

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

А ничего, что одиннадцатикласники вовсю программируют на сишечке? Задачи решают, олимпиады выигрывают, в том числе мирового уровня.

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

Вообще-то, форум только этим и живёт, если бы все гуглили и читали документацию, форум бы умер

По некоторым вопросам вообще непонятно что именно гуглить, по каким ключевым словам. Или документация такая что черт ногу сломит. Или документации вообще нет: не из воздуха алгоритмы берутся, кто-то их и придумывает.

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

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

который гуглится и проверяется за полчаса

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

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

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

чет ты видимо не нагугли за полчаса.

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

да и пока я лазил в темах ассемблера видел что и ты там постоянно был и все что-то вынихивал да спрашивал

Да? И что же я там вызнал если не секрет? А то как-то неудобно: вроде и выспрашивал, а узнаю об этом последним.

Ну кроме bitband’а, который был просто любопытен, но практической пользы не несет.

надо было идти и самостоятельно разбираться.

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

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

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

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

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

потому что… и не пытался

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

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

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

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

Не тратьте время.

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

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

просто инвалид.

100%

речь связная

нет. речь спутаная.

все выяснили. расходимся

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

вроде и выспрашивал, а узнаю об этом последним.

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

Суть: есть TIM2, который работает в режиме Input Capture (захватывает по фронту). Есть DMA1 Stream 5, который по событию захвата от таймера выполняет перенос захваченного значения из CCR1 в ОЗУ. В какой-то момент мне нужно остановить таймер и DMA (время вышло/массив в ОЗУ закончился). Следующий запуск таймера и DMA начинается с того, что DMA тут же захватывает 0 из CCR1. Подозреваю, что с прошлого запуска остаётся висеть запрос от таймера к DMA на передачу.

Вопрос: не знаешь ли ты, как можно сбросить ожидающий запрос от таймера без резета всего таймера?

Ну кроме bitband’а, который был просто любопытен, но практической пользы не несет.

Его вроде из более новых серий вообще убрали.

По теме: не знаю язык ассемблера, увы, помочь не могу.

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

ну, если это правда, то помогут антидепрессанты, они еще и когнитивные способности улучшают, сам пью

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

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

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

его там сразу забанят или уйдут в глухое молчание.

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

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

Анон, если что, это не @Anonymous, а @anonymous. На ЛОРе ники регистрозависимые.

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

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

Умный человек и у дурака научится, а глупому и десять мудрецов не поможет.

зачем ты тут? ты даже ниразу не помог.

Ну, как минимум вам с Ассемблером давал полезные советы и ссылки. То, что вы их упорно игнорируете - исключительно ваши проблемы. Сейчас мне уже поднадоело вас учить, можно просто сидеть и наслаждаться вашими ужимками. Хотя извороты Ассемблера и его киберфорумного собрата по разуму были разнообразнее ваших. Как вспомню эти метания от «вы тут все умные, помогите убогим» до «я-то думал тут профессионалы собрались».

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

Суть: есть TIM2, который работает в режиме Input Capture

Input Capture пока не копал, так что достоверной информации дать не смогу.

Подозреваю, что с прошлого запуска остаётся висеть запрос от таймера к DMA на передачу.

Я бы начал со сброса флагов прерываний и повторной инициализации DMA. Вроде бы механизм запроса прерывания и пинка по DMA общий.

Его вроде из более новых серий вообще убрали.

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

а тебе сюда

Ой, не надо еще и другие форумы этим бредом засорять, пожалуйста. Хотя изиэлектроникс довольно вялый, сильно ТС там не помешает. А если таки помешает, забанят.

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

Разобрались в вопросе? Вопрос решён?

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

Я бы начал со сброса флагов прерываний и повторной инициализации DMA. Вроде бы механизм запроса прерывания и пинка по DMA общий.

Да, на форуме ST предлагали примерно то же, но только в таймере, так как запрос на транзакцию хранится якобы именно в таймере, а не в самом DMA. Но мне их вариант как-то не помог. Ладно, буду пробовать, спасибо.

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

Да, на форуме ST предлагали примерно то же, но только в таймере, так как запрос на транзакцию хранится якобы именно в таймере, а не в самом DMA.

Насколько я понял механизм работы, периферия генерирует события, которые могут пойти либо на генерацию прерывания, либо на DMA. То есть если флаг прерывания периферии успеть сбросить принудительно, ни прерывание не возникнет, ни DMA не дернется.

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

А может на первое время хватит костыля с игнорированием первого значения?

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

флаг прерывания периферии успеть сбросить принудительно

Добавлю. Погляжу, как пойдёт.

А может на первое время хватит костыля с игнорированием первого значения?

Да это и так уже есть. Просто охота понять причину, отчего транзакция так рано, да и красиво сделать.

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

Если «совсем красиво», то я бы вначале остановил таймер, сбросил флаг прерывания, остановил DMA, переинициализировал адрес начала и количество, запустил DMA и в самом конце потом настроил таймер, сбросил CNT и запустил его.

COKPOWEHEU
()
Ответ на: комментарий от anonymous
какое прерывание он должен использовать?

23 30 settable EXTI9_5 EXTI Line[9:5] interrupts 0x0000_009C

смотри код, включается 23 прерывание

	ldr    r0, =NVIC_ISER0
	ldr    r1, =(1 << 23)
	str    r1, [r0]

указатель на обработчик лежит по адресу 0x9c в секции .text

.text
	.word   0x20002000
	.word   _start + 1
	.space  0x94
	.word   EXTI9_5_isr + 1

8 байт (два указателя - на вершину стека и на адрес прыжка после сброса)

	.word   0x20002000
	.word   _start + 1

заполнение 0x94 байт нулями

	.space  0x94

итоговый адрес указателя на обработчик в секции .text

	.word   EXTI9_5_isr + 1

0x8 + 0x94 = 0x9c

код исполняется из встроенного флеша, адрес встроенного флеша (секции .text) ты задаешь при линковке

arm-none-eabi-ld button.o -Ttext=0x08000000 -o button.elf

абсолютные адреса с учетом ареса секции

Disassembly of section .text:

08000000 <_stack+0x7f80000>:
 8000000:	20002000 	.word	0x20002000
 8000004:	080000a1 	.word	0x080000a1
	...
>>> 800009c:	0800010b 	.word	0x0800010b

...

>>> 0800010a <EXTI9_5_isr>:
 800010a:	480c      	ldr	r0, [pc, #48]	; (800013c <EXTI9_5_isr+0x32>)

https://sourceware.org/binutils/docs/as/Space.html

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

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

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

Асм проще си, на самом деле. Но ТС не хочет читать даташит. И это его принципиальная позиция.

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

В одной из первых тем ТСа анон дал список литературы. ТС это дело проигнорировал и продолжил тупить.

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