
前段时间ST推出了Value Line的STM32F750和H750两个系列,看了一下选型表,F750有LQFP144封装,正好适合我的STM32 linux板子。# `& p- q3 i* u, ^ 5 Z2 `7 I/ ^' A9 | 于是,双十一买了几片。同时,我对我的linux板做了小幅改版:将SPI Flash容量扩大到32MB并连接到F750的QSPI0 h& k i4 ]" s BANK1,添加了CAN收发器和接口,增加了两个I2C外设(温湿度传感器和气压传感器)。板子做回来后先焊了一片,调试过程还算比较顺利,现在u-boot和Linux都工作起来了,下面是系统启动log,F750速度还是相当快的(427.627 R% h0 Q2 p4 C' P' r; | BogoMIPS,F429跑Linux只有35.847 S/ ^% g. n! w: @3 ^ BogoMIPS),QSPI的加载速度也很给力。下一步我准备多测试几种STM32外设的Linux driver,emcraft现在的SDK比两三年前多了不少外设驱动,可以都试试看。0 B1 d' ~& P) c% p* H' S ![]() ) @' I$ R: b! }' P 6 w9 V3 M6 O' j" i1 _$ M) U ![]() ' n4 W. a t' x; V U-Boot 2010.03 (Nov 26 2018 - 21:30:21) CPU : STM32F7 (Cortex-M7)7 A9 G, J# x& q3 M/ m Freqs: SYSCLK=216MHz,HCLK=216MHz,PCLK1=54MHz,PCLK2=108MHz Board: STM32F750 Rev 1.0 DRAM: 64 MB In: serial Out: serial+ D, t% m+ K$ l9 }+ B( b Err: serial QSPI: 32 MB mapped at 0x90000000 Net: miiphy_register done. eth hw init done. STM32_MAC; Y8 Q, @: g3 g, W( _! E Hit any key to stop autoboot: 04 m1 N k2 J2 \ } Booting from QSPI ## Booting kernel from Legacy Image at c0007fc0 .../ ]; e. w m$ ]( H( N( R Image Name: Linux-4.2.0 Image Type: ARM Linux Multi-File Image (uncompressed)' `6 z F7 Z' Q/ j% @/ ?- g Data Size: 7496295 Bytes = 7.1 MB, b1 ]$ e3 [' K- V+ ~! C; h& [ Load Address: c0008000 Entry Point: c00080015 L% D* A1 P/ g x6 _' @4 ?& P Contents: Image 0: 7471388 Bytes = 7.1 MB+ ]2 C) Y8 I5 o+ ^, R- u% u" `6 s Image 1: 24895 Bytes = 24.3 kB, [" }' {( g* m P3 ] Verifying Checksum ... OK ## Flattened Device Tree from multi component Image at C0007FC0 Booting using the fdt at 0xc0728128 Loading Multi-File Image ... OK OK WARNING: legacy format multi component image overwritten9 A" O4 i) d0 C3 [# X+ @6 i: x* j- J Loading Device Tree to c3ff6000, end c3fff13e ... OK Starting kernel ...Booting Linux on physical CPU 0x08 B8 c0 @6 k7 ~$ k Linux version 4.2.0(gcc version 4.4.1 (Sourcery G++ Lite 2010 q1-189) ) #90 Tue Dec 4 03:32:33 EST 2018 CPU: ARMv7-M [410fc271] revision 1 (ARMv7M), cr=00000000 CPU: WBA data cache, WBA instruction cache Machine model: EmCraft Systems STM32F7-SOM board0 d) g. l8 O1 I Built 1 zonelists in Zone order, mobility grouping on. Total pages: 16256% P( E7 g) L. q$ U6 e/ w: E# b Kernel command line: stm32_platform=stm32f7-disco console=ttyS0,115200 panic=10 ip=169.25/ y$ Q' L, s/ N; `/ C g 4.1.10:169.254.1.2:::stm32f7-disco:eth0:ff# u( Q5 w& ?3 D3 c2 A5 f5 I PID hash table entries: 256 (order: -2, 1024 bytes) Dentry cache hash table entries: 8192 (order: 3, 32768 bytes); x9 C1 ?2 I' X t6 m Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)8 o3 q2 \, Q6 h1 m1 m Memory: 56432K/65536K available (2523K kernel code, 181K rwdata, 588K rodata, 4000K init, 111K bss, 9104K reserved, 0K cma-reserved) Virtual kernel memory layout: vector : 0x00000000 - 0x00001000 ( 4 kB) fixmap : 0xffc00000 - 0xfff00000 (3072 kB)) N" u2 R; y7 B; F s) \: F8 M vmalloc : 0x00000000 - 0xffffffff (4095 MB) lowmem : 0xc0000000 - 0xc4000000 ( 64 MB) .text : 0xc0008000 - 0xc0312000 (3112 kB) .init : 0xc0312000 - 0xc06fa000 (4000 kB)0 G0 B$ R6 o2 r/ u, c9 x! R .data : 0xc06fa000 - 0xc07277c0 ( 182 kB) .bss : 0xc072811c - 0xc0743e84 ( 112 kB) ' c$ r: B5 e$ z( E# G6 Y$ y NR_IRQS:16 nr_irqs:16 16 /interrupt-controller@40013c00: 24 External IRQs detected clocksource: arm_system_timer: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 27651335 8 ns ARM System timer initialized as clocksource /soc/timer@40000000: STM32 clockevent driver initialized (32 bits)# y+ L+ `2 W$ W) N sched_clock: 32 bits at 100 Hz, resolution 10000000ns, wraps every 21474836475000000ns Calibrating delay loop... 427.62 BogoMIPS (lpj=2138112) pid_max: default: 4096 minimum: 301 Mount-cache hash table entries: 1024 (order: 0, 4096 bytes) Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes) devtmpfs: initialized clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275& R N. m* [! _5 u8 t7 d/ x0 F W* G 0000 ns& r6 x+ N# Q9 G pinctrl core: initialized pinctrl subsystem NET: Registered protocol family 16 stm32-pinctrl pin-controller: nbanks = 11 stm32-pinctrl pin-controller: nfunctions = 20 stm32-pinctrl pin-controller: ngroups = 232 `. q. F# f8 ^* M stm32-pinctrl pin-controller: GPIOA bank added. stm32-pinctrl pin-controller: GPIOB bank added. stm32-pinctrl pin-controller: GPIOC bank added.) U7 e" r$ F P1 C) A( N stm32-pinctrl pin-controller: GPIOD bank added./ w8 s- f9 j5 U- {: o* f stm32-pinctrl pin-controller: GPIOE bank added.) E, l3 D+ ?: m0 ^/ H stm32-pinctrl pin-controller: GPIOF bank added." }; s! k- {3 G8 Y3 g stm32-pinctrl pin-controller: GPIOG bank added. stm32-pinctrl pin-controller: GPIOH bank added.5 v+ ?% C( ^. k( P7 M+ i stm32-pinctrl pin-controller: GPIOI bank added. stm32-pinctrl pin-controller: GPIOJ bank added. stm32-pinctrl pin-controller: GPIOK bank added.; e Q7 r+ C7 r W# c stm32-pinctrl pin-controller: Function[0 name:i2c_1, groups:1]% R8 N0 Y7 u b, J stm32-pinctrl pin-controller: Function[1 name:i2c_2, groups:1] stm32-pinctrl pin-controller: Function[2 name:i2c_3, groups:1]9 c# \+ l% {3 f3 `' \ stm32-pinctrl pin-controller: Function[3 name:mac, groups:2] stm32-pinctrl pin-controller: Function[4 name:sdio, groups:1]% e# d$ ?- @5 x+ v0 Z stm32-pinctrl pin-controller: Function[5 name:spi_2, groups:1]& p) J$ E; s( O4 A$ K/ l& v- ] } stm32-pinctrl pin-controller: Function[6 name:spi_4, groups:1] stm32-pinctrl pin-controller: Function[7 name:spi_5, groups:1] t6 \: O0 h3 a. F! w" T7 u1 x stm32-pinctrl pin-controller: Function[8 name:usart1, groups:1]$ U4 `" V( l+ ?& o6 d1 r0 w. J! d stm32-pinctrl pin-controller: Function[9 name:usart6, groups:1]% f) H- n0 C# Z4 F% Q2 \% P3 i stm32-pinctrl pin-controller: Function[10 name:usart7, groups:1]4 `, ]1 m" V' w# Q3 a$ s stm32-pinctrl pin-controller: Function[11 name:usb_fs, groups:1]" r& s9 K9 t1 g$ J- {! y/ t9 H stm32-pinctrl pin-controller: Function[12 name:usb_hs, groups:1]% R4 o+ t( i3 j stm32-pinctrl pin-controller: Function[13 name:can_1, groups:1] stm32-pinctrl pin-controller: Function[14 name:adc1_in0_pin, groups:1] stm32-pinctrl pin-controller: Function[15 name:dac_out2_pin, groups:1], V3 `+ w7 P* X7 h: R stm32-pinctrl pin-controller: Function[16 name:ltdc, groups:1] o+ k7 E) Q4 y8 u& d stm32-pinctrl pin-controller: Function[17 name:sai_2, groups:1]# `: M* a& D1 p( b$ ]: H- ^, J& D! Z stm32-pinctrl pin-controller: Function[18 name:i2c_4, groups:1] stm32-pinctrl pin-controller: Function[19 name:gpio, groups:3] stm32-dma 40026000.dma: STM32 DMA driver registered stm32-dma 40026400.dma: STM32 DMA driver registered* V0 g4 `" A9 b9 b2 Z2 N SCSI subsystem initialized8 R! Y* F9 Z: V5 \) [ usbcore: registered new interface driver usbfs" |. ~5 a+ W4 \- v% ~2 s" Z+ Y usbcore: registered new interface driver hub P, _( `9 }" \, I% s usbcore: registered new device driver usb soc:phy_hs supply vcc not found, using dummy regulator' t1 O+ ]' ]; `- D soc:phy_fs supply vcc not found, using dummy regulator pps_core: LinuxPPS API ver. 1 registered2 x R' u h' s* U/ |9 Y) _5 e pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> PTP clock support registered0 U' M2 N# {4 h" }, I* g; M0 z* u Advanced Linux Sound Architecture Driver Initialized. Bluetooth: Core ver 2.20* F% |+ i1 O3 a NET: Registered protocol family 31; ]! Z& E& Z4 N5 W# E, X2 } Bluetooth: HCI device and connection manager initialized' n& `( H& H' ^/ w Bluetooth: HCI socket layer initialized Bluetooth: L2CAP socket layer initialized$ m. h1 }+ X3 H- v Bluetooth: SCO socket layer initialized! s8 i1 ]3 e9 s/ q" T( t) {% ^" ~ clocksource: Switched to clocksource arm_system_timer NET: Registered protocol family 2 L% K" X7 d, N5 j TCP established hash table entries: 1024 (order: 0, 4096 bytes)' {1 T4 i* F5 m0 i TCP bind hash table entries: 1024 (order: 0, 4096 bytes) TCP: Hash tables configured (established 1024 bind 1024)/ b# P1 m& r2 O- m& t$ X$ R' O UDP hash table entries: 256 (order: 0, 4096 bytes) UDP-Lite hash table entries: 256 (order: 0, 4096 bytes). q* u. c4 h3 H* |9 k" h* Z3 h NET: Registered protocol family 1; d1 n5 }2 O. v/ c `& b* O6 y RPC: Registered named UNIX socket transport module. RPC: Registered udp transport module.6 D7 h" b) M4 _( R RPC: Registered tcp transport module. RPC: Registered tcp NFSv4.1 backchannel transport module. Power Management for STM32 futex hash table entries: 16 (order: -5, 192 bytes) t9 @+ s4 y z# u6 ^! K0 j: l jffs2: version 2.2. (NAND) (SUMMARY) 漏 2001-2006 Red Hat, Inc. fuse init (API version 7.23)9 N5 M3 w- V. d* T6 k6 } Block layer SCSI generic (bsg) driver version 0.4 loaded (major 250)! m5 K8 A, O4 V- n8 V$ `0 ~ io scheduler noop registered7 Y2 t7 w: m' S6 o+ b io scheduler cfq registered (default) stm32-pinctrl pin-controller: maps: function gpio group pwms num 24 q; i q' B9 v0 A3 W9 `' p stm32-pwm pwm0: basing on TIM3.1(x16)! G5 j" t a4 P1 e x3 Z stm32-pinctrl pin-controller: maps: function ltdc group ltdc-0 num 29 stm32_lcdfb 40016800.ltdc: fb0: fb device registered successfully f/ }" i! S. R! ]" E$ P6 k" b' _/ |& I STM32 USART driver initialized stm32-pinctrl pin-controller: maps: function usart1 group usart1-0 num 33 q( ], {5 h* x6 o6 w# K! y 40011000.serial: ttyS0 at MMIO 0x40011000 (irq = 34, base_baud = 6750000) is a stm32-usar t) p u! x% I- i$ g- A8 Q( c console [ttyS0] enabled stm32-pinctrl pin-controller: maps: function usart6 group usart6-0 num 3 40011400.serial: ttyS5 at MMIO 0x40011400 (irq = 35, base_baud = 6750000) is a stm32-usar' u; p' N: s/ U8 i* o5 N t nbd: registered device at major 43$ n* I5 O! h0 M! a5 Z; E stm32-pinctrl pin-controller: maps: function dac_out2_pin group dac-0 num 24 }& ^3 L( N, b6 v2 o stm32_dac 40007400.dac: dac1: no timer assigned, DMA functionality is not available9 e* U# t: E2 D( l# W7 H3 F4 M; q stm32_dac 40007400.dac: created 1 character devices with MAJOR 248 2 ofpart partitions found on MTD device physmap-stm-flash.0% `1 T, n: q6 C+ N$ i9 K Creating 2 MTD partitions on "physmap-stm-flash.0":1 b& }- _+ c4 {+ i5 d# W9 G" Z 0x000000000000-0x000000020000 : "stm_flash_uboot" 0x000000040000-0x000000100000 : "stm_flash_unused" stm32-pinctrl pin-controller: maps: function spi_5 group spi_5-0 num 4 stm32-spi 40015000.spi: SPI Controller 4 at 40015000,irq=38,hz=108000000 CAN device driver interface stm32-pinctrl pin-controller: maps: function can_1 group can_1-0 num 3. v, ^( G) J! t6 Y stm32-can 40006400.can: device registered (reg=40006400, irq=31)! P* o) `. O' e/ y1 C1 b8 c stm32-pinctrl pin-controller: maps: function mac group mac_rmii num 10: I' h, i) k. X- C$ y stmmac - user ID: 0x10, Synopsys ID: 0x35 Ring mode enabled3 F0 \# l% r3 E DMA HW capability register supported- V4 l) N1 e/ ?$ M/ Q Enhanced/Alternate descriptors1 a: n/ Q6 r$ s) n( Q2 }+ Q Enabled extended descriptors RX Checksum Offload Engine supported (type 2), L" C7 J; y5 I% ?7 _6 k TX Checksum insertion supported; s+ A* H: S' t, p Wake-Up On Lan supported Enable RX Mitigation via HW Watchdog Timer) O( C9 A" J* {* B/ V: A( Z stm32-dwmac 40028000.ethernet eth0: No MDIO subnode found/ a0 K! g j5 `5 z libphy: stmmac: probed/ ^$ m/ k+ O9 S$ g- g( g6 K2 V eth0: PHY ID 0007c0f1 at 0 IRQ POLL (stmmac-0:00) active PPP generic driver version 2.4.2& {2 I, J2 @+ Q. S% s9 X3 v6 k2 e PPP BSD Compression module registered PPP Deflate Compression module registered usbcore: registered new interface driver rt2800usb stm32-pinctrl pin-controller: maps: function usb_hs group usb_hs-0 num 30 F" W, Q. p- q dwc2 40040000.usb: DWC OTG Controller dwc2 40040000.usb: new USB bus registered, assigned bus number 14 _" F+ {1 D% B; P5 m dwc2 40040000.usb: irq 56, io mem 0x000000006 J) {* `/ u/ M' R usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=10 a4 o# Z4 g; E# S8 g- o usb usb1: Product: DWC OTG Controller2 [# Y) c9 r1 Z% c. }+ G- Z8 A usb usb1: Manufacturer: Linux 4.2.0 dwc2_hsotg0 g# D% U$ `3 M7 V7 C; _ usb usb1: SerialNumber: 40040000.usb hub 1-0:1.0: USB hub found hub 1-0:1.0: 1 port detected) l7 r2 v% }; r# U5 U stm32-pinctrl pin-controller: maps: function usb_fs group usb_fs-0 num 39 L- P' k2 i( f/ L, {+ q& }$ R 50000000.usb supply vusb_d not found, using dummy regulator 50000000.usb supply vusb_a not found, using dummy regulator1 H0 |% @3 W; W2 C dwc2 50000000.usb: EPs: 6, dedicated fifos, 512 entries in SPRAM dwc2 50000000.usb: DCFG=0x08200000, DCTL=0x00000002, DIEPMSK=0000000b5 L) f5 H0 `: E6 ^+ i; ]7 d dwc2 50000000.usb: GAHBCFG=0x00000000, GHWCFG1=0x00000000 dwc2 50000000.usb: GRXFSIZ=0x000000a0, GNPTXFSIZ=0x004000a0$ ?0 U) s4 {. F; q M- S dwc2 50000000.usb: DPTx[1] FSize=32, StAddr=0x000000e0 dwc2 50000000.usb: DPTx[2] FSize=64, StAddr=0x00000100. I3 J* D+ ~: `! G7 ]5 ~ dwc2 50000000.usb: DPTx[3] FSize=512, StAddr=0x00000800 dwc2 50000000.usb: DPTx[4] FSize=512, StAddr=0x00000a00 dwc2 50000000.usb: DPTx[5] FSize=512, StAddr=0x00000c00 dwc2 50000000.usb: ep0-in: EPCTL=0x00008000, SIZ=0x00000000, DMA=0x5abee5fb# e" H- C% F. X7 M' w9 A- j dwc2 50000000.usb: ep0-out: EPCTL=0x00008000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep1-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep1-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb3 R& p8 U8 X- \/ }$ E+ W- A0 X dwc2 50000000.usb: ep2-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep2-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep3-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep3-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep4-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb0 y9 u9 w0 l; G- o. @; a dwc2 50000000.usb: ep4-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep5-in: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: ep5-out: EPCTL=0x00000000, SIZ=0x00000000, DMA=0x5abee5fb dwc2 50000000.usb: DVBUSDIS=0x000017d7, DVBUSPULSE=000005b8" A1 ?1 m* ]. Y4 n) h/ w. c usbcore: registered new interface driver cdc_acm cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters# f* A4 O# x* f. o2 W usbcore: registered new interface driver uas usbcore: registered new interface driver usb-storage g_serial gadget: Gadget Serial v2.40 z. K$ ^) G% U I. G g_serial gadget: g_serial ready; C& E6 f6 e1 v Z9 F dwc2 50000000.usb: bound driver g_serial5 u* ]* j4 V3 u j1 _7 X( H" y i2c /dev entries driver stm32-pinctrl pin-controller: maps: function i2c_4 group i2c_4-0 num 3 bmp085 3-0077: Successfully initialized bmp085! stm32f7-i2c 40006000.i2c: I2C Controller i2c-3 at 40006000,irq=588 p' ^% }7 ~! r1 n Driver for 1-wire Dallas network protocol.6 b' g/ S: |! y, \1 P usbcore: registered new interface driver btusb stm32-pinctrl pin-controller: maps: function sdio group sdio-0 num 7 mmci-pl18x 40012c00.sdi: Got CD GPIO mmci-pl18x 40012c00.sdi: mmc0: PL180 manf 80 rev4 at 0x40012c00 irq 37,0 (pio)& x# {+ o; d L& l7 `8 l7 x3 e stm32-dma 40026400.dma: stm32_dma_of_xlate: unable to get channel 3 - was already request' c# F- r# @3 h+ Q0 G+ x! _ ed mmci-pl18x 40012c00.sdi: DMA channels RX dma1chan3, TX dma1chan3 stm32_gpio_to_irq: Event line 3 now points to fire interrupts from bank G7 B. P0 Q* _$ a stm32-pinctrl pin-controller: maps: function gpio group outs num 2 hidraw: raw HID events driver (C) Jiri Kosina usbcore: registered new interface driver usbhid usbhid: USB HID core driver stm32-pinctrl pin-controller: maps: function adc1_in0_pin group adc1-0 num 2 stm32f4-adc 40012000.adc: registered stm32-pinctrl pin-controller: maps: function sai_2 group sai_2-0 num 5+ B0 X# Q% e7 E( k% A stm32-dma 40026400.dma: stm32_dma_of_xlate: unable to get channel 4 - was already request+ Q: r6 f. I$ `$ `$ q1 R, J- P ed stm32-asoc-card sound: failed to find codec platform device stm32-asoc-card: probe of sound failed with error -22 NET: Registered protocol family 170 a, R% w4 G# g9 F2 r can: controller area network core (rev 20120528 abi 9)8 y8 k2 w8 _ o, n! `" j7 q2 W NET: Registered protocol family 29 can: raw protocol (rev 20120528) can: broadcast manager protocol (rev 20120528 t)* d& X& p$ y7 ? y9 s8 Z can: netlink gateway (rev 20130117) max_hops=1- Z) D' f" t* U3 r+ L* ? Bluetooth: RFCOMM TTY layer initialized Bluetooth: RFCOMM socket layer initialized7 l. l/ P, |8 R/ Z2 X! a5 t* @ Bluetooth: RFCOMM ver 1.11) P. `' Q) c; E- v9 I% V0 ~ hctosys: unable to open rtc device (rtc0)4 F1 T: j8 `# @# Z vmmc: disabling$ K% [' `# ^1 ^2 \2 H ALSA device list: No soundcards found.7 Y+ ^5 ]4 Y* z6 r; ^# d, y% |1 R Freeing unused kernel memory: 4000K (c0312000 - c06fa000)7 n, A8 f3 r8 T init started: BusyBox v1.24.2 (2018-11-22 20:35:58 EST)( l# b: c' G7 c1 @# l6 Q: P / # amixer: Mixer attach default error: No such file or directory stm32-dwmac 40028000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx / # free total used free shared buffers cached2 Z1 L$ z8 O7 U* s Mem: 60432 8140 52292 0 0 4792 x+ w2 o# K4 ~7 H1 g+ t -/+ buffers/cache: 3348 570840 Z% L. I) L8 N' h& @* u. O6 P1 E / #% \$ J3 c0 K" l3 m! f 4 P- n: S, I. c. k: t, U / J: }' h% Z a( }: } |
【STM32F769I-DISC1】开发板刷入Micropython并完成点灯、读取内部温度测试
【STM32F769I-DISC1】测评01:创建STM32cube IDE 工程,点个灯
【STM32F769】创建deepseek本地服务,并实现http请求
汇编浮点库qfplib移植STM32F769I-DISCO开发板与硬件浮点运算性能测试对比
coremark移植到STM32F769I-DISCO开发板的两种方法
【GUI板免费申请活动】【圣诞GUI】使用F746-DISO基于TouchGFX的圣诞树
刘氓兔的杂谈【001】-片上USB 高速PHY
【合集】STM32F7教程、资料大集合
基于STM32F746G-Discover的扩展电路板
F769 Discovery实现播放U盘音乐的播放器