Sim, é útil. Resultado da experiência no STM32F407VGT6: Os dois pinos AF podem ser usados como AF simultaneamente, pelo menos se forem usados como entradas AF. O experimento foi acionar o TIM1 na borda ascendente do sinal de acionamento externo - sinal "TIM1_ETR". O sinal "TIM1_ETR" pode ser mapeado para os pinos PE7 e / ou PA12 do pacote MCU.
O experimento: inicialize os pinos PE7 e PA12 como AF "TIM1_ETR" para 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
}
O resultado - TIM1 é iniciado pela borda ascendente em qualquer um dos pinos PE7 ou PA12.
Isso revela o caminho para os pinos AF MUX (mudança) no tempo de execução:
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 */
}
Isso pode ser útil, pois são necessárias duas fontes diferentes para o disparo do temporizador; isso pode nos salvar do MUX IC externo :). Ambas as entradas podem ser usadas simultaneamente, se inicializadas como mostrado no início do post. As entradas não estão conectadas juntas, quero dizer que o sinal no PA12 não é transferido para o PE7 e vice-versa (porque os GPIOs são definidos como entradas).
O código é gerado pelo "STM32CubeF4 v5.3" + "Pacote de firmware V1.24.0 / 08-fevereiro-2019."