STM32 новичку в ARM что к чему
Re: STM32 новичку в ARM что к чему
Поделитесь пожалуйста русскоязычной ссылкой (если имеется таковая) по описаеию функций стартапов и CMSIS, я ато за пол дня ни на что стоящее так и не наткнулся, везде поверхностное описание их функций без сути процесса...
Re: STM32 новичку в ARM что к чему
Химера, ты знатный тролль, да еще с замашками высокомерия. С троллем спорить - себя не уважать, и так уже я дал слабину написав предыдущий пост. Все, все, все, ухожу, ты выиграл! Можешь написать мне напоследок еще раз, что я дурак, а ты умный, и порешим на этом.
Насчет CMSIS не знаю - не использовал, а со стартапами и скаттер-файлами (те, которые, для линкера) все не очень хорошо. Я даже на английском не находил толкового описания, выуживал по крупицам из разрозненных документов от ARM. Если ты все-таки решил в этом разобраться, то спрашивай тут. Могу даже в личку кинуть минимально необходимые файлы с минимально необходимым содержимым, попутно объяснив каждую строку. Конечно учитель из меня не очень, но мне кажется лучше с живым человеком поговорить, чем выуживать огрызки из интернетов. Но это все только по базовым вещам, CMSIS и SPL я не знаю, как настроить конкретную периферию - тоже, это все в даташите описано и я такие вещи не запоминаю.
isx писал(а):Поделитесь пожалуйста русскоязычной ссылкой (если имеется таковая) по описаеию функций стартапов
Насчет CMSIS не знаю - не использовал, а со стартапами и скаттер-файлами (те, которые, для линкера) все не очень хорошо. Я даже на английском не находил толкового описания, выуживал по крупицам из разрозненных документов от ARM. Если ты все-таки решил в этом разобраться, то спрашивай тут. Могу даже в личку кинуть минимально необходимые файлы с минимально необходимым содержимым, попутно объяснив каждую строку. Конечно учитель из меня не очень, но мне кажется лучше с живым человеком поговорить, чем выуживать огрызки из интернетов. Но это все только по базовым вещам, CMSIS и SPL я не знаю, как настроить конкретную периферию - тоже, это все в даташите описано и я такие вещи не запоминаю.
Последний раз редактировалось menzoda Пт апр 25, 2014 10:06:43, всего редактировалось 1 раз.
Re: STM32 новичку в ARM что к чему
А можете кинуть проект по-сложнее, где не использовались не стартапы, ни CMSIS ни SPL? Лучше бы было один раз увидеть, тогда всё станет понятнее...
Re: STM32 новичку в ARM что к чему
Как раз стартап - это обязательная вещь. Насчет проекта посложнее - у меня есть только для ARM7TDMI под старое средство разработки ARM ADS, используемый для небольших тестов. По сути отличается от проектов для Cortex-M только стартап файлом, дальше все равно Си идет, а он везде одинаковый. Был еще где я двигателем управлял, но к сожалению я его удалил за ненадобностью.
В общем я могу рассказать про стартап для Cortex-M и показать небольшой проектик для ARM7TDMI. Я думаю, что суть будет понятна, и отличия от проекта с CMSIS и SPL тоже станут понятны.
Да, чуть не забыл, какое средство разработки используешь?
В общем я могу рассказать про стартап для Cortex-M и показать небольшой проектик для ARM7TDMI. Я думаю, что суть будет понятна, и отличия от проекта с CMSIS и SPL тоже станут понятны.
Да, чуть не забыл, какое средство разработки используешь?
Последний раз редактировалось menzoda Пт апр 25, 2014 10:10:26, всего редактировалось 1 раз.
Re: STM32 новичку в ARM что к чему
Буду очень признателен 
Re: STM32 новичку в ARM что к чему
Ничего не понимаю. Залил код в Кейл:
Запустил отладку с внешнего МК на STMF3Descovery. Ничего не работает. Потом заметил, что не правильно включил тактирование портов Исправил строку RCC->AHBENR = 0x00010014; на RCC->AHBENR = 0x00060014; запустил отладку, вылетела какая-то ошибка и внешний МК теперь не определяется... Что опять не так у меня?
Код: Выделить всё
#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; запустил отладку, вылетела какая-то ошибка и внешний МК теперь не определяется... Что опять не так у меня?
Re: STM32 новичку в ARM что к чему
Не забивайте себе голову всякой ерундой... "Мы пойдём другим путём!"(С) - путь, как правило, в никуда...
Все эти фенечки-рюшечки со стартапом и прочим нужны в исключительных случаях (при самоконтроле ПО, например)... да и то при полном понимании происходящего... что не для новичка, увы...
Все эти фенечки-рюшечки со стартапом и прочим нужны в исключительных случаях (при самоконтроле ПО, например)... да и то при полном понимании происходящего... что не для новичка, увы...
"Я не даю готовых решений, я заставляю думать!"(С)
Re: STM32 новичку в ARM что к чему
HIMERA А может по существу есть предложения?
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: STM32 новичку в ARM что к чему
Что опять не так у меня?
PA13 PA14 на вывод настроены? На PA13 PA14 отладчик?
условие (GPIOB->IDR & 0x02) == 1 будет разве выполняться?
чтоб не путаться, может так лучше периферию включать:
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
Re: STM32 новичку в ARM что к чему
menzoda писал(а):Химера, ты знатный тролль, да еще с замашками высокомерия. С троллем спорить - себя не уважать, и так уже я дал слабину написав предыдущий пост. Все, все, все, ухожу, ты выиграл! Можешь написать мне напоследок еще раз, что я дурак, а ты умный, и порешим на этом.
.
И все же хотелось лицезреть как ты выкрутишься из своего же бреда .
Оптимальный квик_старт для нубов обсуждался неоднократно и как раз включает юзанье именно CMSIS с хэдером и стартапом от вендора .
Причем не только под STM32 но и под TI, LPC и допотопные SAM от AVR .
Что предложишь ?
isx писал(а): запустил отладку, вылетела какая-то ошибка и внешний МК теперь не определяется... Что опять не так у меня?
Выставь в настройках STLink- Connect under reset ...
isx, дискаверина F3 а проект под F0 ????????
Последний раз редактировалось dosikus Пт апр 25, 2014 13:17:27, всего редактировалось 1 раз.
Re: STM32 новичку в ARM что к чему
Зачем преждевременно делать из человека нуба? Постараюсь рассказать ему простым языком , но как оно есть (собственно уже начал). Если захочет разобраться, то ему будет полезна эта информация, мне бы в свое время очень пригодилась. Если для него это будет сложно, то хотя бы какие-то вещи отложатся на задворках сознания и возможно позволят избежать в будущем некоторых вопросов.
Re: STM32 новичку в ARM что к чему
menzoda писал(а):Зачем преждевременно делать из человека нуба? Постараюсь рассказать ему простым языком , но как оно есть (собственно уже начал).
Дык а зачем делать , если подобные вопросы только нубы и ставят причем полные .
Кто определился в эмбедде подобной ерундой не страдает .
Давай пиши .
Ну стартап и систем - я согласен можно и свой, тем более тот же систем от STM генерится облегчалкой .
Теперь внимание вопрос - хэдер с определением регистров и бит будешь свой стряпать ?
А так же хэдеры от CMSIS с оптимальным набором инструкций ?
Re: STM32 новичку в ARM что к чему
dosikus писал(а):Дык а зачем делать , если подобные вопросы только нубы и ставят причем полные .
Если ничего не делать и поощрять незнание, то нубы останутся нубами, а так есть шанс. Я сам был нубом, и если бы знал о существовании данного форума раньше, то вы от меня наверное таких же нубских вопросов наслушались. Наверное хорошо, что не знал, сел за книжки, за словарь англо-русский, и теперь я... тоже нуб, но немного поменьше.
Химера вот считает, что новичкам необязательно знать такие подробности, пользуйся чем дают и не рыпайся. Я же уверен, что нельзя построить дом, а потом уже задумываться о фундаменте, разве что сарай или лачужку какую.
dosikus писал(а):Давай пиши
По стартапу я ему в личку написал уже, жду реакции. Если интересно могу тебе отправить. Вообще я думаю хорошо бы создать отельную тему с описанием таких вот штук. Кому интересно может позадавать вопросы, кому нет - пройдет мимо.
dosikus писал(а):хэдер с определением регистров и бит будешь свой стряпать ?
Я нет, максимум что-нибудь переименую как мне удобно. А вообще это полезно хоть один раз сделать, чтобы в случае чего можно было самому добавить какие-нибудь определения. Мало ли... Я встречал в них пару раз ошибки.
dosikus писал(а):А так же хэдеры от CMSIS с оптимальным набором инструкций ?
Я уже написал isx, что вспомнил про этого зверя. Это всего лишь такая же обертка над регистрами, как и SPL, только регистры не периферийные, а связаны с ядром. Их описание, расположение в памяти, значение отдельных битов можно найти в документе на само ядро. Я тогда сделал себе один заголовочный файл с определениями как периферийных, так и этих регистров, и работал с ними напрямую.
Да, добавлю. Я не настаиваю, что необходимо проснувшись ночью, по памяти состряпать свой стартап со скаттером, не в коем случае. Нужно хотя бы иметь общее представление что там происходит и для чего примерно нужна та или иная конструкция.
Re: STM32 новичку в ARM что к чему
oleg110592 писал(а):На PA13 PA14 отладчик?
Да. Похоже я понял к чему этот вопрос
oleg110592 писал(а):условие (GPIOB->IDR & 0x02) == 1 будет разве выполняться?
А почему нет?
oleg110592 писал(а):RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
Тут SPL используется же? Я пока без него практикуюсь, для понимания сути, так сказать
dosikus писал(а):Выставь в настройках STLink- Connect under reset
Выставил, результата нет(
dosikus писал(а):дискаверина F3 а проект под F0 ?
Да. Я его только как отладчик сейчас использую....
Re: STM32 новичку в ARM что к чему
titoFF писал(а):Привет ARMщики! Встречайте новичка с новыми глупыми вопросами. Написал (хотя нет, скопипастил) я свою первую прошивку, залил её. Светодиодики весело мигают и всё бы ничего, но после отключения питания и подаче его вновь ничего не горит. STM32F4Discovery, пишу в кокосе, программировал им же и ST- Link.
Никто не подскажет, что это?
Re: STM32 новичку в ARM что к чему
titoFF писал(а):Никто не подскажет, что это?
На данный вопрос ответа нет... ни у кого...
isx писал(а):oleg110592 писал(а):RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
Тут SPL используется же? Я пока без него практикуюсь, для понимания сути, так сказать.
Покажите пальцем... где там SPL???
menzoda писал(а):Я уже написал isx, что вспомнил про этого зверя. Это всего лишь такая же обертка над регистрами, как и SPL, только регистры не периферийные, а связаны с ядром. Их описание, расположение в памяти, значение отдельных битов можно найти в документе на само ядро. Я тогда сделал себе один заголовочный файл с определениями как периферийных, так и этих регистров, и работал с ними напрямую.
Озвучьте пользу от проделанного... кроме потери времени и создания "само в себе"... если 95% задач этого не требуют...
И это... 100%-ая уверенность есть, что ничего не забыл, не пропустил и всё сделал правильно???
"Я не даю готовых решений, я заставляю думать!"(С)
Re: STM32 новичку в ARM что к чему
isx писал(а):А как теперь вернуть пинам альтернативную функцию или сбросить чип к заводским настройкам?
Решил проблему закоротив BOOT0 с "+" до подачи питания. Затем вернул альтернативные функции и прошился...
HHIMERA писал(а):где там SPL?
Я думал это её облегчённый способ записи... А что это тогда, CMSIS? По факту же мы с какой-то функцией, а не с битами работаем...

Re: STM32 новичку в ARM что к чему
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равнозначно записи в определенную ячейку памяти (регистр) определенного числа.
Re: STM32 новичку в ARM что к чему
isx писал(а): Я думал это её облегчённый способ записи... А что это тогда, CMSIS? По факту же мы с какой-то функцией, а не с битами работаем...
Где там функции?
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 раза.
Re: STM32 новичку в ARM что к чему
isx писал(а):Я думал это её облегчённый способ записи... А что это тогда, CMSIS? По факту же мы с какой-то функцией, а не с битами работаем...
Да... это 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.
Сам хоть понял что написал??? От комментов воздержусь дабы не поднимать уровень истерики...
"Я не даю готовых решений, я заставляю думать!"(С)