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

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

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

Сообщение oleg110592 »

RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);
сама функция такая

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

void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState)
{
 /* Check the parameters */
  assert_param(IS_RCC_APB1_PERIPH(RCC_APB1Periph)); 
  assert_param(IS_FUNCTIONAL_STATE(NewState));

  if (NewState != DISABLE)
  {
    RCC->APB1ENR |= RCC_APB1Periph;
  }
  else
  {
    RCC->APB1ENR &= ~RCC_APB1Periph;
  }
}

зависать может скорее всего на assert_param
может попробовать типа так
RCC->APB1ENR |= RCC_APB1ENR_I2C1EN;
Аватара пользователя
balmer
Это не хвост, это антенна
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

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

Сообщение balmer »

oleg110592 писал(а):зависать может скорее всего на assert_param


Нет, там ничего не виснет. Доходит до основного цикла и крутится там. Впрочем, чутка подумал пока шел н работу. Можно будет еще уточнить, что перестало работать. DAC, DMA или TIMER. Вечером таки буду разбираться, раз уж проблемма вылезла. Если что, исходнники здесь если кому не лень покопаться.
Аватара пользователя
balmer
Это не хвост, это антенна
Сообщения: 1433
Зарегистрирован: Вс дек 02, 2012 03:13:48
Откуда: Калининград

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

Сообщение balmer »

Разобрался таки, что к чему :)))
Дело было вот в таком коде:

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

   DAC_InitTypeDef DAC_InitStructure;
   DAC_InitStructure.DAC_Trigger = DAC_Trigger_T2_TRGO;
   DAC_InitStructure.DAC_WaveGeneration = DAC_WaveGeneration_None;
   DAC_InitStructure.DAC_OutputBuffer = DAC_OutputBuffer_Enable;
   DAC_Init(DAC_Channel_1, &DAC_InitStructure);


Код копипастился с STM32F303.
На STM32F4xx в структуре DAC_InitTypeDef появилось дополнительное поле. Когда этот код вызывался вначале, то оно видать заполнялось правильно. Когда же этот код вызывался после других функций, то в стеке были уже другие значения и DAC не инициализировался корректно.
Теперь поставил USE_FULL_ASSERT 1 для DEBUG версии и оно падает где надо при неправильном параметре :)
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25172
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

Хотелось бы, коллеги, прояснить для себя идеологию построения АНАЛОГОВОГО франтэнда у STM32.
То есть хотелось бы понять ДЛЯ КАКОЙ ЦЕЛИ заточен достаточно мудреный мультиплексор соединенный по логике управления с модулем семплирования-преобразования...
Аватара пользователя
Леонид Иванович
Друг Кота
Сообщения: 4779
Зарегистрирован: Сб апр 02, 2011 12:40:46
Откуда: Минск
Контактная информация:

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

Сообщение Леонид Иванович »

balmer писал(а):в стеке были уже другие значения и DAC не инициализировался корректно.


Была очень похожая проблема: http://leoniv.livejournal.com/194021.html

КРАМ писал(а):ДЛЯ КАКОЙ ЦЕЛИ заточен достаточно мудреный мультиплексор


Имеете в виду регулярные и инжектированные каналы АЦП? Регулярные служат для постоянной оцифровки каких-то значений с постоянным темпом, а инжектированные (внеочередные) - это всякие сигналы защиты, аварии, которые могут вклиниваться в общий поток в произвольные моменты времени. Как вариант, применимо в электроприводах или ключевых преобразователях.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25172
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

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

Сообщение КРАМ »

Леонид Иванович писал(а):Регулярные служат для постоянной оцифровки каких-то значений с постоянным темпом, а инжектированные (внеочередные) - это всякие сигналы защиты, аварии, которые могут вклиниваться в общий поток в произвольные моменты времени.

Премного благодарен, Леонид Иванович. Это ровно то, что требовалось.
:beer:
jazz393
Встал на лапы
Сообщения: 118
Зарегистрирован: Ср фев 05, 2014 18:54:39

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

