Vâng, nó rất hữu ích. Kết quả từ thử nghiệm trên STM32F407VGT6: Cả hai chân AF có thể được sử dụng đồng thời làm AF, ít nhất là nếu sử dụng các chân này làm đầu vào AF. Thí nghiệm là để kích hoạt TIM1 trên cạnh tăng của kích hoạt bên ngoài - tín hiệu "TIM1_ETR". Tín hiệu "TIM1_ETR" có thể được ánh xạ tới các chân PE7 và / hoặc PA12 của gói MCU.
Thử nghiệm: Khởi tạo cả hai chân PE7 và PA12 dưới dạng AF "TIM1_ETR" cho 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
}
Kết quả - TIM1 được bắt đầu bằng cách tăng cạnh trên bất kỳ chân PE7 hoặc PA12 nào.
Điều này cho thấy cách để các chân AF MUX (thay đổi) trong thời gian chạy:
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 */
}
Điều này có thể hữu ích sau đó cần hai nguồn khác nhau để kích hoạt bộ đếm thời gian, điều này có thể giúp chúng tôi tiết kiệm IC MUX :). Cả hai đầu vào có thể được sử dụng đồng thời, nếu được khởi tạo như thể hiện ở đầu bài. Các đầu vào không được kết nối với nhau, ý tôi là tín hiệu trên PA12 không được chuyển sang PE7 và ngược lại (vì GPIO được đặt làm đầu vào).
Mã được tạo bởi "STM32CubeF4 v5.3" + "Gói phần sụn v1.24.0 / 08-tháng 2-2019."