Да, это полезно. Результат эксперимента на STM32F407VGT6: Оба контакта AF могут использоваться одновременно в качестве AF, по крайней мере, если эти контакты используются в качестве входов AF. Эксперимент состоял в том, чтобы запустить TIM1 по переднему фронту внешнего триггера - сигнала «TIM1_ETR». Сигнал «TIM1_ETR» может быть отображен на контакты PE7 и / или PA12 пакета MCU.
Эксперимент: Инициализируйте оба контакта PE7 и PA12 как AF "TIM1_ETR" для TIM1:
{
GPIO_InitTypeDef GPIO_InitStruct = { 0 };
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Alternate = GPIO_AF1_TIM1;
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pin = GPIO_PIN_7;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct); // configure PE7 as AF
GPIO_InitStruct.Pin = GPIO_PIN_12;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); // configure PA12 as AF
}
Результат - TIM1 запускается по переднему фронту на любом из контактов PE7 или PA12.
Это показывает путь к MUX (изменить) контактам AF во время выполнения:
main
{
GPIO_InitTypeDef GPIO_InitStruct = { 0 };
// Deactivate PA12 input (set as regular input):
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pin = GPIO_PIN_12;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// select PE7 as a trigger source,
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pin = GPIO_PIN_7;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
// Arm the timer
arm_tim1();
/* Now timer will be started by rising edge only on PE7 */
// ... later one can select PA12 as trigger source. Deactivate PE7 (set as regular input):
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pin = GPIO_PIN_7;
HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);
// Activate PA12
GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
GPIO_InitStruct.Pin = GPIO_PIN_12;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
// Arm the timer
arm_tim1();
/* timer will be started by rising edge only on PA12 */
}
Это может быть полезно, тогда для запуска таймера нужны два разных источника, это может спасти нас от MUX IC :). Оба входа могут использоваться одновременно, если они инициализированы, как показано в начале сообщения. Входы не соединены вместе, я имею в виду, что сигнал на PA12 не передается на PE7 и наоборот (потому что GPIO устанавливаются как входы).
Код генерируется «STM32CubeF4 v5.3» + «Пакет прошивок V1.24.0 / 08-Февраль-2019».