Страница 97 из 446

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

Добавлено: Пн ноя 17, 2014 08:53:02
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;

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

Добавлено: Пн ноя 17, 2014 09:33:28
balmer
oleg110592 писал(а):зависать может скорее всего на assert_param
Нет, там ничего не виснет. Доходит до основного цикла и крутится там. Впрочем, чутка подумал пока шел н работу. Можно будет еще уточнить, что перестало работать. DAC, DMA или TIMER. Вечером таки буду разбираться, раз уж проблемма вылезла. Если что, исходнники здесь если кому не лень покопаться.

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

Добавлено: Вт ноя 18, 2014 00:39:39
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 версии и оно падает где надо при неправильном параметре :)

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

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

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

Добавлено: Ср ноя 19, 2014 09:53:55
Леонид Иванович
balmer писал(а):в стеке были уже другие значения и DAC не инициализировался корректно.
Была очень похожая проблема: http://leoniv.livejournal.com/194021.html
КРАМ писал(а):ДЛЯ КАКОЙ ЦЕЛИ заточен достаточно мудреный мультиплексор
Имеете в виду регулярные и инжектированные каналы АЦП? Регулярные служат для постоянной оцифровки каких-то значений с постоянным темпом, а инжектированные (внеочередные) - это всякие сигналы защиты, аварии, которые могут вклиниваться в общий поток в произвольные моменты времени. Как вариант, применимо в электроприводах или ключевых преобразователях.

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

Добавлено: Ср ноя 19, 2014 11:33:10
КРАМ
Леонид Иванович писал(а): Регулярные служат для постоянной оцифровки каких-то значений с постоянным темпом, а инжектированные (внеочередные) - это всякие сигналы защиты, аварии, которые могут вклиниваться в общий поток в произвольные моменты времени.
Премного благодарен, Леонид Иванович. Это ровно то, что требовалось.
:beer:

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

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

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

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

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

Добавлено: Пт ноя 21, 2014 11:06:22
jazz393
HHIMERA писал(а):Это не должно исходить от референса... это должно исходить от ваших знаний работы железа и текущей задачи...
И выход таймера можно настроить open drain с подтяжкой... и УАРТ... и SPI...
ну это плохо)) т.е. в доке этого просто нет?

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

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

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

Добавлено: Пт ноя 21, 2014 11:23:34
jazz393
HHIMERA писал(а):А почему оно там должно быть??? Вы не знаете как работает УСАРТ, SPI и прочее??? Так почему референс вам должен это объяснять???
Референс должен объяснять взаимодействие регистров, флагов и модулей... а не элементарщину...
знаю, но какие-то вещи я забываю, в силу того что сталкиваюсь с большим объемом информации. Я больше программист, нежели железячник

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

Добавлено: Вт ноя 25, 2014 15:12:28
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 пины некоторой периферии имеют уже по три варианта ремапа.

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

Добавлено: Пт ноя 28, 2014 00:38:54
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 раз с разными прерываниями. Что нужно еще сделать?

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

Добавлено: Пт ноя 28, 2014 07:36:35
dosikus
watchmaker писал(а): Пытаюсь собрать напрямую - линкер ругается на прерывания.
...
и так далее 8 раз с разными прерываниями. Что нужно еще сделать?
Для начала - править имена хэндлеров прерываний- смотреть соответствия в стартапе .
Но это только начало... :)))

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

Добавлено: Пт ноя 28, 2014 22:50:32
watchmaker
В том-то дело, что на 100-152-162 всё прекрасно собирается без всяких эрроров. И работает. Так что причина вряд ли тут в именах. Или у L0** имена прерываний другие?

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

Добавлено: Сб ноя 29, 2014 08:02:56
dosikus
watchmaker, ну что ж, с первого раза не доходит :
смотреть соответствия в стартапе .

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

Добавлено: Сб ноя 29, 2014 16:57:41
watchmaker
Понятно, будем разбираться.

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

Добавлено: Вс ноя 30, 2014 04:28:29
cahek80
Подскажите, пожалуйста по такой проблеме: Не могу завести таймеры под stm32f030f4
Поскольку контроллер 20 лапый, для экономии выводов использую генерацию от внутреннего генератора.
При этом уже попробовал создать проект через STM32CubeMX, и помигать светодиодом в прерывании - всё-равно глухо. На stm32f100 stm32f103 с такой проблемой не сталкивался.
https://www.dropbox.com/s/oyp8y5dx9pejn ... r.zip?dl=0
Здесь архив проекта под Keil4, поскольку архив весит больше двух метров.

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

Добавлено: Чт дек 25, 2014 17:56:35
FreshMan
если кто-либо в курсе, подскажите пожалуйста, где в Украине можна кудипь отладочную плату дискавери ? по вменяемым ценам :))

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

Добавлено: Чт дек 25, 2014 19:56:55
oleg110592