реклама на сайте
подробности

 
 
> STM32CubeMX не генерирует инициализацию GPIO?, STM32CubeF4 v.1.5.0
TolikG
сообщение Mar 30 2015, 10:12
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 86
Регистрация: 19-03-10
Пользователь №: 56 071



Пытаюсь освоить CubeMX, до этого использовал MicroXplorer для конфигурации GPIO. Делаю все как написано в UM1718. Простейший пример с миганием светодиодом выполнил успешно. Второй пример FATFS+SD не получается - не генерируется код инициализации ножек подключенных к SDIO. Если не включать периферию SDIO, а просто назначить соответствующим ногам альтернативную функцию SDIO - код генерируется. Версия CubeMX4.7.0. Оно вообще работает?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Tanya
сообщение Mar 30 2015, 11:29
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(TolikG @ Mar 30 2015, 13:12) *
Пытаюсь освоить CubeMX, до этого использовал MicroXplorer для конфигурации GPIO. Делаю все как написано в UM1718. Простейший пример с миганием светодиодом выполнил успешно. Второй пример FATFS+SD не получается - не генерируется код инициализации ножек подключенных к SDIO. Если не включать периферию SDIO, а просто назначить соответствующим ногам альтернативную функцию SDIO - код генерируется. Версия CubeMX4.7.0. Оно вообще работает?

Тоже недавно заметили (после обновления), но пока не копали. Еще зависит от процессора. Даже из одного семейства. Может засовывает не в main?
Добавка.
Вот в main не прописаны ножки с выходом от таймера (ШИМ) и от ЦАП. Но все работает. Подозреваю, что если ножка не альтернативная, то она инициализируется в драйвере таймера и ЦАПа. Но пока не смотрела.

Цитата(Tanya @ Mar 30 2015, 13:32) *
Но пока не смотрела.

Вот посмотрела - ножка ЦАП инициализируется в HAL_DAC_MspInit.
А таймера в HAL_TIM_Base_MspInit
Go to the top of the page
 
+Quote Post
TolikG
сообщение Mar 30 2015, 11:34
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 86
Регистрация: 19-03-10
Пользователь №: 56 071



Цитата(Tanya @ Mar 30 2015, 14:29) *
Тоже недавно заметили (после обновления), но пока не копали. Еще зависит от процессора. Даже из одного семейства. Может засовывает не в main?
Добавка.
Вот в main не прописаны ножки с выходом от таймера (ШИМ) и от ЦАП. Но все работает. Подозреваю, что если ножка не альтернативная, то она инициализируется в драйвере таймера и ЦАПа. Но пока не смотрела.


Вот посмотрела - ножка ЦАП инициализируется в HAL_DAC_MspInit.
А таймера в HAL_TIM_Base_MspInit

Да действительно инициализируется в HAL_SD_MspInit(SD_HandleTypeDef* hsd).
Вопрос снят
Go to the top of the page
 
+Quote Post
Tanya
сообщение Mar 30 2015, 11:45
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



А кто знает, что означает GPIO_MODE_EVT_RISING?
Go to the top of the page
 
+Quote Post
topkin
сообщение Mar 30 2015, 13:46
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 152
Регистрация: 21-12-05
Из: Москва
Пользователь №: 12 476



Цитата(Tanya @ Mar 30 2015, 14:45) *
А кто знает, что означает GPIO_MODE_EVT_RISING?


Вы где это макроопределение взяли? Такое ощущение что пропущен EXTI в этом определении.
EVT - событие, т.е. выставляется некий флаг при наступлении события без вызова обработчика прерывания.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Mar 30 2015, 14:14
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(topkin @ Mar 30 2015, 16:46) *
Вы где это макроопределение взяли? Такое ощущение что пропущен EXTI в этом определении.
EVT - событие, т.е. выставляется некий флаг при наступлении события без вызова обработчика прерывания.

/*Configure GPIO pins : PE2 PE4 PE5 PE0
PE1 */
GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_0
|GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
К этим ножкам акселерометр приделан (stm32F3 Discovery)
Вы, наверное, правы - в КУБЕ они высвечиваются как EXTI.
Go to the top of the page
 
+Quote Post
topkin
сообщение Mar 31 2015, 11:46
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 152
Регистрация: 21-12-05
Из: Москва
Пользователь №: 12 476



Цитата(Tanya @ Mar 30 2015, 17:14) *
/*Configure GPIO pins : PE2 PE4 PE5 PE0
PE1 */
GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_0
|GPIO_PIN_1;
GPIO_InitStruct.Mode = GPIO_MODE_EVT_RISING;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
К этим ножкам акселерометр приделан (stm32F3 Discovery)
Вы, наверное, правы - в КУБЕ они высвечиваются как EXTI.


Ничего тогда не понимаю из вашей программы. Получается у вас на всех этих ножках висят прерывания/события? По хорошему акселерометр вешается на SPI/I2C интерфейс, в данном случае конфигурироваться ножки должны как альтернативные функции. Может тут программно реализовано?
Смотрите, если в поле структуры:
GPIO_InitStruct.Mode = GPIO_MODE_EVT_xx/GPIO_MODE_IT_xxx - скорее всего настраивается внешнее прерывание или событие
GPIO_InitStruct.Mode = GPIO_MODE_AF - аналоговый режим работы порта
GPIO_InitStruct.Mode = GPIO_MODE_INPUT/GPIO_MODE_OUTPUT - режим на вход или выход

Цитата(TolikG @ Mar 31 2015, 08:23) *
Заметил неприятную штуку - генератор кода портит написанный мною текст в секции, обозначенной
/* USER CODE BEGIN 3 */
....
/* USER CODE END 3 */
убирает фигурные скобки в конструкциях "if(...){" и строчки "}else{"
smile3046.gif


Как раз в данных полях куб не должен портить код из функции main. Проверьте в свойствах проекта - Project - Project Settings - Code Generator - "Keep User Code when re-generting"
Если она стоит, то Куб не будет портить код в комментариях, как вы привели. У вас скорее всего не стоит галка
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 31st July 2025 - 18:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01448 секунд с 7
ELECTRONIX ©2004-2016