STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

Поделитесь пожалуйста русскоязычной ссылкой (если имеется таковая) по описаеию функций стартапов и CMSIS, я ато за пол дня ни на что стоящее так и не наткнулся, везде поверхностное описание их функций без сути процесса...
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Сообщение menzoda »

Химера, ты знатный тролль, да еще с замашками высокомерия. С троллем спорить - себя не уважать, и так уже я дал слабину написав предыдущий пост. Все, все, все, ухожу, ты выиграл! Можешь написать мне напоследок еще раз, что я дурак, а ты умный, и порешим на этом.
isx писал(а):Поделитесь пожалуйста русскоязычной ссылкой (если имеется таковая) по описаеию функций стартапов
Насчет CMSIS не знаю - не использовал, а со стартапами и скаттер-файлами (те, которые, для линкера) все не очень хорошо. Я даже на английском не находил толкового описания, выуживал по крупицам из разрозненных документов от ARM. Если ты все-таки решил в этом разобраться, то спрашивай тут. Могу даже в личку кинуть минимально необходимые файлы с минимально необходимым содержимым, попутно объяснив каждую строку. Конечно учитель из меня не очень, но мне кажется лучше с живым человеком поговорить, чем выуживать огрызки из интернетов. Но это все только по базовым вещам, CMSIS и SPL я не знаю, как настроить конкретную периферию - тоже, это все в даташите описано и я такие вещи не запоминаю.
Последний раз редактировалось menzoda Пт апр 25, 2014 10:06:43, всего редактировалось 1 раз.
Реклама
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

А можете кинуть проект по-сложнее, где не использовались не стартапы, ни CMSIS ни SPL? Лучше бы было один раз увидеть, тогда всё станет понятнее...
Вымогатель припоя
Аватара пользователя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Сообщение menzoda »

Как раз стартап - это обязательная вещь. Насчет проекта посложнее - у меня есть только для ARM7TDMI под старое средство разработки ARM ADS, используемый для небольших тестов. По сути отличается от проектов для Cortex-M только стартап файлом, дальше все равно Си идет, а он везде одинаковый. Был еще где я двигателем управлял, но к сожалению я его удалил за ненадобностью.

В общем я могу рассказать про стартап для Cortex-M и показать небольшой проектик для ARM7TDMI. Я думаю, что суть будет понятна, и отличия от проекта с CMSIS и SPL тоже станут понятны.

Да, чуть не забыл, какое средство разработки используешь?
Последний раз редактировалось menzoda Пт апр 25, 2014 10:10:26, всего редактировалось 1 раз.
Реклама
Эиком - электронные компоненты и радиодетали
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

Буду очень признателен :)
Реклама
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

Ничего не понимаю. Залил код в Кейл:

Код: Выделить всё

#include "stm32f0xx.h"
int main()
{
	RCC->AHBENR = 0x00010014;
	GPIOA->MODER = 0x00000004;
	GPIOB->MODER = 0x00000000;
	GPIOA->OTYPER = 0x00000000;
	GPIOA->OSPEEDR = 0x00000004;
	GPIOB->PUPDR = 0x00000008;
    while(1){
			if ((GPIOB->IDR & 0x02) == 1) {GPIOA->BSRR &= 0x02;}
			if ((GPIOB->IDR & 0x02) == 0) {GPIOA->BSRR &= 0x02;}
}
}
Запустил отладку с внешнего МК на STMF3Descovery. Ничего не работает. Потом заметил, что не правильно включил тактирование портов Исправил строку RCC->AHBENR = 0x00010014; на RCC->AHBENR = 0x00060014; запустил отладку, вылетела какая-то ошибка и внешний МК теперь не определяется... Что опять не так у меня?
Реклама
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

Не забивайте себе голову всякой ерундой... "Мы пойдём другим путём!"(С) - путь, как правило, в никуда...
Все эти фенечки-рюшечки со стартапом и прочим нужны в исключительных случаях (при самоконтроле ПО, например)... да и то при полном понимании происходящего... что не для новичка, увы...
"Я не даю готовых решений, я заставляю думать!"(С)
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

