Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 15.12.2019
Сообщений: 53
1

stm32f4 настройка альтернативной функции

28.05.2020, 14:12. Просмотров 200. Ответов 11
Метки нет (Все метки)

Как правильно настроить например регистры альтернативной функции в stm32 f4? Ну на этот врос можно ответить?.Или кроме админа никого здесь нет?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.05.2020, 14:12
Ответы с готовыми решениями:

Настройка работы таймера stm32f4 discovery
Настраивается таймер: TIM_TimeBaseInitTypeDef base_timer;...

Настройка RCC в STM32F4. Спортивный бег по костылям.
Здравствуйте! Второй день ломаю голову над настройкой тактового генератора. Итак: 1.Если тактовый...

stm32f1 stm32f4 cmsis RCC настройка как проверить работу HSE&
/* * main.c * * Created on: 20 бер. 2020 р. * Author: Ivan */ #include "main.h"...

"внешние функции" + stm32f4 + CooCox
Приветствую. Может кто скажет с ходу причину странного зависания контроллера при выполнении...

11
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,113
Записей в блоге: 6
28.05.2020, 14:18 2

Не по теме:

Цитата Сообщение от ivan rusev Посмотреть сообщение
Ну на этот врос можно ответить?
На нормально заданные вопросы обычно есть ответы на существу.


Посмотрите функцию GPIO_PinAFConfig.
C
1
2
3
4
5
6
7
8
9
10
void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)
{
  uint32_t temp = 0x00;
  uint32_t temp_2 = 0x00;
 
  temp = ((uint32_t)(GPIO_AF) << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ;
  GPIOx->AFR[GPIO_PinSource >> 0x03] &= ~((uint32_t)0xF << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ;
  temp_2 = GPIOx->AFR[GPIO_PinSource >> 0x03] | temp;
  GPIOx->AFR[GPIO_PinSource >> 0x03] = temp_2;
}
0
0 / 0 / 0
Регистрация: 15.12.2019
Сообщений: 53
30.05.2020, 17:45  [ТС] 3
Я имею ввиду на cmsis
0
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,113
Записей в блоге: 6
30.05.2020, 22:06 4
Разве не видите код функции? Он на чем по вашему?
0
1778 / 1108 / 109
Регистрация: 04.01.2010
Сообщений: 3,885
30.05.2020, 23:05 5
Цитата Сообщение от locm Посмотреть сообщение
C
1
((uint32_t)(GPIO_AF) << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4))
кхм. Сдвиг на 32битное число бит? А месье тот еще выдумщик .
0
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,113
Записей в блоге: 6
31.05.2020, 01:21 6
Цитата Сообщение от Voland_ Посмотреть сообщение
А месье тот еще выдумщик
Это функция из SPL. Нормально работает.
0
0 / 0 / 0
Регистрация: 15.12.2019
Сообщений: 53
31.05.2020, 05:02  [ТС] 7
Без spl и hal.На регистрах? Пример в нете только один и то не работает?
0
0 / 0 / 0
Регистрация: 15.12.2019
Сообщений: 53
31.05.2020, 13:55  [ТС] 8
На пальцах можно обьяснить?
0
Почетный модератор
11086 / 4058 / 388
Регистрация: 12.06.2008
Сообщений: 11,775
31.05.2020, 14:39 9
Если вас интересует именно на уровне регистров,то откройте даташит и посмотрите. Там предельно просто всё расписано. Например, я смотрю для STM32F407 (документ RM0090 - этот документ подходит для многих чипов из серии STM32F4xx).
Глава 8.4 (описание регистров для GPIO). Есть регистр MODER, в котором по два бита на каждый пин задаётся режим: 00 - вход, 01 - выход, 10 - альтернативная функция, 11 - аналовый режим.
Для альтернативной функции есть регистры AFRL и AFRH (в HAL они описаны в виде массива AFR[2]). Там на каждый пин по 4 бита выбирается номер альтернативной функции (от AF0 до AF15). Номера альтернативных функций указаны там же в главе 8.3.2 "I/O pin multiplexer and mapping".

Если на практике, то проще использовать HAL'овские функции:
C
1
2
3
4
5
6
7
8
9
10
11
GPIO_InitTypeDef gpio = {
  .Pin = GPIO_PIN_2,
  .Mode = GPIO_MODE_AF_PP,
  .Pull = GPIO_NOPULL,
  .Speed = GPIO_SPEED_FREQ_LOW,
  .Alternate = GPIO_AF7_USART2,
};
 
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_USART2_CLK_ENABLE();
HAL_GPIO_Init(GPIOA, &gpio);
0
0 / 0 / 0
Регистрация: 15.12.2019
Сообщений: 53
31.05.2020, 15:02  [ТС] 10
Это я знаю.Но вот пример мне нужно задействовать тайме 4 stm407ve 4 шим канала? можете написать?
0
2573 / 1165 / 152
Регистрация: 28.10.2011
Сообщений: 4,113
Записей в блоге: 6
31.05.2020, 15:29 11
Цитата Сообщение от ivan rusev Посмотреть сообщение
Но вот пример мне нужно задействовать тайме 4 stm407ve 4 шим канала? можете написать?
Настройка порта на альтернативную функцию таймера.
C
1
GPIO_PinAFConfig(GPIOD, GPIO_PinSource15, GPIO_AF_TIM4);
Код функции выше.
0
0 / 0 / 0
Регистрация: 15.12.2019
Сообщений: 53
31.05.2020, 16:04  [ТС] 12
GPIOD->ARF[2]= как таким образом настроить 2 канала?

Добавлено через 11 минут
На cmsis
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2020, 16:04

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

STM32F4 Discovery Настройка таймеров
Здравствуйте! Разбираюсь с режимами работы таймеров. Задача стоит следующая: есть входной сигнал...

Сервис (служба) Windows обслуживания альтернативной клавиатуры
Существует следующая задача: Создать службу Windows (XP,7,8 ... ) обслуживающую альтернативную...

Настройка функции Traffic Segmentation
Доброго времени суток всем. Если есть такие люди, которые имели дело с функцией traffic...

настройка функции include в php.ini
Привет. Переставил свой пхп (под Виндом). Рньше ствил инсталятором а ща поставил в ручную. Так...

Настройка функции Мобильный Хот Спот Win 10
Добрый день! Подскажите пожалуйста, может быть кто-нибудь сталкивался с проблемой в обновленной...

Настройка вызова С функции з asm в Visual Studio 2015
Здравствуйте, помогите пожайлуста решить проблему с вызовом printf или любой другой сишной функции...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.