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

Кто любит RISC в жизни, заходим, не стесняемся.
The_D
Встал на лапы
Сообщения: 108
Зарегистрирован: Пт июл 06, 2012 14:28:17
Откуда: Россия. г.Смоленск

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

Сообщение The_D »

Мне так проще значения флажкам присваивать и контролировать.
Используя что-то типа:

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

typedef struct{
	TBool isNowSelected;
	TBool isPrevSelected;
	TBool isPush;
	TBool isCalibrating;
}TButtonState;
И в дальнейшем использовать типа:

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

	Button->State.isCalibrating=false;
                      
                   ....

	if (Button->State.isCalibrating==true) {
             ...
	}

Да можно по другому, но мне так проще.
Реклама
Аватара пользователя
Neekeetos
Держит паяльник хвостом
Сообщения: 993
Зарегистрирован: Пн сен 18, 2006 11:16:05
Откуда: Тула
Контактная информация:

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

Сообщение Neekeetos »

The_D писал(а):Мне так проще значения флажкам присваивать и контролировать.
..
Да можно по другому, но мне так проще.
Можно для экономии места и увеличения скорости использовать битовые поля, в кортексах есть ассемблерные команды которые это поддерживают, так что это еще и эффективно :

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

typedef struct{
	TBool isNowSelected:1;
	TBool isPrevSelected:1;
	TBool isPush:1;
	TBool isCalibrating:1;
}TButtonState;
TBool тут должен быть каким либо целым типом понятное дело.

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

	Button->State.isCalibrating=false;
                      
                   ....

	if ( Button->State.isCalibrating ) {
             ...
	}
Единственное чем мне не нравятся подобные конструкции это тем что они крайне небезопасны, если использовать их в прерываниях, тк не обеспечивают атомарного доступа. Можно например легко проглядеть как флажок считаный в основном коде для анализа в этот самый момент меняет содержимое из прерывания.
Информация по RLC mini находится >тут<
Реклама
kalobyte
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

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

Сообщение kalobyte »

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

мне совсем не хочется писать вот такой ад RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC , ENABLE); и я хотел бы, чтобы все это писалось само при написании пары букв и потом можно было бы выбрать из списка (если несколько похожих)

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

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

как-то не задумывался раньше над этим и для х86 писал какие надо типы и для авр писал 8 и 16 когда надо было 16

а как правильно делать с арм32? а если массив не переменных, а просто данные во флеше? их тоже все 32 бит делать?
тематические ответы только в форуме, в приват не пишите
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

Да делай как хочешь... если речь о Cortex... просто операции с uint32_t будут выполняться быстрее... если это важно и нужно...
"Я не даю готовых решений, я заставляю думать!"(С)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
balmer
Это не хвост, это антенна
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

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

Сообщение balmer »

mvm писал(а): т.е. если я беру STM32VLDISCOVERY и хочу работать с STM32F105V8T6 у меня будет много проблем?
Лично я прошивал DiscoverySTM32L и STlink v2 - разницы с програмной точки зрения между ними нет, хотя была у меня одна кривая схемка, к которой Discovery подключалась через раз, а ST Link подключался стабильно всегда.
Реклама
Аватара пользователя
balmer
Это не хвост, это антенна
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

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

Сообщение balmer »

Посоветуйте, что делать. Спаял схемку на STM32L152RBT6, она даже немного работает, но от внутреннего HSI осциллятора. Пытаюсь запустить от внешнего осциллятора на 4 МГц, конденсаторы как обычно 22 pF. Не получается. Причем после этого микроконтроллер программируется только под RESET. Чтобы это могло быть? Если это хардварная проблемма, то как понять что кварц нестабильно работает? Осциллографом тыкать в него не вариант, ибо генерация сразу срывается.

Привожу кусок схемки в аттаче. Может имеет смысл заземлить корпус кварца? А может с кварцем на 16 Мгц будет лучше работать?

PS: Торможу. Проблема таки была програмная в строчке RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMUL3 | RCC_CFGR_PLLDIV1);
Вложения
hse_fail.png
кривой HSE
(52.64 КБ) 488 скачиваний
Последний раз редактировалось balmer Вс авг 25, 2013 00:27:20, всего редактировалось 1 раз.
Реклама
zöner
Вымогатель припоя
Сообщения: 502
Зарегистрирован: Чт фев 16, 2012 19:00:11

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

Сообщение zöner »

или может быть он есть, но где-то спрятан?
может хедеры не видит ?
Обфускатор
Родился
Сообщения: 13
Зарегистрирован: Пн апр 29, 2013 22:05:08

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

Сообщение Обфускатор »

наверное стоило написать в эту тему.
По поводу usb + stm32f103cr8
Помогите разобраться.
http://radiokot.ru/forum/viewtopic.php?f=59&t=93582
kalobyte
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

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

Сообщение kalobyte »

тут на хабре выложили годную иде с автокомплитом как я и хотел (прям таки как по моему хотению)
и вот что меня шокирует
http://habrahabr.ru/post/191624/
скомпилился файл, который мигает парой диодов, а сожрал уже 8к из 64 :shock:
или может быть я чего не так понимаю и в нем еще есть отладочная инфа, а чистый хекс будет меньше?
при таком расходе памяти 64к это становится уже минимумом :facepalm:

а вот еще тупой вопрос
вот есть стандартная библиотека периферии
вот скачали ее в отдельную папку, а потом из нее надо файлы что ли руками копировать в папки проекта и потом руками же добавлять в проект, а потом руками прописывать инклюды? :shock:
или же можно просто добавлять инклюд типа для работы с ацп и все, а иде сама уже знает где нужный файл

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

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

Сообщение dosikus »

kalobyte писал(а): а вот еще тупой вопрос
вот есть стандартная библиотека периферии
вот скачали ее в отдельную папку, а потом из нее надо файлы что ли руками копировать в папки проекта и потом руками же добавлять в проект, а потом руками прописывать инклюды? :shock:
или же можно просто добавлять инклюд типа для работы с ацп и все, а иде сама уже знает где нужный файл

ведь этак я 10 проектов наделаю, а библиотека обновляется и мне что руками каждый файл обновлять в моих проектах потом? это же быдлокодерство получается
Ну ты же любитель быдлокодить . :)))
Здесь как , или ты делаешь хорошо себе - держишь свою долбанную SPL в отдельной папке и подключаешь исходники к проекту и прописываешь путь к хэдерам, ничего не копируя . При этом досталяешь батхед тому с кем поделишься проектом . Зато обновить SPL легко .
Или же копируешь , снова же долбанную SPL, каждый раз в папку нового проекта , зато другие смогут скомпилировать не правя проект.

Ну и вариант лишенный вышеописанного геморроя - не использовать SPL , Embloks, кокосы и прочую хрень якобы облегчающую жизнь калычу ...
kalobyte
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

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

Сообщение kalobyte »

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

я вообще в шоке от сегодняшнего ит :facepalm:
тематические ответы только в форуме, в приват не пишите
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

kalobyte писал(а):и что же тогда использовать?
Перестать "облегчать" себе жизнь , использовать вменяемую IDE - Keil или IAR, забыть SPL как страшный сон. :)))
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

kalobyte писал(а): для авр нет никакой стандартной библиотеки и каждый там сам выдумывает или использует чужое
Сейчас так не модно... сейчас модно быть кармодрочером-быдлокодером... хомячком с претензиями на мартышкин труд и постоянными мастурбациями мозга... :)))
Загляни на ДиАхтунг... Идиотов поле Куликово... "Удобная настройка портов"... "Удобные внешние прерывания"... и прочие удобства для головы вместо >|<опы!!! :)))
Обязательно нужно исписать несколько экранов, открыть несколько файлов... вместо того, чтобы написать три строчки, заполнить три регистра... В результате - "Кто как хочет, так и .....!"(С)
я вообще в шоке от сегодняшнего ит :facepalm:
Время такое...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

HHIMERA писал(а): Загляни на ДиАхтунг...
Он там прописан . :)))
kalobyte
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

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

Сообщение kalobyte »

dosikus писал(а): использовать вменяемую IDE - Keil или IAR
:facepalm:
пусть сначала прикрутят нормальный редактор кода с подсказками и автокомплитом, стучать по кнопкам - вот мартышкин труд
HHIMERA писал(а):заполнить три регистра...
если заполнить 3 регистра проще, то зачем спл? почему все орут про спл? зачем ст тратит силы на написание ее?
оказалось, что запомнить и заполнить 3 8битных регистра проще, чем 3 32битных :)))
наверное поэтому и придумали подобие человеческих функций

2013 год - гигабайты и гигагерцы за копейки продаются, а нет нормальных инструментов для разработки и для начала работы нужно чуть ли не по битам разбираться в каждом блоке и ладно бы это был авр, так тут 32 битный с кучей блоков и настроек
Исходя из вышесказанного, такая комбинация бит настроит обе ножки на выход с максимальной частотой 50 МГц в обычном режиме push-pull, что нам вполне подходит. Эта строчка устанавливает в единицы биты MODE:

GPIOC->CRH |=0x33;

А вот эта, обнуляет биты CNF:

GPIOC->CRH &= ~0xCC;
а через месяц ты уже не будеш помнить значения магических цифр
http://easystm32.ru/for-beginners/11-mcu-ports

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

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

Сообщение dosikus »