HIMERA А может по существу есть предложения?
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

Что опять не так у меня?
PA13 PA14 на вывод настроены? На PA13 PA14 отладчик?
условие (GPIOB->IDR & 0x02) == 1 будет разве выполняться?

чтоб не путаться, может так лучше периферию включать:
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

menzoda писал(а):Химера, ты знатный тролль, да еще с замашками высокомерия. С троллем спорить - себя не уважать, и так уже я дал слабину написав предыдущий пост. Все, все, все, ухожу, ты выиграл! Можешь написать мне напоследок еще раз, что я дурак, а ты умный, и порешим на этом.
.
И все же хотелось лицезреть как ты выкрутишься из своего же бреда . :)))
Оптимальный квик_старт для нубов обсуждался неоднократно и как раз включает юзанье именно CMSIS с хэдером и стартапом от вендора .
Причем не только под STM32 но и под TI, LPC и допотопные SAM от AVR .
Что предложишь ? :)))
isx писал(а): запустил отладку, вылетела какая-то ошибка и внешний МК теперь не определяется... Что опять не так у меня?
Выставь в настройках STLink- Connect under reset ...

isx, дискаверина F3 а проект под F0 ????????
Последний раз редактировалось dosikus Пт апр 25, 2014 13:17:27, всего редактировалось 1 раз.
Вымогатель припоя
Аватара пользователя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Сообщение menzoda »

Зачем преждевременно делать из человека нуба? Постараюсь рассказать ему простым языком , но как оно есть (собственно уже начал). Если захочет разобраться, то ему будет полезна эта информация, мне бы в свое время очень пригодилась. Если для него это будет сложно, то хотя бы какие-то вещи отложатся на задворках сознания и возможно позволят избежать в будущем некоторых вопросов.
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

menzoda писал(а):Зачем преждевременно делать из человека нуба? Постараюсь рассказать ему простым языком , но как оно есть (собственно уже начал).
Дык а зачем делать , если подобные вопросы только нубы и ставят причем полные .
Кто определился в эмбедде подобной ерундой не страдает .

Давай пиши .
Ну стартап и систем - я согласен можно и свой, тем более тот же систем от STM генерится облегчалкой .
Теперь внимание вопрос - хэдер с определением регистров и бит будешь свой стряпать ?
А так же хэдеры от CMSIS с оптимальным набором инструкций ?
Вымогатель припоя
Аватара пользователя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Сообщение menzoda »

dosikus писал(а):Дык а зачем делать , если подобные вопросы только нубы и ставят причем полные .
Если ничего не делать и поощрять незнание, то нубы останутся нубами, а так есть шанс. Я сам был нубом, и если бы знал о существовании данного форума раньше, то вы от меня наверное таких же нубских вопросов наслушались. Наверное хорошо, что не знал, сел за книжки, за словарь англо-русский, и теперь я... тоже нуб, но немного поменьше. :))

Химера вот считает, что новичкам необязательно знать такие подробности, пользуйся чем дают и не рыпайся. Я же уверен, что нельзя построить дом, а потом уже задумываться о фундаменте, разве что сарай или лачужку какую.
dosikus писал(а):Давай пиши
По стартапу я ему в личку написал уже, жду реакции. Если интересно могу тебе отправить. Вообще я думаю хорошо бы создать отельную тему с описанием таких вот штук. Кому интересно может позадавать вопросы, кому нет - пройдет мимо.
dosikus писал(а):хэдер с определением регистров и бит будешь свой стряпать ?
Я нет, максимум что-нибудь переименую как мне удобно. А вообще это полезно хоть один раз сделать, чтобы в случае чего можно было самому добавить какие-нибудь определения. Мало ли... Я встречал в них пару раз ошибки.
dosikus писал(а):А так же хэдеры от CMSIS с оптимальным набором инструкций ?
Я уже написал isx, что вспомнил про этого зверя. Это всего лишь такая же обертка над регистрами, как и SPL, только регистры не периферийные, а связаны с ядром. Их описание, расположение в памяти, значение отдельных битов можно найти в документе на само ядро. Я тогда сделал себе один заголовочный файл с определениями как периферийных, так и этих регистров, и работал с ними напрямую.