Сообщение jazz393 »

Всем добрый день, уже не первый раз спотыкаюсь о грабли - я не могу найти где в referenc manual на какой-либо stm32 написано как конфигурировать порты под альтернативные функции, не то значение, которое пишется в регистр GPIO->AFIOH/L а, имеется ввиду следующее - скажем под i2c порты должны быть в Output/open-drain/pull_up, и вот именно это я найти не могу(сейчас ищу под spi), в описании самого spi/i2c/uart и т.д. я этого не вижу, в описании портов тоже, мб я плохо ищу/смотрю или пропустил, просто не хочется каждsй раз бегать на форум и спрашивать как настраивать порты под тот или иной интерфейс/функцию .... а в доке найти не могу =((
HHIMERA
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

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

Сообщение HHIMERA »

Это не должно исходить от референса... это должно исходить от ваших знаний работы железа и текущей задачи...
И выход таймера можно настроить open drain с подтяжкой... и УАРТ... и SPI...
"Я не даю готовых решений, я заставляю думать!"(С)
jazz393
Встал на лапы
Сообщения: 118
Зарегистрирован: Ср фев 05, 2014 18:54:39

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

Сообщение jazz393 »

HHIMERA писал(а):Это не должно исходить от референса... это должно исходить от ваших знаний работы железа и текущей задачи...
И выход таймера можно настроить open drain с подтяжкой... и УАРТ... и SPI...

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

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

Сообщение HHIMERA »

А почему оно там должно быть??? Вы не знаете как работает УСАРТ, SPI и прочее??? Так почему референс вам должен это объяснять???
Референс должен объяснять взаимодействие регистров, флагов и модулей... а не элементарщину...
"Я не даю готовых решений, я заставляю думать!"(С)
jazz393
Встал на лапы
Сообщения: 118
Зарегистрирован: Ср фев 05, 2014 18:54:39

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

Сообщение jazz393 »

HHIMERA писал(а):А почему оно там должно быть??? Вы не знаете как работает УСАРТ, SPI и прочее??? Так почему референс вам должен это объяснять???
Референс должен объяснять взаимодействие регистров, флагов и модулей... а не элементарщину...

знаю, но какие-то вещи я забываю, в силу того что сталкиваюсь с большим объемом информации. Я больше программист, нежели железячник
Аватара пользователя
DX168B
Друг Кота
Сообщения: 4468
Зарегистрирован: Вс янв 24, 2010 19:19:52
Откуда: Главный Улей России (Moscow)
Контактная информация:

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

Сообщение DX168B »

jazz393 писал(а):Всем добрый день, уже не первый раз спотыкаюсь о грабли - я не могу найти где в referenc manual на какой-либо stm32 написано как конфигурировать порты под альтернативные функции, не то значение, которое пишется в регистр GPIO->AFIOH/L а, имеется ввиду следующее - скажем под i2c порты должны быть в Output/open-drain/pull_up, и вот именно это я найти не могу(сейчас ищу под spi), в описании самого spi/i2c/uart и т.д. я этого не вижу, в описании портов тоже, мб я плохо ищу/смотрю или пропустил, просто не хочется каждsй раз бегать на форум и спрашивать как настраивать порты под тот или иной интерфейс/функцию .... а в доке найти не могу =((

К STM32 прилагаются три листа. Это:
1. Datasheet
2. Reference Manual
3. Programming manual

Первый несет в себе информацию об электрических параметрах, корпусах и распиновке.
Причем, там же приводится таблица альтернативных режимов GPIO. Из этой таблицы выбирается значение,
которое надо прописывать в GPIOx->AFR[x] (для F4xx серии) чтобы выбрать ту или иную альтернативную функцию.

Второй - собственно описание режимов работы периферии, ее регистров и битов этих регистров.

Третий - больше касается работы ядра, контроллера прерываний, ассемблерных инструкций, протоколов прошивки и отладки и прочего такого.

Режим ноги выбирается исходя из требования к той или иной периферии. I2C требует OD выход с подтяжкой.
UART требует обычный PP выход и вход без подтяжек.
Обычный SPI требует два выхода PP и вход с или без подтяжки.
Так что тут надо понимать работу различных интерфейсов, чтобы корректно сконфигурировать порт.

По поводу альтернативных режимов GPIO
ИМХО, в F4xx-й серии это сделали куда грамотнее, чем в F1xx-й серии (с ихними MAPR регистрами), ибо подход с мультиплексорами позволяет в дальнейшем
одну и ту же периферию кидать куда угодно. В STM32F439xxxx пины некоторой периферии имеют уже по три варианта ремапа.
I am DX168B and this is my favourite forum on internet!
watchmaker
Поставщик валерьянки для Кота
Сообщения: 2179
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков
Контактная информация:

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

Сообщение watchmaker »

Немного нубский вопрос, только начинаю возиться с стм32. Можно ли малой кровью портировать имеющийся проект с STM32L162 на STM32L053? Пытаюсь собрать напрямую - линкер ругается на прерывания.

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

Error[Lp002]: relocation failed: value out of range or illegal: 0xffffb1b4 
     Kind    : R_ARM_THM_JUMP11[0x66]
     Location: 0x0800503c
               Module:  E:\Documents\IAR\Project\lcd\Debug\Obj\startup_stm32l1xx_md.o
               Section: 21 (.text)
               Offset:  0x0
     Target  : 0x080001f5
               "RTC_WKUP_IRQHandler"
               Module:  E:\Documents\IAR\Project\lcd\Debug\Obj\main.o
               Section: 17 (.text)
               Offset:  0x101

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

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

Сообщение dosikus »

watchmaker писал(а): Пытаюсь собрать напрямую - линкер ругается на прерывания.
...
и так далее 8 раз с разными прерываниями. Что нужно еще сделать?


Для начала - править имена хэндлеров прерываний- смотреть соответствия в стартапе .
Но это только начало... :)))
watchmaker
Поставщик валерьянки для Кота
Сообщения: 2179
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков
Контактная информация:

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

Сообщение watchmaker »

В том-то дело, что на 100-152-162 всё прекрасно собирается без всяких эрроров. И работает. Так что причина вряд ли тут в именах. Или у L0** имена прерываний другие?
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

watchmaker, ну что ж, с первого раза не доходит :
смотреть соответствия в стартапе .
watchmaker
Поставщик валерьянки для Кота
Сообщения: 2179
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков
Контактная информация:

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

Сообщение watchmaker »

Понятно, будем разбираться.
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
cahek80
Держит паяльник хвостом
Сообщения: 903
Зарегистрирован: Сб сен 11, 2010 17:32:42

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

Сообщение cahek80 »

Подскажите, пожалуйста по такой проблеме: Не могу завести таймеры под stm32f030f4
Поскольку контроллер 20 лапый, для экономии выводов использую генерацию от внутреннего генератора.
При этом уже попробовал создать проект через STM32CubeMX, и помигать светодиодом в прерывании - всё-равно глухо. На stm32f100 stm32f103 с такой проблемой не сталкивался.
https://www.dropbox.com/s/oyp8y5dx9pejn ... r.zip?dl=0
Здесь архив проекта под Keil4, поскольку архив весит больше двух метров.
Не нужно дергать спящего тигра за усы! Не высыпается 3-ий день!
Аватара пользователя
FreshMan
Друг Кота
Сообщения: 6296
Зарегистрирован: Пн ноя 22, 2010 00:57:15
Откуда: Ukraine

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

Сообщение FreshMan »

если кто-либо в курсе, подскажите пожалуйста, где в Украине можна кудипь отладочную плату дискавери ? по вменяемым ценам :))
Tell Me The Truth
Аватара пользователя
oleg110592
Друг Кота
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

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

Сообщение oleg110592 »

Ответить

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