Sì, è utile. Risultato dell'esperimento su STM32F407VGT6: entrambi i pin AF possono essere utilizzati contemporaneamente come AF, almeno se si utilizzano questi pin come input AF. L'esperimento era di innescare TIM1 sul fronte di salita del trigger esterno - segnale "TIM1_ETR". Il segnale "TIM1_ETR" può essere mappato ai pin PE7 e / o PA12 del pacchetto MCU.
L'esperimento: inizializzare entrambi i pin PE7 e PA12 come AF "TIM1_ETR" per 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
}
Il risultato: TIM1 viene avviato dal fronte di salita su uno qualsiasi dei pin PE7 o PA12.
Questo rivela il modo per MUX (cambiare) pin AF in fase di esecuzione:
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 */
}
Questo può essere utile, quindi sono necessarie due diverse fonti per l'attivazione del timer, questo può salvarci fuori dal MUX IC :). Entrambi gli ingressi possono essere utilizzati contemporaneamente, se inizializzati come mostrato all'inizio del post. Gli ingressi non sono collegati insieme, intendo che il segnale su PA12 non viene trasferito su PE7 e viceversa (perché i GPIO sono impostati come ingressi).
Il codice è generato da "STM32CubeF4 v5.3" + "Pacchetto firmware V1.24.0 / 08-febbraio-2019."