Да, добавлю. Я не настаиваю, что необходимо проснувшись ночью, по памяти состряпать свой стартап со скаттером, не в коем случае. Нужно хотя бы иметь общее представление что там происходит и для чего примерно нужна та или иная конструкция.
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

oleg110592 писал(а):На PA13 PA14 отладчик?
Да. Похоже я понял к чему этот вопрос :) . А я то думал, нафига по даташиту значение порта А по умолчанию 0x2800 0000. А как теперь вернуть пинам альтернативную функцию или сбросить чип к заводским настройкам?
oleg110592 писал(а):условие (GPIOB->IDR & 0x02) == 1 будет разве выполняться?
А почему нет?
oleg110592 писал(а):RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
Тут SPL используется же? Я пока без него практикуюсь, для понимания сути, так сказать :) .
dosikus писал(а):Выставь в настройках STLink- Connect under reset
Выставил, результата нет(
dosikus писал(а):дискаверина F3 а проект под F0 ?
Да. Я его только как отладчик сейчас использую....
Встал на лапы
Сообщения: 100
Зарегистрирован: Пт авг 02, 2013 07:20:04

Сообщение titoFF »

titoFF писал(а):Привет ARMщики! Встречайте новичка с новыми глупыми вопросами. Написал (хотя нет, скопипастил) я свою первую прошивку, залил её. Светодиодики весело мигают и всё бы ничего, но после отключения питания и подаче его вновь ничего не горит. STM32F4Discovery, пишу в кокосе, программировал им же и ST- Link.
Никто не подскажет, что это?
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

titoFF писал(а):Никто не подскажет, что это?
На данный вопрос ответа нет... ни у кого...
isx писал(а):
oleg110592 писал(а):RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
Тут SPL используется же? Я пока без него практикуюсь, для понимания сути, так сказать :) .
Покажите пальцем... где там SPL???
menzoda писал(а): Я уже написал isx, что вспомнил про этого зверя. Это всего лишь такая же обертка над регистрами, как и SPL, только регистры не периферийные, а связаны с ядром. Их описание, расположение в памяти, значение отдельных битов можно найти в документе на само ядро. Я тогда сделал себе один заголовочный файл с определениями как периферийных, так и этих регистров, и работал с ними напрямую.
Озвучьте пользу от проделанного... кроме потери времени и создания "само в себе"... если 95% задач этого не требуют...
И это... 100%-ая уверенность есть, что ничего не забыл, не пропустил и всё сделал правильно???
"Я не даю готовых решений, я заставляю думать!"(С)
isx
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Сообщение isx »

isx писал(а):А как теперь вернуть пинам альтернативную функцию или сбросить чип к заводским настройкам?
Решил проблему закоротив BOOT0 с "+" до подачи питания. Затем вернул альтернативные функции и прошился...
HHIMERA писал(а):где там SPL?
Я думал это её облегчённый способ записи... А что это тогда, CMSIS? По факту же мы с какой-то функцией, а не с битами работаем... :dont_know:
Вымогатель припоя
Аватара пользователя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Сообщение menzoda »

