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

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
menzoda
Вымогатель припоя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

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

Сообщение menzoda »

Химера, не тупи, перечитай внимательно.

HHIMERA писал(а):От комментов воздержусь

Уже не воздержался.

HHIMERA писал(а):Да... это CMSIS...

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

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

Сообщение dosikus »

menzoda писал(а):Просто я не хотел путать автора, он же потом любое определение регистра будет считать CMSISом.



А получилось и новичка запутал и сам запуталси -
CMSIS - Cortex Microcontroller Software Interface Standard The ARM® Cortex® Microcontroller Software Interface Standard (CMSIS) is a vendor-independent hardware abstraction layer +стартап и хэдер с определениями от вендора ...

В CMSIS входит много чего , но в большинстве случаев юзают только CMSIS-CORE + стартап и хэдер с определениями от вендора
Последний раз редактировалось dosikus Пт апр 25, 2014 16:35:31, всего редактировалось 1 раз.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

menzoda писал(а):перечитай внимательно.

:facepalm:
Мне за тебя стыдно... не отличаем логические операции от арифметических... K&R тебе в помощь...
:facepalm:
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
menzoda
Вымогатель припоя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

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

Сообщение menzoda »

dosikus писал(а):А получилось и новичка запутал и сам запутался

Да, виноват-с.

HHIMERA писал(а):не отличаем логические операции от арифметических

Читай внимательно говорю.
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

menzoda писал(а):Читай внимательно говорю.

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

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

Сообщение isx »

Короче запутался я вообще. Хрен с ними пока :)
Подскажите как правильно записать условие в if:

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

if ((GPIOA->IDR & GPIO_IDR_1) == 1) {GPIOB->BSRR=GPIO_BSRR_BS_1;}
if ((GPIOA->IDR & GPIO_IDR_1) == 0) {GPIOB->BSRR=GPIO_BSRR_BR_1;}
BorisSPB
Встал на лапы
Сообщения: 145
Зарегистрирован: Ср фев 01, 2012 10:55:53

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

Сообщение BorisSPB »

Условие

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

if ((GPIOA->IDR & GPIO_IDR_1) == 1) {GPIOB->BSRR=GPIO_BSRR_BS_1;}

всегда будет ложно. Надо писать

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

if ((GPIOA->IDR & GPIO_IDR_1) != 0) {GPIOB->BSRR=GPIO_BSRR_BS_1;}

или

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

if ((GPIOA->IDR & GPIO_IDR_1) == GPIO_IDR_1) {GPIOB->BSRR=GPIO_BSRR_BS_1;}
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

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

Сообщение isx »

Спасибо! Наконец-то замигал :))
А почему if ((GPIOA->IDR & GPIO_IDR_1) == 1) {GPIOB->BSRR=GPIO_BSRR_BS_1;} оказывается всегда ложным?
BorisSPB
Встал на лапы
Сообщения: 145
Зарегистрирован: Ср фев 01, 2012 10:55:53

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

Сообщение BorisSPB »

Выше уже объяснили, но повторюсь:
GPIOA->IDR & GPIO_IDR_1 дает в результате GPIO_IDR_1(2) или 0, а 2 != 1
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

BorisSPB писал(а): Надо писать

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

if ((GPIOA->IDR & GPIO_IDR_1) != 0) {GPIOB->BSRR=GPIO_BSRR_BS_1;}

или

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

if ((GPIOA->IDR & GPIO_IDR_1) == GPIO_IDR_1) {GPIOB->BSRR=GPIO_BSRR_BS_1;}

Или просто...

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

if (GPIOA->IDR & GPIO_IDR_1) {GPIOB->BSRR=GPIO_BSRR_BS_1;}
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

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

Сообщение DX168B »

isx писал(а):Спасибо! Наконец-то замигал :))
А почему if ((GPIOA->IDR & GPIO_IDR_1) == 1) {GPIOB->BSRR=GPIO_BSRR_BS_1;} оказывается всегда ложным?


GPIO_IDR_IDR_1
- это маска с выделенным вторым битом. 0b0000000000000010 = 2 = 0x0002 что не равно единице.
При наложении маски, все биты сбрасываются в ноль, кроме тех, которые в маске указаны единицами. Нужно это для того, чтобы состояния
других битов не мешали нашей задаче. Нам ведь в данном случае нужен только второй бит? По этому, в этом примере, маской сбрасывается все, кроме второго бита.
Так что в условии можно сравнивать только с нулем. Если равно нулю и если не равно нулю, в зависимости от того,
от какого состояния нам нужно, чтобы сработало условие. От нуля или от единицы.
I am DX168B and this is my favourite forum on internet!
Аватара пользователя
DrLivsy
Встал на лапы
Сообщения: 89
Зарегистрирован: Чт ноя 03, 2011 17:05:03

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

