Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32 SysTick на Keil в ассемблере
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Omnicake
Здравствуйте, в своем курсовом проекте изучаю возможности микропроцессоров ARM механики и сейчас остановился на таймере SysTick в процессоре STM32, а именно его реализации только на языке ассемблер (работаю в Keil mVision). Нашел в интернете цикл статей по STM32 в том числе по таймеру с примером (http://easyelectronics.ru/arm-uchebnyj-kurs-systick-sistemnyj-tajmer.html), пытаюсь его проанализировать но не могу понять несколько вещей:

- В составе проекта включена библиотека CMSIS, которая включает в себя настройки для всех видов STM процессоров и с помощью кучи условий if else в составе кода находит настройки под конкретный процессор и использует их. Отсюда вопрос: могу ли я, заведомо зная модель своего микропроцессора выкинуть из файла библиотеки все остальные настройки, оставив только нужную и избавится от кучи условий?

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

- И последний вопрос, могу ли я, используя дизассемблер, выписать все команды, написанные на C++, переделывая их в ассемблер, будет ли итоговая программа, состоящая из одного фаила и содержащая все необходимые команды на ассемблере работать?

Вопросы, возможно, очень глупые, но материала по подобным тонкостям я не нашел (быть может плохо искал). Заранее спасибо.
demiurg_spb
На все вопросы ответ ДА.
Но зачем?
Omnicake
Просто мне нужен рабочий файл, написанный на ассемблере и инициализирующий сам stm32 и таймер на нем. Я понимаю, что многое из того, что я написал - лишнее, но, как говорится, прихоть руководства.
Golikov A.
Часто так и делают. Когда проект вылизывают по каким либо причинам библиотеки, особенно такие большие как у СТМ летят в утиль.

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

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

так что все верно
Omnicake
Спасибо, значит мои догадки в каком-то смысле были верными, теперь буду все переписывать.
haker_fox
QUOTE (Golikov A. @ Mar 17 2014, 13:40) *
сю инициализацию можно написать самому по мануалу

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

Например, я неделю вылизывал простейший (без прерываний) драйвер для I2C (один мастер, два слейва) для STM32F051. И это при том, что у меня был мануал на родном английском rolleyes.gif + CMSIS, куда я подглядывал + знания по теории функционирования I2C rolleyes.gif rolleyes.gif rolleyes.gif

Или вот. Я не смог нормально завести SPIFI на LPC4337 для обмена с внешней нанд N25Q128. Пришлось делать на SPI. И это при том, что команды флешки описаны вполне нормально. А мануалы от NXP я считаю очень даже неплохо написаны.

Но, ИМХО, как-то всё мудрёно описано. А ориентирование всего добра на CMSIS я вообще не одобряю... Нет чтобы простые примеры приложить в одном файле, так нет, разбирайся с сотней хидеров и сишников...
toweroff
Цитата(Omnicake @ Mar 17 2014, 08:50) *
Спасибо, значит мои догадки в каком-то смысле были верными, теперь буду все переписывать.

тут есть немаловажный момент. Оптимизацию компилятора C в ноль поставьте, иначе там такой черт голову сломит sm.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.