HHIMERA писал(а):Озвучьте пользу от проделанного
Мне так нравится. Мне так удобнее. Если мне удобнее я быстрей делаю работу. Если мне удобнее я меньше ошибаюсь.
isx писал(а):условие (GPIOB->IDR & 0x02) == 1 будет разве выполняться?
А почему нет?
Потому что 0x2 это 0b10, а 1, с которым ты сравниваешь - это 0b01. Любое число & 0b10 будет равно или 0b00 или 0b10, но никак не 0b01.
isx писал(а):Я думал это её облегчённый способ записи... А что это тогда, CMSIS? По факту же мы с какой-то функцией, а не с битами работаем...
Ах вот оно в чем дело! Нет это ни SPL, ни CMSIS, это как раз непосредственная работа с регистрами и битами, никаких функций ты не вызываешь. RCC->AHBENR это эквивалентно некоторой ячейки в памяти, то бишь регистру. RCC_AHBENR_GPIOAEN это просто дефайн с каким-то числом:

Код: Выделить всё

#define RCC_AHBENR_GPIOAEN 0xЧТОТОТАМ
В итоге твое

Код: Выделить всё

RCC->AHBENR = RCC_AHBENR_GPIOAEN
равнозначно записи в определенную ячейку памяти (регистр) определенного числа.
Открыл глаза
Аватара пользователя
Сообщения: 52
Зарегистрирован: Пт янв 10, 2014 02:05:13
Откуда: Воронеж

Сообщение kisssko »

isx писал(а): Я думал это её облегчённый способ записи... А что это тогда, CMSIS? По факту же мы с какой-то функцией, а не с битами работаем... :dont_know:
Где там функции?
RCC->AHBENR - это адрес (образно говоря), RCC_AHBENR_GPIOAEN - бит.

Код: Выделить всё

/******************  Bit definition for RCC_AHBENR register  ******************/
#define  RCC_AHBENR_DMAEN                    ((uint32_t)0x00000001)        /*!< DMA clock enable */
#define  RCC_AHBENR_SRAMEN                   ((uint32_t)0x00000004)        /*!< SRAM interface clock enable */
#define  RCC_AHBENR_FLITFEN                  ((uint32_t)0x00000010)        /*!< FLITF clock enable */
#define  RCC_AHBENR_CRCEN                    ((uint32_t)0x00000040)        /*!< CRC clock enable */
#define  RCC_AHBENR_GPIOAEN                  ((uint32_t)0x00020000)        /*!< GPIOA clock enable */
#define  RCC_AHBENR_GPIOBEN                  ((uint32_t)0x00040000)        /*!< GPIOB clock enable */
#define  RCC_AHBENR_GPIOCEN                  ((uint32_t)0x00080000)        /*!< GPIOC clock enable */
#define  RCC_AHBENR_GPIODEN                  ((uint32_t)0x00100000)        /*!< GPIOD clock enable */
#define  RCC_AHBENR_GPIOEEN                  ((uint32_t)0x00200000)        /*!< GPIOE clock enable */
#define  RCC_AHBENR_GPIOFEN                  ((uint32_t)0x00400000)        /*!< GPIOF clock enable */
#define  RCC_AHBENR_TSCEN                    ((uint32_t)0x01000000)        /*!< TS controller clock enable */
Это из stm32f0xx.h
Последний раз редактировалось kisssko Пт апр 25, 2014 16:09:27, всего редактировалось 2 раза.
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

isx писал(а):Я думал это её облегчённый способ записи... А что это тогда, CMSIS? По факту же мы с какой-то функцией, а не с битами работаем... :dont_know:
Да... это CMSIS... т. к. это всё определено в CMSIS-файле ... которым является хедер...
Запись RCC->AHBENR |= RCC_AHBENR_GPIOAEN; говорит о том, что в регистре AHBENR модуля RCC устанавливается бит RCC_AHBENR_GPIOAEN...
menzoda писал(а):
isx писал(а):условие (GPIOB->IDR & 0x02) == 1 будет разве выполняться?
А почему нет?
Потому что 0x2 это 0b10, а 1, с которым ты сравниваешь - это 0b01. Любое число & 0b10 будет равно или 0b00 или 0b10, но никак не 0b01.
Сам хоть понял что написал??? От комментов воздержусь дабы не поднимать уровень истерики...
"Я не даю готовых решений, я заставляю думать!"(С)
Ответить

Вернуться в «ARM»