Сообщение DrLivsy »

Доброго...,
подскажите, плз, напряжение питания STM32 действительно не может быть больше 4В? Даже чуть-чуть? :)
А то есть желание поставить акк со старой мобилки, а там же 4,25 на полном заряде...
Как поступить, занизить напругу с батареи диодом или можно подключить так?
Аватара пользователя
Pavel_1978
Опытный кот
Сообщения: 830
Зарегистрирован: Пт ноя 16, 2007 11:21:37

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

Сообщение Pavel_1978 »

DrLivsy писал(а):Доброго...,
подскажите, плз, напряжение питания STM32 действительно не может быть больше 4В? Даже чуть-чуть? :)
А то есть желание поставить акк со старой мобилки, а там же 4,25 на полном заряде...
Как поступить, занизить напругу с батареи диодом или можно подключить так?

Необходимо использовать понижающий стабилизатор на 3.3В. Подключение АКБ напрямую убьет микроконтроллер.
svs39
Встал на лапы
Сообщения: 95
Зарегистрирован: Вс авг 22, 2010 09:23:08

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

Сообщение svs39 »

DrLivsy писал(а):Доброго...,
подскажите, плз, напряжение питания STM32 действительно не может быть больше 4В? Даже чуть-чуть? :)

1- чуть-чуть...это сколько?
2- ну есть же технические характеристики и на STM32!!!!!!!!!!!!!!!!!!!!!!!!!!!! :kill:
svs39
Встал на лапы
Сообщения: 95
Зарегистрирован: Вс авг 22, 2010 09:23:08

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

Сообщение svs39 »

ошибочное сообщение, но не знаю как удалить
Аватара пользователя
slavokhire5
Прорезались зубы
Сообщения: 202
Зарегистрирован: Пн сен 26, 2011 13:48:25
Откуда: Харьков

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

Сообщение slavokhire5 »

Здравствуйте, коты:) Подскажите пожалуйста, как можно считать количество внешних импульсов STM32F107 с помощью таймера (допустим, насчитать 200 импульсов и только потом дать процессору прерывание). На какую ногу можно заводить "считаемый" сигнал? Я так понял, что на выводы, помеченные как ETR? В STM32F107 я таких насчитал всего 4. Как-то мало... Какие выводы еще можно задействовать?
Осилит дорогу идущий
----------
Пишу на Си за еду
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

slavokhire5 писал(а):Я так понял, что на выводы, помеченные как ETR?

Не обязательно... но количество всё равно будет определяться количеством таймеров... в данном случае пять максимум...
"Я не даю готовых решений, я заставляю думать!"(С)
Аватара пользователя
Гуня
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Сб мар 21, 2009 23:46:25

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

Сообщение Гуня »

Всем доброго времени суток! Кто запускал USB на stm32f103c8t6? Меня интересует где взять примеры для работы с интерфейсом HID, а также будет ли работать ЮСБ от внутреннего генератора HSI, или нужен обязательно внешний кварц.
Аватара пользователя
slavokhire5
Прорезались зубы
Сообщения: 202
Зарегистрирован: Пн сен 26, 2011 13:48:25
Откуда: Харьков

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

Сообщение slavokhire5 »

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

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

   //GPIO_InitTypeDef init;
   init.GPIO_Mode = GPIO_Mode_AF;
   init.GPIO_Pin = GPIO_Pin_0;
   init.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_Init(GPIOA,&init);

   GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_TIM8);


          RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM8, ENABLE);

     // Выбираем вход триггера от ETR
     TIM_SelectInputTrigger(TIM8, TIM_TS_ETRF);

     TIM_Cmd(TIM8, ENABLE);

в моем понимании этот кусок кода должен инициализировать таймер8 на тактирование от PA0. Таймер8 даже что-то считает. Вот только он продолжает считать если я вешаю РА0 на + питания. Что я делаю не так? Подозрения на настройки РА0, но как исправить в голову не приходит. *тактирование порта А включено выше по коду


UPD:
нашел решение. нужно было разрешить внешнее тактирование в регистре SMCR =)
Осилит дорогу идущий
----------
Пишу на Си за еду
Аватара пользователя
slavokhire5
Прорезались зубы
Сообщения: 202
Зарегистрирован: Пн сен 26, 2011 13:48:25
Откуда: Харьков

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

Сообщение slavokhire5 »

Что-то мне туго таймеры даются :facepalm: Не могу понять, какой именно режим использовать для прерывания по переполнению (или по сравнению) в advanced timers. Там аж 4 вектора, но какой из них мне нужен, никак не разберусь. Подскажите пожалуйста :(
Осилит дорогу идущий
----------
Пишу на Си за еду
Ответить

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