Skip to content

Instantly share code, notes, and snippets.

@sprout42
Created June 12, 2020 16:11
Show Gist options
  • Save sprout42/d7d318e9840a9be974a51421fa2ac60f to your computer and use it in GitHub Desktop.
Save sprout42/d7d318e9840a9be974a51421fa2ac60f to your computer and use it in GitHub Desktop.
Resets STM32F103C8 "bluepill" board into the bootloader
#!/usr/bin/env python
#
# Adapted from
# https://github.com/rogerclarkmelbourne/Arduino_STM32/blob/2363e7bf8821067b78571ed16fbe397a541968a0/tools/macosx/src/upload-reset/upload-reset.c#L132
import time
import argparse
import serial
def main(port, speed=115200, wait=750):
s = serial.Serial(port, speed)
s.setRTS(0)
s.setDTR(0)
s.setDTR(1)
time.sleep(0.05)
s.setDTR(0)
s.setRTS(1)
s.setDTR(1)
time.sleep(0.05)
s.setDTR(0)
time.sleep(0.05)
s.write(b'1EAF')
# Change wait into milliseconds
time.sleep(wait / 1000)
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('port')
parser.add_argument('-s', '--speed', type=int, default=115200)
parser.add_argument('-w', '--wait', type=int, default=750)
args = parser.parse_args()
main(**vars(args))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment