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

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

Сообщение The_D »

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

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

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

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

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

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

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

Сообщение 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 находится >тут<
Контактная информация:
Реклама
Друг Кота
Сообщения: 13796
Зарегистрирован: Чт сен 20, 2007 14:08:00

Сообщение kalobyte »

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

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

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

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

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

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

Сообщение HHIMERA »

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

Сообщение balmer »

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

Сообщение 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 КБ) 491 скачивание
Последний раз редактировалось balmer Вс авг 25, 2013 00:27:20, всего редактировалось 1 раз.
Реклама
Вымогатель припоя
Сообщения: 502
Зарегистрирован: Чт фев 16, 2012 19:00:11

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

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

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

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

Сообщение kalobyte »

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

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

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

Сообщение dosikus »

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

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

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

Сообщение kalobyte »

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

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

Сообщение dosikus »

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

Сообщение HHIMERA »

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

Сообщение dosikus »

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

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

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

Сообщение HHIMERA »

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

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

Сообщение kalobyte »

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

Сообщение urry »

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

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

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

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

Сообщение HHIMERA »

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

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