STM32F103 WEB USB DFU 固件

Dependencies:   mbed mbed-STM32F103C8T6 USBDevice_STM32F103

Committer:
qitas
Date:
Mon May 31 10:53:57 2021 +0800
Revision:
0:5fac9aab2679
INIT

Who changed what in which revision?

UserRevisionLine numberNew contents of line
qitas 0:5fac9aab2679 1 #include "stm32f103c8t6.h"
qitas 0:5fac9aab2679 2 #include "mbed.h"
qitas 0:5fac9aab2679 3 #include "WebUSBDFU.h"
qitas 0:5fac9aab2679 4
qitas 0:5fac9aab2679 5 DigitalOut myled(LED1);
qitas 0:5fac9aab2679 6
qitas 0:5fac9aab2679 7 bool detached = false;
qitas 0:5fac9aab2679 8 void onDetachRequested() {
qitas 0:5fac9aab2679 9 detached = true;
qitas 0:5fac9aab2679 10 }
qitas 0:5fac9aab2679 11
qitas 0:5fac9aab2679 12 void resetIntoBootloader() {
qitas 0:5fac9aab2679 13 // Turn on write access to the backup registers
qitas 0:5fac9aab2679 14 __PWR_CLK_ENABLE();
qitas 0:5fac9aab2679 15 HAL_PWR_EnableBkUpAccess();
qitas 0:5fac9aab2679 16
qitas 0:5fac9aab2679 17 // Write the magic value to force the bootloader to run
qitas 0:5fac9aab2679 18 BKP->DR2 = 0x544F;
qitas 0:5fac9aab2679 19 BKP->DR1 = 0x4F42;
qitas 0:5fac9aab2679 20
qitas 0:5fac9aab2679 21 HAL_PWR_DisableBkUpAccess();
qitas 0:5fac9aab2679 22
qitas 0:5fac9aab2679 23 // Reset and let the bootloader run
qitas 0:5fac9aab2679 24 NVIC_SystemReset();
qitas 0:5fac9aab2679 25 }
qitas 0:5fac9aab2679 26
qitas 0:5fac9aab2679 27 int main()
qitas 0:5fac9aab2679 28 {
qitas 0:5fac9aab2679 29 confSysClock(); //Configure system clock (72MHz HSE clock, 48MHz USB clock)
qitas 0:5fac9aab2679 30
qitas 0:5fac9aab2679 31 /* Note: 1209:0001 is a test VID/PID pair - it should be changed before using in
qitas 0:5fac9aab2679 32 * a real application */
qitas 0:5fac9aab2679 33 WebUSBDFU usbDFU(0x1209, 0x0001, 0x0001, false);
qitas 0:5fac9aab2679 34 usbDFU.attach(onDetachRequested);
qitas 0:5fac9aab2679 35
qitas 0:5fac9aab2679 36 while(1) {
qitas 0:5fac9aab2679 37 // Check the DFU status
qitas 0:5fac9aab2679 38 if (!usbDFU.configured()) {
qitas 0:5fac9aab2679 39 usbDFU.connect(false);
qitas 0:5fac9aab2679 40 }
qitas 0:5fac9aab2679 41 if (detached) {
qitas 0:5fac9aab2679 42 for (int i=0; i < 3; i++) {
qitas 0:5fac9aab2679 43 myled = 1;
qitas 0:5fac9aab2679 44 wait_ms(100);
qitas 0:5fac9aab2679 45 myled = 0;
qitas 0:5fac9aab2679 46 wait_ms(100);
qitas 0:5fac9aab2679 47 }
qitas 0:5fac9aab2679 48 resetIntoBootloader();
qitas 0:5fac9aab2679 49 }
qitas 0:5fac9aab2679 50
qitas 0:5fac9aab2679 51 // Do normal stuff
qitas 0:5fac9aab2679 52 myled = !myled;
qitas 0:5fac9aab2679 53 wait_ms(500);
qitas 0:5fac9aab2679 54 }
qitas 0:5fac9aab2679 55 }
qitas 0:5fac9aab2679 56