Так, це корисно. Результат експерименту над STM32F407VGT6: обидва штифта автофокусування можуть використовуватися як автофокусування одночасно, принаймні, якщо ці штифти використовувати як входи автофокусування. Експеримент повинен був викликати 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".