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

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

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

Сообщение isx »

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

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

Сообщение menzoda »

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

isx писал(а):Поделитесь пожалуйста русскоязычной ссылкой (если имеется таковая) по описаеию функций стартапов

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

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

Сообщение isx »

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

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

Сообщение 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

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

Сообщение isx »

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

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

Сообщение 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; запустил отладку, вылетела какая-то ошибка и внешний МК теперь не определяется... Что опять не так у меня?
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

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

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

Сообщение isx »

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

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

Сообщение oleg110592 »

Что опять не так у меня?

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

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

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

Сообщение dosikus »

menzoda писал(а):Химера, ты знатный тролль, да еще с замашками высокомерия. С троллем спорить - себя не уважать, и так уже я дал слабину написав предыдущий пост. Все, все, все, ухожу, ты выиграл! Можешь написать мне напоследок еще раз, что я дурак, а ты умный, и порешим на этом.
.


И все же хотелось лицезреть как ты выкрутишься из своего же бреда . :)))
Оптимальный квик_старт для нубов обсуждался неоднократно и как раз включает юзанье именно CMSIS с хэдером и стартапом от вендора .
Причем не только под STM32 но и под TI, LPC и допотопные SAM от AVR .
Что предложишь ? :)))

isx писал(а): запустил отладку, вылетела какая-то ошибка и внешний МК теперь не определяется... Что опять не так у меня?


Выставь в настройках STLink- Connect under reset ...

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

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

Сообщение menzoda »

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

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

Сообщение dosikus »

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


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

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

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

Сообщение menzoda »

dosikus писал(а):Дык а зачем делать , если подобные вопросы только нубы и ставят причем полные .

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

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

dosikus писал(а):Давай пиши

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

dosikus писал(а):хэдер с определением регистров и бит будешь свой стряпать ?

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

dosikus писал(а):А так же хэдеры от CMSIS с оптимальным набором инструкций ?

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

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

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

Сообщение 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 ?

Да. Я его только как отладчик сейчас использую....
titoFF
Встал на лапы
Сообщения: 100
Зарегистрирован: Пт авг 02, 2013 07:20:04

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

Сообщение titoFF »

titoFF писал(а):Привет ARMщики! Встречайте новичка с новыми глупыми вопросами. Написал (хотя нет, скопипастил) я свою первую прошивку, залил её. Светодиодики весело мигают и всё бы ничего, но после отключения питания и подаче его вновь ничего не горит. STM32F4Discovery, пишу в кокосе, программировал им же и ST- Link.

Никто не подскажет, что это?
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

titoFF писал(а):Никто не подскажет, что это?

На данный вопрос ответа нет... ни у кого...
isx писал(а):
oleg110592 писал(а):RCC->AHBENR |= RCC_AHBENR_GPIOAEN;

Тут SPL используется же? Я пока без него практикуюсь, для понимания сути, так сказать :) .

Покажите пальцем... где там SPL???
menzoda писал(а):Я уже написал isx, что вспомнил про этого зверя. Это всего лишь такая же обертка над регистрами, как и SPL, только регистры не периферийные, а связаны с ядром. Их описание, расположение в памяти, значение отдельных битов можно найти в документе на само ядро. Я тогда сделал себе один заголовочный файл с определениями как периферийных, так и этих регистров, и работал с ними напрямую.

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

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

Сообщение isx »

isx писал(а):А как теперь вернуть пинам альтернативную функцию или сбросить чип к заводским настройкам?

Решил проблему закоротив BOOT0 с "+" до подачи питания. Затем вернул альтернативные функции и прошился...
HHIMERA писал(а):где там SPL?

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

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

Сообщение 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

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

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

Сообщение 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 раза.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение 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»