kalobyte писал(а): а через месяц ты уже не будеш помнить значения магических цифр
Это он "на пальцах" обьяснил тебе , что бы понятней было .
Вот пример инита SPI , вместо километровых простыней SPL. Все ясно и понятно .

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

 void SPI1_init(void)
	{
		
		RCC->AHBENR|=RCC_AHBENR_GPIOAEN;
		RCC->APB2ENR|=RCC_APB2ENR_SPI1EN;
		
		GPIOA->MODER|= 
		        GPIO_MODER_MODER4_1|
		        GPIO_MODER_MODER5_1|
		        GPIO_MODER_MODER6_1|
		        GPIO_MODER_MODER7_1;
            		
		
		GPIOA->OSPEEDR|=
		         GPIO_OSPEEDER_OSPEEDR4|
		         GPIO_OSPEEDER_OSPEEDR5|
		         GPIO_OSPEEDER_OSPEEDR6|
		         GPIO_OSPEEDER_OSPEEDR7;
	
		
	SPI1->CR1 |= SPI_CR1_BR_1 |SPI_CR1_MSTR;       // 
	SPI1->CR2  = 0x800;   //  9 bit
  SPI1->CR2 |=SPI_CR2_SSOE|SPI_CR2_NSSP;
	SPI1->CR1 |= SPI_CR1_SPE;	
	}
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

kalobyte писал(а):а через месяц ты уже не будеш помнить значения магических цифр
Калыч... не юродствуй... :)))
На АВР ты тоже магическими цифрами говнокАлбасил??? Не??? В жедер, хоть разок заглядывал... по файлам CMSIS по диагонали пробегался???
Нах мне Out_Pin_PORT_PUPD_ALTERNAT... я через месяц быстрее это забуду... Зато LED_GREEN_on я нормально осознаю хоть в PIC32, хоть в АВР, хоть в STM32, хоть в MSP430...
поэтому наверное и пишут 3 страницы текста, чтобы потом в 3 строчки легко было настроить порты, а не писать многоэтажные конструкции и лепить структуры
Ты о чём??? "Долой царя, да здавствует король!"(С)??? Из одного гавна в другое??? В чём тайный смысл???

"Чем больше строк,
Тем круче развлечение,
Искать потом ошибки -
Супер-увлечение!
В глазах от строк рябит,
Но это не помеха,
Для мозга, глаз и рук,
Отличная потеха!"
:)))
"Я не даю готовых решений, я заставляю думать!"(С)
kalobyte
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

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

Сообщение kalobyte »

HHIMERA писал(а):На АВР ты тоже магическими цифрами говнокАлбасил???
использовал регистры и названия битов, а так же макросы и свои редефайны
никогда числа не писал и отказался от кодогенератора из одного известного компилятора
включал инклюды стандартные из компилятора и готово
HHIMERA писал(а):по файлам CMSIS по диагонали пробегался???
одним глазом глянул
потом пробовал почитать мануал к библиотеке, но не осилил
точней ман был к спл, а цмсис я не знаю для чего, что-то с ядром арм связано, но я надеялся, что спл берет на себя настройку ядра
и там еще идет один файл на асме в каждый проект и типа он что-то там делает для запуска, я не вдавался в подробности
для меня настроить порт уже целый гимор
это мне теперь раскрасить биты в регистрах и распечатать ворох надо будет
я так делаю иногда при разборке регистров какой мс
HHIMERA писал(а):Зато LED_GREEN_on я нормально осознаю
это пользовательский редефайн и он тут при чем? я этим в авр пользуюсь всегда
HHIMERA писал(а):Ты о чём???
про статью на ее об удобной настройке портов и прерываний
типа 3 страницы кода, чтобы потом в пару строчек удобно настроить и итоговый код был меньше того, что генерит спл и чтобы не тупо регистрами оперировать
регистры - это абстрактные сокращение букв, а вот функции имеют боле менее человеческое название и легко запомнить
а еще есть какой-то другой путь или другая библиотека и там по принципу ардуины названия и она еще легче
флюентный код что ли это называется
dosikus писал(а):Это он "на пальцах" обьяснил тебе , что бы понятней было
да я уже понял, проще было бы если бы писал сразу названия битов
dosikus писал(а):вместо километровых простыней SPL. Все ясно и понятно
ну одни буквы же :facepalm:
GPIO_MODER_MODER4_1 надо смотреть что это такое и помнить
по всем регистрам надо раскуривать даташит
тематические ответы только в форуме, в приват не пишите
Аватара пользователя
urry
Сверлит текстолит когтями
Сообщения: 1262
Зарегистрирован: Пн дек 08, 2008 10:58:48
Откуда: Винница
Контактная информация:

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

Сообщение urry »

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

потом пробовал почитать мануал к библиотеке, но не осилил
:)

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

да я уже понял, проще было бы если бы писал сразу названия битов 
:)
хотел кинуть свой вариант обработки битов, но напрягает чел с адекватностью, если честно....
(задумчиво)\
Так что там с сыроедением ?
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

Кидай... Одним больше, одним меньше... что это изменит???
Может кому и поможет...
"Я не даю готовых решений, я заставляю думать!"(С)
Ответить

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