mirror of
https://github.com/ArduPilot/ardupilot.git
synced 2026-10-06 19:00:27 +08:00
PA15 drives PWM1 on this board and is also JTDI, which the STM32H743 brings out of every reset, and out of power-on, with its internal pull-up enabled. The M1 servo line is therefore held high from then until the bootloader's board init reconfigured the pin as a floating input. On logic-analyser captures of the real board that is 692us on a warm reset, and 496us and 520us on two cold power-ons, one over USB and one at 12V. Each of those is a pulse inside the range most servos accept, and it sent the servo to an extreme. Configure PA15 as an input with pull-up in the bootloader instead, so the line stays high continuously until the application switches the pin to its timer, whose idle level is low. The servo then sees one high lasting the whole bootloader, far outside any valid pulse width, rather than a plausible command. Verified under Renode with the bootloader held: PA15 reads input with pull-up while the bootloader owns the pins.